joschka
I'm new here

Url zu PageRef oder Medium bestimmen

Hallo Community,

folgendes Szenario:

  • FirstSpirit 5 als CMS
  • Liferay als Portal (mit LifeSpirit Konnektor)
  • Google Search Appliance (mit FirstSpirit GSA Konnektor)

Seiten aus FirstSpirit müssen über den GSA Konnektor gefeedet werden. Die Standard display URL, welche durch den Konnektor erzeugt wird, ist nicht verwendbar, da für Liferay eine spezielle shortUrl berechent werden muss (abhängig ob PageRef oder Media).

Angedachte Lösung:

Bei der Freigabe wird die shortUrl in einem Skript individuell für die Seiten berechnet und gesetzt.

Problem:

Im Ausgabekanal wird die shortUrl über $CMS_SET(shortUrl,ref(#global.node).url)$ gesetzt.

Wie kann ich innerhalb eines Skripts diese Funktionalität nachbauen.

Die Methode getStoredUrl() liefert bei mir null. (siehe auch hier https://community.e-spirit.com/message/12342#12342)

Die Methode getUrl() liefert leider kein Ergebnis, da sie mit der Fehlermeldung

de.espirit.firstspirit.access.script.ExecutionException: Class or variable not found: GenerateTaskExecutor.CONTEXT_KEY_URLCREATOR


abbricht (siehe auch hier https://community.e-spirit.com/message/12297#12297). Der Import der Klasse ist vorhanden (
import de.espirit.firstspirit.server.scheduler.GenerateTaskExecutor)

Problem scheint zu sein, dass ich den URLCreator über (UrlCreator) context.getProperty(GenerateTaskExecutor.CONTEXT_KEY_URLCREATOR); erzeuge. Geht dies auch irgendwie anders?

Schon mal besten Dank für jegliche Unterstützung.

Joachim

0 Kudos
3 Replies
broszeit
I'm new here

Hallo Joachim,

es ist merkwürdig, dass die Methode über context.getProperty() nicht funktioniert.

Mir fallen nur 2 Möglichkeiten ein, woran es liegen könnte:

1) Die Methode muss serverseitig, also in einem Auftrag, ausgeführt werden. Wenn einfach ein clientseitiges Skript aufgeführt wird, ist die Klasse GenerateTaskExecutor nicht vorhanden.

2) Vorher muss ein Generierungstask ausgeführt worden sein. Damit dieses context-Property gesetzt ist.

Zu beachten ist allerdings, dass die Klasse "GenerateTaskExecutor" nicht in der freigegebenen API ist.

Über getStoredUrl() sollte es so funktionieren, wie im von dir verlinkten Beitrag.

Hier muss darauf geachtet werden, dass die Elemente, zu denen die URL geholt werden soll, vorher bereits einmal mit einem SEO-UrlCreator generiert wurden. Anschließend sollte die Methode getStoredUrl() die gespeicherte URL entsprechend zurückliefern.

Viele Grüße

Rouven

Hallo Joachim,

konnte Rouvens Antwort dein Problem bereits lösen oder benötigst Du noch weitere Hilfe?

Viele Grüße

Michaela

0 Kudos

Hallo Michaela,

wir berechnen die URL jetzt komplett selbst auf eine andere Weise.

Anmerkungen zu den genannten Punkten:

zu 1. Habe ich im Detail dann nicht verifiziert. Wir haben das Skript aber wirklich clientseitig ausgeführt, insofern könnte dies das Problem gewesen sein.

Was die Methode getStoredUrl anbelangt: Der SEO URLCreator wird bei uns nicht extra verwendet, desahalb war das auch kein praktikabler Lösungsansatz.

Danke und Gruß

Joachim

0 Kudos