So ersetzen Sie Text-Platzhalter durch die gewünschten Texte
15. Februar 2011
text platzhalter replace ersetzen textbaustein
Dieser Artikel beschreibt, wie Sie Textplatzhalter einsetzen können und zeigt diverse Einsatzmöglichkeiten auf.
Erleichtern Sie sich die Arbeit mit (Sprach-)Texten durch den Einsatz von Text-Platzhaltern. Das WSL-Tag "replaceTexts" ersetzt Ihnen innerhalb des eingelesenen Inhaltes die Text-Platzhalter durch die Texte aus den angegebenen Textbausteinen.
Nachfolgend ein paar Anwendungsbeispiele, die das veranschaulichen.
Beispiel 1: Benennung der Strukturelemente in Textbausteinen auslagern
Um den Namen eines Mastertemplate-Elementes bei mehrsprachigen Projekten global abzulegen, greifen Sie für den Wert des name-Attributes auf Textbausteine zu.
Hierzu umschliessen Sie das WSL-Tag zum Includieren der Mastertemplate-Elemente mit dem WSL-Tag zum Ersetzen von Text-Platzhaltern. Im path-Attribut geben Sie den Pfad zur Text-Datei an, die die Textbausteine enthält.
Innerhalb einer entsprechenden Mastertemplate-Elemente-Datei (z.B.: text.wysiwyg.wItemMastertemplate.php) tragen Sie als Wert des name-Attributes den Text-Platzhalter ein. Zur Definition des Text-Platzhalters lesen Sie bitte die WSL-Tagreferenz zu "replaceTexts".
Beispiel: Auszug aus standard.wMastertemplate.php mit Ersetzen von Text-Platzhaltern
... <wslMastertemplate:replaceTexts path="/[IHR-LAYOUT-PROJEKT]/wGlobal/content/texts/de.editor.wTexts.php"> <wslMastertemplate:templatesIncludeGroupItemsProject project="/[IHR-LAYOUT-PROJEKT]" orderBy="/wd:extension/wd:meta/wd:sorting/@value"/> </wslMastertemplate:replaceTexts> ...
Beispiel: Auszug aus text.wysiwyg.wItemMastertemplate.php mit Text-Platzhalter
...
<wd:item name="TEXT[item_fliesstext]" en:name="TEXT[item_fliesstext]" icon="/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/images/element-icons/element_text.gif" type="text.wysiwyg">
<wd:fragment id="title" type="char.text"/>
<wd:fragment id="display" type="char.display"/>
<wd:fragment id="text" type="text.standard"><![CDATA[<p>Lorem ipsum ...</p>]]></wd:fragment>
</wd:item>
...Beispiel: Auszug aus de.editor.wTexts.php aus dem globalen Projekt
... <?php $version="1.0"; $encoding="UTF-8"; ?> <?php exit; ?> <wTexts version="5.0"> ... <text key="item_fliesstext">Fliesstext</text> ... </wTexts> ...
Beispiel 2: Text-Platzhalter in Textfeldern ersetzen
Um häufig verwendete Texte in Textfeldern nicht jedes Mal erneut eingeben zu müssen, können Sie ebenso auf das WSL-Tag "replaceTexts" zurückgreifen.
Das folgende Beispiel zeigt Ihnen, wie Sie für Textfelder einen Platzhalter in der Ausgabe ersetzen lassen können. Geben Sie z.B. ".... das neue TEXT[t_grid] setzt neue Maßstäbe ..." im Textfeld ein, so wird dies in der Ausgabe entsprechend umgesetzt:
"... das neue Weblication® CMS Grid 5.x setzt neue Maßstäbe ..."
Beispiel: Auszug aus text.wysiwyg.wItem.php mit Ersetzen von Text-Platzhaltern
... <xsl:template match="wd:item[@type = 'text.wysiwyg']"> <xsl:choose> <xsl:when test="$wIsInEditor and @wEditorId"> <!-- web:item:start name="Fliesstext" display="user" pathEditMastertemplate="/[IHR-LAYOUT-PROJEKT]/wGlobal/mastertemplates/items/text.wysiwyg.wItemMastertemplate.php" pathEditXslt="/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/templates/items/text.wysiwyg.wItem.php" type="text.wysiwyg"--> <div class="elementText"> <xsl:variable name="openClipboardDialogOnPaste"><xsl:choose><xsl:when test="php:functionString('wVariables::getValue', 'open_clipboard_dialog_on_paste', '/spinGlobal') = 'yes'">1</xsl:when><xsl:otherwise>0</xsl:otherwise></xsl:choose></xsl:variable> <!--web:text:start openClipboardDialogOnPaste="<xsl:value-of select="$openClipboardDialogOnPaste" />" pasteFilter="deleteFontFormatsOnly" autoFilter="deleteStyleAttributes" wysiwygFunctions="" editor="wysiwyg" inputStyle=""--><xsl:value-of disable-output-escaping="yes" select="wd:fragment[@id = 'text']"/><!--web:text:stop--> </div> <!-- web:item:stop --> </xsl:when> <xsl:otherwise> <div class="elementText"> <wsl:replaceTexts path="/[IHR-LAYOUT-PROJEKT]/wGlobal/content/texts/de.wTexts.php"><xsl:value-of disable-output-escaping="yes" select="wd:fragment[@id = 'text']"/></wsl:replaceTexts> </div> </xsl:otherwise> </xsl:choose> </xsl:template> ...
Beispiel: Auszug aus de.wTexts.php aus dem globalen Projekt
... <?php $version="1.0"; $encoding="UTF-8"; ?> <?php exit; ?> <wTexts version="5.0"> ... <text key="t_grid">Weblication® CMS Grid 5.x</text> ... </wTexts> ...
Weiterführende Links
- Wozu dienen Textplatzhalter und wofür ist das WSL-Tag "replaceTexts" gedacht?
- Textplatzhalter helfen dabei, (Sprach-)Texte zu standardisieren und bei der Ausgabe automatisch zu ersetzen. Das WSL-Tag "*replaceTexts*" ersetzt dabei innerhalb des eingelesenen Inhalts Text-Platzhalter durch die Texte aus den angegebenen Textbausteinen.
- Wie funktioniert "replaceTexts" grundsätzlich?
- Sie verwenden das WSL-Tag "*replaceTexts*" und übergeben im *path*-Attribut den Pfad zu einer Textdatei, die die Textbausteine enthält. Innerhalb des entsprechenden Inhalts werden dann die Platzhalter durch die passenden Texte aus dieser Datei ersetzt.
- Wie kann ich in Mastertemplate-Elementen den Namen (z. B. für mehrsprachige Projekte) aus Textbausteinen auslagern?
- Für den Wert des *name*-Attributes können Sie auf Textbausteine zugreifen: Sie umschließen das WSL-Tag zum Einbinden der Mastertemplate-Elemente mit dem WSL-Tag zum Ersetzen von Text-Platzhaltern. Im *path*-Attribut geben Sie den Pfad zur Textdatei an, die die Textbausteine enthält (Beispiel: Datei im globalen Projekt unterhalb von *wGlobal/content/texts/*).
- Wie definiere ich einen Textplatzhalter für ein Mastertemplate-Element?
- In der Mastertemplate-Element-Datei tragen Sie als Wert des *name*-Attributes den Textplatzhalter ein. Zur genauen Definition des Platzhalters wird auf die WSL-Tagreferenz zu "*replaceTexts*" verwiesen.
- Welche Dateien werden in den Beispielen für das Ersetzen von Textplatzhaltern verwendet?
- In den Beispielen werden Textbausteine aus Dateien wie "de.editor.wTexts.php" bzw. "de.wTexts.php" verwendet. Die *path*-Angabe verweist dabei auf den jeweiligen Pfad im Projekt, z. B. auf "/[IHR-LAYOUT-PROJEKT]/wGlobal/content/texts/de.wTexts.php".
- Wie ersetze ich Textplatzhalter in Textfeldern, ohne den Text jedes Mal neu einzugeben?
- Sie können im Textfeld einen Platzhalter verwenden und "replaceTexts" dafür nutzen, dass die Ausgabe den Platzhalter durch den im Textbaustein hinterlegten Text ersetzt. Im Beispiel wird ein Text so formuliert, dass der Platzhalter *TEXT[t_grid]* in der Ausgabe zu "Weblication® CMS Grid 5.x" wird.
- Wo wird "replaceTexts" im Beispiel für Textfelder eingesetzt?
- Im XSLT-Beispiel für ein Text-Element ("text.wysiwyg") wird im nicht-Editor-Fall das WSL-Tag "wsl:replaceTexts" mit einer *path*-Angabe aufgerufen. Diese *path* zeigt auf die Textdatei im globalen Projekt, aus der die Platzhalter dann in der Ausgabe ersetzt werden.
- Wie stelle ich sicher, dass im Editor der Platzhalter nicht ersetzt wird, sondern erst in der Ausgabe?
- Im Beispiel wird zwischen Editor- und Nicht-Editor-Kontext unterschieden: Im Editor wird der Textfragment-Inhalt per XSLT direkt ausgegeben (ohne "replaceTexts"), und nur im anderen Fall wird "wsl:replaceTexts" verwendet, um die Platzhalter zu ersetzen.