Search the FirstSpirit Knowledge Base
Hallo,
ich habe folgendes Anliegen:
In einem Projekt (Master) gibt es ein Inhaltspaket das ein anderes Projekt (Client) abonniert.
Jetzt möchte ich anhand einer abbonierten section im Client herausfinden, welche ID die original Section im Master hat.
Ist das über die API möglich? Wie?
P.S.
FS Version 4.2.437
Das Package ist veränderbar.
Vielen Dank und Gruß,
Pascal
Hallo nochmal,
ich bin bei meinen Gehversuchen auf die getStartNodes Methode der Klasse Package gestoßen:
Collection<IDProvider>
getStartNodes()
Returns a read-only List of StoreElement
's of start nodes existing in this package.
Was ist hier mit "start nodes" gemeint? Bekomme ich so die Liste aller StoreElement die zu dem Paket gehören?
Außerdem habe ich im Log folgenden gefunden:
ERROR 01.09.2011 16:59:18.347 (de.espirit.firstspirit.service.ppool.PPoolLoggerImpl): could not find mapped target element with id=35178 for source id=35142 in store pagestore
Das bedeutet ja, dass es irgendwo ein Mapping zwischen target-ID und source-ID geben muss. Kann ich das über die API nutzen?
Viel Grüße,
Pascal
Hallo, über Collection getStartNodes() bekommt man in der Tat alle Knoten die zum Paket gehören. Wenn man über diese Liste iteriert, kann man für den gewünschten Knoten über getId() die Id im Master auslesen. Viele Grüße Jörg Stephan
Vielen Dank für die Antwort,
aber die ID aller Original-Sections ist ja nur die halbe Miete.
Wenn z.B. eine Section A abonniert ist, und ich will nun die ID genau dueser Section im Master bekommen, benötige ich ja das Mapping von target auf source ID. Oder habe ich etwas übersehen?
Viele Grüße,
Pascal
Das Mapping steht indirekt im Paket das die abbonierte Seite enthält. Wenn man über die Knoten des Pakets iteriert und einen Knoten mit dem Namen des aktuellen Ziel-Knotens findet, so hat man eigentlich schon den Knoten im Master gefunden inkl. ID. Da der Name der Section nicht eindeutig ist, sollte man dann zusätzlich noch am besten den Referenznamen der Seiten vergleichen. Eine Methode á la getMasterNode() oder getMasterNodeId() gibt es leider nicht.
Viele Grüße Jörg Stephan
Hallo,
wenn ich das richtig verstanden habe soll ich folgendermaßen vorgehen:
Eine abonnierte Seite (oder Section) im Target-Projekt auswählen.
Dann über den PackageManager das zu der abonnierten Seite gehörende Paket holen und über die Knoten iterieren bis ich einen Knoten gefunden habe, der den gleichen Namen hat wie mein ausgewähltes Storeelement...
Das wird leider nur funktionieren, wenn der Referenzname des abonnierten Objektes der gleiche ist wie der des Master-Objektes. Leider kann man davon nicht unbedingt ausgehen.
Ich werde das aber mal testen.
Viele Grüße,
Pascal
P.S.
Mitlerweile habe ich gelernt, das es eine "subscriptions.xml"-Datei pro Server gibt, die genau die Informationen beinhaltet, die ich benötige. Falls es keine Zugriffsmöglichkeiten über die API gibt, bleibt mir noch die Möglichkeit direkt auf diese Datei zuzugreifen.