daniel_philippi
Occasional Collector

Generischen Link ausgeben

Hallo Zusammen.

Wie kann ich das Linkziel eines generischen Link ausgeben.

Meine Versuche mit:

$CMS_REF(st_link)$

$CMS_VALUE(ref(st_link).url)$

wie ich es von bisherigen Links gewohnt war, sind fehlgeschlagen.

Was mich verwundert ist, dass ich über $CMS_VALUE(st_link.text)$ den Linktext ausgeben kann. In der Doku habe ich zur Ausgabe von generischen Links nichts gefunden.

Wie bekomme ich die Zieladresse?

Viele Grüße

0 Kudos
4 Replies
feddersen
Community Manager

Generische Links haben ein ganz normales Formular, in dem die bekannten Eingabekomponenten verwendet werden können. Die Ausgabe erfolgt also wie bei der jeweiligen Eingabekomponente angegeben. Wenn Sie eine konkrete Frage zu einer Eingabekomponente haben, sollten Sie die Definition ihres Formulars im Beitrag mit angeben.

0 Kudos

Hallo.

Hier der Link in der Absatzvorlage:

  <CMS_INPUT_LINK name="st_link" hFill="yes" useLanguages="yes">

    <LANGINFOS>

      <LANGINFO lang="*" label="Link (optional)"/>

    </LANGINFOS>

    <LINKEDITORS>

      <LINKEDITOR name="link_internal"/>

    </LINKEDITORS>

  </CMS_INPUT_LINK>

Und hier die Linkvorlage:

  <FS_REFERENCE name="st_link" hFill="yes" useLanguages="no">

    <FILTER>

      <ALLOW type="pageref"/>

    </FILTER>

    <LANGINFOS>

      <LANGINFO lang="*" label="Link"/>

      <LANGINFO lang="DE" label="Zielseite"/>

    </LANGINFOS>

    <PROJECTS>

      <LOCAL name=".">

        <SOURCES>

          <FOLDER name="root" store="sitestore"/>

        </SOURCES>

      </LOCAL>

    </PROJECTS>

  </FS_REFERENCE>

  <CMS_INPUT_TEXT name="st_text" hFill="yes" singleLine="no" useLanguages="no">

    <LANGINFOS>

      <LANGINFO lang="*" label="Link text"/>

      <LANGINFO lang="DE" label="Linktext"/>

    </LANGINFOS>

  </CMS_INPUT_TEXT>

Die Ausgabe soll dann so erfolgen:

<a href="$CMS_REF(st_link)$">$CMS_VALUE(st_link.text)$</a>

Problem: Der Linktext wird ausgegenen, das Linkziel nicht.

0 Kudos

Zuerst fällt auf, dass sowohl die CMS_INPUT_LINK Komponente im Absatz als auch die FS_REFERENCE Komponente den gleichen Bezeichner haben "st_link". Ganz allgemein sollten sie solche Fälle vermeiden, weil sie so in der Linkvorlage nicht mehr auf die Komponente aus dem Absatz zugreifen können. Best practice ist in den Linkvorlagen den Prefix "lt_" zu verwenden und nicht "st_", wie in Absätzen.

Die Linkvorlage sollte also wie folgt aussehen.

Formular:

<FS_REFERENCE name="lt_link" hFill="yes" useLanguages="no">

    <FILTER>

      <ALLOW type="pageref"/>

    </FILTER>

    <LANGINFOS>

      <LANGINFO lang="*" label="Link"/>

      <LANGINFO lang="DE" label="Zielseite"/>

    </LANGINFOS>

    <PROJECTS>

      <LOCAL name=".">

        <SOURCES>

          <FOLDER name="root" store="sitestore"/>

        </SOURCES>

      </LOCAL>

    </PROJECTS>

  </FS_REFERENCE>

  <CMS_INPUT_TEXT name="lt_text" hFill="yes" singleLine="no" useLanguages="no">

    <LANGINFOS>

      <LANGINFO lang="*" label="Link text"/>

      <LANGINFO lang="DE" label="Linktext"/>

    </LANGINFOS>

  </CMS_INPUT_TEXT>

Html:

<a href="$CMS_REF(lt_link)$">$CMS_VALUE(lt_text)$</a>

0 Kudos

Ich denke, das Template-Fragment von Daniel war aus dem Absatz- bzw. Seitentemplate.

Dort müsste das (bei unveränderten Variablennamen) so lauten:

<a href="$CMS_REF(st_link.st_link)$">$CMS_VALUE(st_link.st_text)$</a>

Allerdings sollte auch im Absatz-/Seitentempalte auch ein einfache $CMS_VALUE(st_link)$ reichen, wenn das Link-Template wie folgt aussieht:

<a href="$CMS_REF(st_link)$">$CMS_VALUE(st_text)$</a>

Das ist eigentlich das Verfahren, wie es gedacht ist. Bei Daniels Lösung könnte man in der Link-Komponente keine weiteren Link-Typen zulassen bzw. müsste in die Ausgabe eine Fallunterscheidung bauen.

Peter
0 Kudos