mreinhardt
I'm new here

Seiteninternes Inhaltsverzeichnis

Jump to solution

Ich hab eine neue Absatzvorlage "Inhaltsverzeichnis" angelegt:

<CMS_MODULE>

  <CMS_INPUT_SECTIONLIST name="st_contentSections">

    <LANGINFOS>

      <LANGINFO lang="*" label="Inhaltsverzeichnis der Seite" description="Erstellt ein Inhaltsverzeichnis der ausgewählten Absätze."/>

    </LANGINFOS>

  </CMS_INPUT_SECTIONLIST>

</CMS_MODULE>

HTML-Kanal:

<CMS_HEADER>

</CMS_HEADER>

$CMS_IF(!st_contentSections.isEmpty)$

<div>

  <ul>

  $CMS_FOR(section,st_contentSections)$

              <li><a href="#$CMS_VALUE(section.anchorName)$">$CMS_VALUE(section.text)$</a></li>

  $CMS_END_FOR$

  </ul>

</div>

$CMS_END_IF$

Nun hab ich zwar eine Aufstellung aller Absätze der Seite, aber der Anchor-Name ist nicht gesetzt. Jetzt muss ich ja noch den Anchor in meinem Absatztemplate einbinden (in einer anderen Vorlage, meiner Standardabsatzvorlage). Wie greife ich beim einzelnen Absatz auf den anchorName zu?

Das funktioniert leider nicht

<a name="$CMS_VALUE(#link.section)$"/>

1 Solution

Accepted Solutions
hoebbel
Crownpeak employee

Hallo,

die einfachste Lösung ist es, auf der Karteikarte Eigenschaften der entsprechenden Absatzvorlage in der Tabelle Dateiendung für den entsprechenden Ausgabekanal den Haken in der Spalte "<a> Tag" zu setzen.

Das erzeugt vor dem Anfang der Ausgabe des Absatzes folgenden Tag:

<a id="[Absatzreferenzname]" name="[Absatzreferenzname]"></a>

Wenn man statt dessen den Tag selber erzeugen will, so würde der Quelltext für exekt den selben Tag so aussehen:

<a id="$CMS_VALUE(#global.section.name)$" name="$CMS_VALUE(#global.section.name)$"></a>

Anmerkung: Wenn im Referenznamen des Absatzes ein Leerzeichen vorhanden ist [über redaktionelle Bearbeitung in alten Versionen oder per Skript erzeugt], so wird dieses bei der automatischen Ausgabe in einen Unterstrich umgewandelt. Dies soltle man gegebenenfalls bei der manuellen Ausgabe beachten (z.B. mittels $CMS_VALUE(#global.section.name.replaceAll(" ","_"))$)

Viele Grüsse aus Dortmund,

  Holger

View solution in original post

0 Kudos
2 Replies
C_Klingbeil
I'm new here

Hallo Herr Reinhardt,

wenn ich Sie richtig verstanden habe, dann müssen Sie in Ihrer Absatz-Vorlage nur in dem Tab Eigenschaften das Häkchen bei "<a> Tag" (neben der Ziel Extension) setzen. Das generiert dann automatisch die Absatz-Anker.

Viele Grüße,

C. Klingbeil

hoebbel
Crownpeak employee

Hallo,

die einfachste Lösung ist es, auf der Karteikarte Eigenschaften der entsprechenden Absatzvorlage in der Tabelle Dateiendung für den entsprechenden Ausgabekanal den Haken in der Spalte "<a> Tag" zu setzen.

Das erzeugt vor dem Anfang der Ausgabe des Absatzes folgenden Tag:

<a id="[Absatzreferenzname]" name="[Absatzreferenzname]"></a>

Wenn man statt dessen den Tag selber erzeugen will, so würde der Quelltext für exekt den selben Tag so aussehen:

<a id="$CMS_VALUE(#global.section.name)$" name="$CMS_VALUE(#global.section.name)$"></a>

Anmerkung: Wenn im Referenznamen des Absatzes ein Leerzeichen vorhanden ist [über redaktionelle Bearbeitung in alten Versionen oder per Skript erzeugt], so wird dieses bei der automatischen Ausgabe in einen Unterstrich umgewandelt. Dies soltle man gegebenenfalls bei der manuellen Ausgabe beachten (z.B. mittels $CMS_VALUE(#global.section.name.replaceAll(" ","_"))$)

Viele Grüsse aus Dortmund,

  Holger

0 Kudos