christian_vogel
Returning Observer

FS5 UrlFactory vs. FS4.2 UrlCreator - Grundsätzliche Frage

Jump to solution

Hallo,

ich bin gerade dabei meine erste UrlFactory zu implementieren. Mit dem UrlCreator haben wir bereits Erfahrung.

Ich möchte die generierte Url verändern aber den Pfad im Dateisystem nicht ändern.

Beim UrlCreator gibt es die Methoden getUrl(...) und getFilename(...) um genau solche Unterschiede zu ermöglichen.

Wie stelle ich so etwas mit der UrlFactory an?

Ich vermute, dass ich mit der UrlFactory mein Ziel nicht erreichen kann.

Der Pfad im Dateisystem soll ganz normal generiert werden, z.B.: 

  • /de/startseite/index.html
  • /de/presse/pressemitteilungenn/uebersicht.html

Ein Link zu den Seiten soll allerdings in Abhängigkeit von eingestellten Metadaten/Inhalten auf der Link-Zielseite nach bestimmten Regeln generiert werden, z.B.:

  • /de/startseite/index.html
  • aber: [platzhalter]/de/presse/pressemitteilungen/uebersicht.html

Der geplante Platzhalter wird zur Auslieferungszeit der HTML Seite von einem Frontcontroller dynamisch Benutzerabhängig ersetzt. Wir brauchen URLs, die vom Server über einen URL-Filter ausgewertet werden können und dann kann dynamisch entschieden werden, welche Seite aus dem Dateisystem ausgeliefert wird.

Kann ich weiterhin den UrlCreator verwenden? Das Interface ist als Deprecated markiert.

Grüße

Christian Vogel

1 Solution

Accepted Solutions
Peter_Jodeleit
Crownpeak employee

Ich vermute, dass ich mit der UrlFactory mein Ziel nicht erreichen kann.

Das ist korrekt, der Augenmerk lag da auf "Einfachheit des Interfaces". Allerdings sind die Mechanismen dafür intern schon vorbereitet, nur nicht über die API erreichbar.

Kann ich weiterhin den UrlCreator verwenden? Das Interface ist als Deprecated markiert.

Ja, das ist aktuell möglich. Allerdings kann es sein, das dies in zukünftigen Versionen nicht mehr der Fall ist (auch wenn es da keine konkreten Planungen zu gibt).

Daher würde ich vorschlagen, das du einen Feature-Request dazu einstellst.

Peter

View solution in original post

0 Kudos
7 Replies
Peter_Jodeleit
Crownpeak employee

Ich vermute, dass ich mit der UrlFactory mein Ziel nicht erreichen kann.

Das ist korrekt, der Augenmerk lag da auf "Einfachheit des Interfaces". Allerdings sind die Mechanismen dafür intern schon vorbereitet, nur nicht über die API erreichbar.

Kann ich weiterhin den UrlCreator verwenden? Das Interface ist als Deprecated markiert.

Ja, das ist aktuell möglich. Allerdings kann es sein, das dies in zukünftigen Versionen nicht mehr der Fall ist (auch wenn es da keine konkreten Planungen zu gibt).

Daher würde ich vorschlagen, das du einen Feature-Request dazu einstellst.

Peter
0 Kudos

Dankeschön, ich habe einen FeatureRequest erstellt.

https://community.e-spirit.com/ideas/1312

Grüße

Christian

0 Kudos

Ich bin gerade dabei, den FR in unser internes System überführen. Kannst du nochmal den fachlichen Anwendungsfall erläutern? Geht es um Rechte?

Peter
0 Kudos

Hallo Peter,

JEIN - wir sind nah dran an einer Personalisierung Smiley Happy

Wir wollen aus einem Firstspirit Projekt nicht nur sprachabhängige Inhalte herausgenerieren, sondern auch noch landesabhängige Inhalte. Die landesabhängigen Inhalte können auf Absatzebene in den Metadaten mit der FS-Permission Komponente gepflegt werden. D.h. ein Teaser oder Text/Bild Absatz kann in verschiedene Sprachen übersetzt werden und in den Metadaten für bestimmte Länder freigeschaltet werden.

Über einen Frontcontroller wird jeder Besucher der Webseite einem Landzugeordnet. Der amerikanische Besucher sieht dann die Webseite auf Englisch und Spanisch und bestimmte Teaser werden nur dem Amerikaner angezeigt. Der Brite sieht dieselbe Seite auf Englisch aber mit anderen Teasern.

Die Länderzuordnung ist der dynamische (personalisierte) Anteil der Webseite, den wir in der URL abbilden wollen. Firstspirit soll bei allen internen Links im HTML Code einen Platzhalter generieren, der zur Auslieferungszeit durch den Frontcontroller mit dem Land des Benutzers ersetzt wird.

Dieser Lokalisierungs Aspekt ist hier ganz gut beschrieben:

http://googlewebmastercentral.blogspot.de/2013/04/x-default-hreflang-for-international-pages.html

Wir haben vor alle generierten Seite über einen Frontcontroller auszuliefern. Im einfachsten Fall werden die Seiten direkt ausgeliefert, in manchen Fällen werden landesabhängig Inhalte ein- oder ausgeblendet (sozusagen personalisiert). Wir können aber auch ganze Anwendungen in solche vorgenerierten "Templates" integrieren.

Vereinfacht ausgedrückt möchten wir Folgendes:

Immer dann, wenn wir mit Firstspirit Views/Templates für eine dynamische Webapplikation vorgenerieren wollen, brauchen wir die Möglichkeit die generierten Urls getrennt von Verzeichnispfad zu beeinflussen, in dem die Views gespeichert werden.

Wir wollen eine Url generieren, die vom Frontcontroller entsprechend verstanden wird, aber nicht mit den Dateipfaden übereinstimmt. Sie kann sogar im Dateisystem ungültig sein.

Grüße

Christian

0 Kudos

Unsere interne ID zu dem Thema: #137071

Peter
0 Kudos
t_schrape
Occasional Observer

Hallo,

zu der Antwort:

Kann ich weiterhin den UrlCreator verwenden? Das Interface ist als Deprecated markiert.

Ja, das ist aktuell möglich. Allerdings kann es sein, das dies in zukünftigen Versionen nicht mehr der Fall ist (auch wenn es da keine konkreten Planungen zu gibt).

Wenn ich denn alten URLCreator (de.espirit.firstspirit.generate.URLCreator aus der DEV-API - nicht deprecated) in FS 5 nutzen möchte, wie bekomme ich den im Dialog der Aktion "Generierung" bei der Pfaderzeugung im Auftrag registriert.

Laut DEV-Doku:

<configuration>

                                         <UrlFactory>CustomUrlFactory</UrlFactory>

</configuration>

Hier ist keine Klasse vom URLCreator nicht mehr erlaubt.

Gibt weiterhin mit F5 die Möglichkeit eine Impl. der Schnittstelle URLCreator dort zu registrieren?

Viele Grüße, Torsten Schrape

0 Kudos

Hallo Herr Schrape,

in der module.xml habe ich folgendes eingetragen danach funktioniert der alte URLCreator wieder:

<public>

            <name>CustomUrlCreator</name>

            <description>Url-Module-Classes</description>

            <class>de.espirit.firstspirit.generate.UrlCreatorSpecification</class>

            <resources>

                <resource>lib/custom.jar</resource>

            </resources>

            <configuration>

                <LegacyClass>de.custom.core.url.CustomUrlCreator</LegacyClass>

                <UseRegistry>no</UseRegistry>

            </configuration>

        </public>

Die Klasse CustomUrlCreator ist vom "DefaultUrlCreator" abgeleitet.

Viele Grüße

Martin Dirlewanger