Questions & Answers

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

Type a product name