Search the FirstSpirit Knowledge Base
Hallo zusammen,
es geht um FS 5.0.510.
Wir nutzen eine URLFactory auf Basis der AdvancedUrlFactory.
Bei zwei Seitenreferenzen mit Content-Projektion mit der gleichen Abfrage steuern wir mittels bestimmter Kriterien, ob eine Seite generiert werden soll oder nicht (stopGenerate).
Daher kommt es vor, dass Seiten die gleiche URL bekommen - was in unserem Fall so sein soll!
Es scheint also so, dass die URL bei einen stopGenerate trotzdem vergeben wird - ist das richtig so?
Wenn ja, was können wir tun, um die URL freizugeben?
Die Persistenz können wir nicht abschalten, da wir SEO-/Kurz-URLs nutzen.
Danke für Eure Antworten!
Hi Ralph,
also die URL wird ja bereits vergeben und gespeichert, wenn das Element (bzw. die Seite in Verbindung mit der ContentId) von woanders nur referenziert ist. Dazu spielt es keine Rolle, ob die Seite später generiert wird oder per stopGenerate eben nicht generiert wird.
Wir hatten da mal ein ähnliches Problem: https://community.e-spirit.com/message/17392#17392
Die URLs kann man über Rechtsklick -> Extras -> Gespeicherte URLs zurücksetzen.
Ich glaube aber ohne persistenz könnte alles funktionieren, wie vorher auch. Die URLs werden davon ja an sich nicht beeinflusst (es sei denn Elemente heißen gleich). Man verliert halt durch die fehlende Persistenz die Möglichkeit seiten umzubenennen und dennoch die alten URLs zu behalten.
Schöne Grüße
Julius
Hi Ralph,
also die URL wird ja bereits vergeben und gespeichert, wenn das Element (bzw. die Seite in Verbindung mit der ContentId) von woanders nur referenziert ist. Dazu spielt es keine Rolle, ob die Seite später generiert wird oder per stopGenerate eben nicht generiert wird.
Wir hatten da mal ein ähnliches Problem: https://community.e-spirit.com/message/17392#17392
Die URLs kann man über Rechtsklick -> Extras -> Gespeicherte URLs zurücksetzen.
Ich glaube aber ohne persistenz könnte alles funktionieren, wie vorher auch. Die URLs werden davon ja an sich nicht beeinflusst (es sei denn Elemente heißen gleich). Man verliert halt durch die fehlende Persistenz die Möglichkeit seiten umzubenennen und dennoch die alten URLs zu behalten.
Schöne Grüße
Julius
Hi Julius,
danke für Deine Antwort.
ja, so scheint es sich leider zu bestätigen, dass die URL "weg" ist. Danke für den Link.
Wir hätten halt gerne zum Generierungszeitpunkt, dass die URL nicht vergeben bzw. "überschrieben" werden kann, daher bringt uns das nachträgliche Resetten nichts.
Gruß
Ralph
Hi Ralph,
ich fasse nochmal zusammen, damit ich euer Problem richtig verstehe:
Zwei Content-Projektionsseiten mit unterschiedlichen Abfragen. Aus den bereits gefilterten Entities soll jedoch nur ein Teil der Seiten generiert werden. Da nun zumindest für einen Teil der Entities von beiden Seiten URLs generiert werden, kann es passieren, dass einige Seiten also automatisch ein Suffix erhalten, z.B. so:
/name-of-entity.html (stopGenerate)/name-of-entity-2.html (kein stopGenerate)
Ist das richtig?
Vielleicht gibt es noch ein paar andere Lösungsansätze.
Könnt ihr die Abfrage so erweitern, dass wirklich nur die Datensätze zur Generierung herangezogen werden, die auch tatsächlich generiert werden sollen?
Alternativ würde ich die URLs per Skript während der Generierung zurücksetzen. Ihr könntet also im Generierungsauftrag ein Skript einbinden, was das vor Generierung der Seite erledigt. Oder evtl. auch in der Datenbankvorlage etwas in der Art einbauen:
$CMS_IF(#cs.isFirstContentRow)$
$CMS_RENDER(script:"reset_stored_urls", node:#global.node)$
$CMS_END_IF$
Ein Snippet, wie das per Skript funktioniert gibt es hier: https://community.e-spirit.com/message/15933
Eine weitere Option wäre einen eigenen URL-Creator zu implementieren. Das ist natürlich mehr Arbeit, aber man bleibt auch flexibler. Wir haben diesen Weg gewählt, als es noch keine SEO-URLs in FirstSpirit gab.
Schöne Grüße
Julius
Hallo Julius,
ohne es wirklich getestet zu haben: Die URL erst während der Generierung des Objektes selber zu löschen wird ggf. problematisch sein, da die URL ja auch schon bei der Generierung anderer Seiten, die auf diese verweisen erzeugt wird wie Du selbst schreibst.
Besser wäre es, ein der Generierung vorgelagertes Skript zu verwenden um diesen Fall zu behandeln - wenn man die entsprechenden Kriterien schon vorher auswerten kann. Man kann die storedUrl ja auch per API setzen.
Vielleicht wäre aber die Verwendung von Dokumentengruppen eine Alternative, in die man dann alle entsprechenden Detailseiten legt und dann nicht mit einem stopGenerate sondern mit einem großen $CMS_IF$ zu arbeiten?
Viele Grüße
Michael
Hallo Julius, Hallo Herr Bergmann,
vielen Dank für die Ideen und Anregungen.
@Julius: Ja, wir können ganz genau festlegen, anhand einer Abfrage, welche Entities/Seiten generiert werden sollen und welche nicht - sodass keine URL doppelt vorkommt.
Einen URL-Creator haben wir implementiert (auf Basis des Advanced URL-Creators). Jedoch weiß ich gerade nicht, was uns der in dieser Situation bringen soll, ohne dass wir viel Logik an vielen Stellen verbauen müssten.
@Herr Bergmann: Danke für die Anregung mit der Dokumentengruppe. Wir schauen uns das mal an.
Viele Grüße
Ralph Kurz
Hallo,
stimmt, im Template selbst, sollte man die URLs wohl nicht resetten. Das mit dem Setzen der URL klingt interessant, das war mir so auch noch nicht bekannt.
@Ralph: Dann klingt das mit der Abfrage eigentlich am Sinnvollsten - oder ich verstehe den Ansatz mit der Dokumentgruppe noch nicht. Darüber kann man ja 'nur' den 'richtigen' Link zu den Seiten generieren. Wenn die URLs aber wie du sagst so oder so identisch sind, gibt es ja praktisch keinen Unterschied.
Außerdem muss ja die Seite selbst generiert werden, was unabhängig von der Dokumentengruppe ist und auch wieder das gleiche Problem erzeugt.
...oder ich fasse da jetzt was falsch auf. :smileyconfused:
Aber im Endeffekt auch nicht so schlimm, solange ihr es richtig versteht.
Schöne Grüße
Julius
Hallo Ralph,
benötigst Du noch weitere Hilfe oder haben Dir die gegebenen Antworten bereits geholfen? In diesem Fall wäre es super, wenn Du die "richtige Antwort" entsprechend markierst, damit auch andere Community-Teilnehmer diese auf den ersten Blick finden. Solltest Du zwischenzeitlich eine eigene Lösung gefunden haben, wäre es nett, wenn Du diese hier bereitstellst.
Viele Grüße
Tim
Hallo Tim
die Frage, ob eine URL vergeben wird, ist beantwortet und habe sie entsprechend markiert.
Eine Lösung habe ich noch nicht nachbauen können.
Danke für die Antworten an Julius und Herrn Bergmann!