Linkliste aus logos und Links automatisch erstellen

Django, Flask, Bottle, WSGI, CGI…
Antworten
tt
User
Beiträge: 11
Registriert: Freitag 8. September 2006, 09:31

Hallo zusammen,

ich bin schon wieder auf ein kleines Problem gestoßen. Es ist wahrscheinlich recht einfach zu lösen, aber mir fehlt leider noch das Wissen dazu :(.

Die Idee ist ein Portlet zu erstellen, daß eine Liste mit befreundeten Internetseiten erzeugt. Dabei sollen nur die Logos der entsprechenden Seiten in der Liste auftauchen. Ein Klick auf ein Logo soll dann zur entsprechenden Seite führen.
Die Liste soll dabei automatisch erzeugt werden. Ich habe mir das so gedacht, daß ich einen Ordner mit Links und einen mit Logos habe. Je ein Link und ein Logo haben den selben Namen wenn sie zusammengehören. Das Portlet liest also aus dem Link-Ordner in einer Schleife die vorhandenen Links aus und läd anschließend aus dem Logo ordner das passende Logo. Dann wird alles zusammengebaut.
Mein Problem ist ich weiß nicht wie ich an die url des link objektes rankomme. genau so verhält es sich mit dem Namen der Links und Logos. In der Schleife verwende ich contentIds(), das gibt mir aber nur die ID...

Das ganze sieht ungefähr so aus (und funktioniert nicht):

Code: Alles auswählen

<a href="" tal:repeat="link_to python: portal.partner.hilfreichelinks.links.contentIds()" tal:replace="link_to">
<img src="" tal:replace="structure portal/partner/hilfreichelinks/logo/link_to/url" /> 
</a>
Danke schon mal für die Hilfe!
Gruß
TT
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

tt hat geschrieben:Mein Problem ist ich weiß nicht wie ich an die url des link objektes rankomme.
Hi TT!

1.) Um die Attribute eines Objektes herauszubekommen, verwende ich zdir2. http://gerold.bcom.at/zope_plone/zope_a ... /zope_dir/

2.) Logik in Python-Scripte
get_links.py:

Code: Alles auswählen

retlist = []
for link in container.partner.hilfreichelinks.objectValues("ATLink"):
    link_id = link.getId()
    logo_id = link_id + ".jpg"
    logo = getattr(container.partner.hilfreichelinks.logos, logo_id, None)
    if logo:
        logo_url = logo.absolute_url()
    else:
        logo_url = None
    retlist.append(
        {
            "id": link_id,
            "title": link.Title(),
            "remote_url": link.getRemoteUrl(),
            "logo_url": logo_url
        }
    )

return retlist
3.) und wenig Logik in die Seitenvorlagen.

Code: Alles auswählen

  <!-- Link-Block BEGIN -->
  <p tal:repeat="link container/get_links">
    <a tal:condition="link/logo_url"
       tal:attributes="href link/remote_url"
       target="_blank"
    ><img tal:attributes="src link/logo_url" /></a>
    <a tal:attributes="href link/remote_url"
       tal:content="link/title"
       target="_blank"
    />
  </p>
  <!-- Link-Block END -->
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
tt
User
Beiträge: 11
Registriert: Freitag 8. September 2006, 09:31

Danke erst mal, das schein genau der Tip zu sein den ich brauchte. :D Leider hatte ich das Wochenende ein paar Probleme mit dem Internet, habe also erst jetzt deine Anwort gelesen. Werde sie aber gleich mal ausprobieren!
Der Tip mit dir() bzw zdir() kann ich leider nicht berücksichtigen, da die Methode, wenn benutzt, auch von unangemeldeten Benutzern eingesetzt werden müsste. Das Sicherheitsrisiko ist zu groß, da muss ich dann auf Scripte zurückgreifen, aber das wird schon gehen. Danke jedenfalls!
Antworten