News nur aus aktuellen Ordners anzeigen

  • Hallo,

    erstmal die Infos zu meinem System:
    * Plone 3.0.4
    * CMF-2.1.0
    * Zope (Zope 2.10.5-final, python 2.4.4, win32)
    * Python 2.4.4 (#71, Oct 18 2006, 08:34:43) [MSC v.1310 32 bit (Intel)]
    * PIL 1.1.6

    ich habe nun folgende Frage:
    soweit ich das verstanden habe nutzt das Standard news Portlet den portal_catalog um alle news anzuzeigen (egal wo sie liegen)

    Ich möchte nun folgendes Verhalten erreichen:
    wenn ich in Unterordner1 bin sollen nur die news angezeigt werden die im gleichen Pfad liegen (also Unterordner1/news1, Unterordner1/news2, aber NICHT Unterordner1/Ordner/news1 und NICHT /news1)

    Ich habe hier im Forum diese Lösung gefunden, diese funktioniert aber nur eingeschränkt (das skript läd alle news aus allen unterordnern des aktuellen Ordners, aber nur wenn ich in der view "ordner/folder_contents" bin.
    Dieses Skript läuft angeblich in Plone2 einwandfrei.
    https://www.forum-hilfe.de/viewtopic.php?…e390f490a70bb7f

    ich danke schonmal im Voraus

    mfg

  • DU benötigst eine angepasste Katalogsuche die bei der Suche über 'path' den Namen den Pfad des aktuellen Ordners verwendet und zusätzlich 'level'=1
    übergibt. Damit wird die Suche auf den aktuellen Ordner ohne Unterordner eingeschränkt.

    Der zitierte Verweis auf die Plone 2 Modifikation ist murks.

  • erstmal danke für die schnelle Antwort.
    Toll wäre wenn du deinen Vorschlag in das unten stehende Codefragment einfügen würdest

  • Meine Antwort enthält alle Infos, um den Code selbst anzupassen. Lies bitte genau und schau Dir den Code mal *selbst* genau an. Immer nur Code kopieren ohne zu verstehen was man eigentlich macht ist auch keinte gute Lösung.

  • Zitat von ajung

    Meine Antwort enthält alle Infos, um den Code selbst anzupassen. Lies bitte genau und schau Dir den Code mal *selbst* genau an. Immer nur Code kopieren ohne zu verstehen was man eigentlich macht ist auch keinte gute Lösung.

    ok, ich habe folgendes verstanden:
    Der Katalog bekommt Werte übergeben, wie / wo / was er suchen soll
    level='1' bewirkt das nicht in unterordnern oder übergeordneten ordnern gesucht wird
    path wird mit einer python anweisung gefüllt die den aktuellen pfad erzeugt.
    da diese anweisung anscheinend einen Fehler enthält, müste ich wissen, wie man in einem portlet korrekt den richtigen aktuellen Pfad(url) erzeugen kann

  • Die Objekte im Katalog werden über den Pfad in der ZODB indexiert.
    Jedes Objekt hat eine Methode getPhysicalPath(), die eine Liste der einzelnen Ordnernamen zurückliefert. Diese wertest Du aus und erzeugst aus der Liste von Namen den kompletten Pfad. Tipp: '/'.join(liste)

    Das muss genügen

  • hallo,

    das mit dem join funzt in meiner eclipse ide einwandfrei
    Probleme gibt es wenn ich es in meinen Portlet Code einfügen möchte

    mein Ansatz war eine Variable anzulegen (liste) wo dann nachher der zusammengesetzte Pfad drinsteht.
    Ausführen kann ich diesen Code in Plone nicht, es gibt eine Fehlermeldung
    <div metal:define-macro="portlet"
    tal:define="liste python:'/'.join(['polly','wants','some']); >
    </div>

    solangsam gehen meine Fragen in Richtung Newbie, das ist mir klar :D

  • "eine Fehlermeldung"? Welche? Die Fehlermeldung sagt Dir *bestimmt* was falsch ist. Das tal:define endet normalerweise damit wie es angefangen...mit einem doppelten Hochkomma.

  • Das letzte Problem hat sich erledigt, dafür habe ich ein neues:

    das ist mein aktueller Code,
    das level='1' scheint nicht die Auswirkung zu haben die ich möchte (er durchsucht den aktuellen ordner und alle unterordner, erwünschtes Verhalten war: nur aktueller ordner)

    danke übrigens

  • er durchsucht weiterhin alle unterordner nach news, trotz depth angabe.
    Könnte es sein, das noch andere Fehler in meinem skript existieren?
    Ich habe dieses skript im "ploneskins/custom" ordner abgelegt und als Classic Portlet hinzugefügt.
    Der Python Code sorgt nur dafür das jeweils das letzte Element im Pfad aus dem Suchpfad entfernt wird.

    mfg