Ergebnis 1 bis 2 von 2

Thema: Verlinkte Tags bei Artikeln

  1. #1
    Contao-Fan Avatar von deerwood
    Registriert seit
    24.11.2009.
    Ort
    Hamburg
    Beiträge
    344

    Standard Verlinkte Tags bei Artikeln

    Moin Helmut, alle,

    vielen Dank, Helmut, für Deine grandiose Erweiterung.

    Ich teste [tags] und [tags_articles] endlich einmal (in 2.10.4) und eigentlich funktioniert alles perfekt.

    Nun möchte ich gern in jedem Artikel die Tags des Artikels ausgeben, und zwar so verlinkt, dass ein Klick auf eins der Tags wieder zur Tagliste zurückführt (dieselbe Seite, die auch aus der Tag-Cloud heraus aufgerufen wird).

    Also genau so, wie in der Artikel-Liste von [tags_articles], wenn man die Option "Artikel-Auszeichnungen anzeigen" aktiviert. Auch genau so formatiert.

    So habe ich also nach einem passenden Inserttag gesucht.
    • {{tags_used}} ist nicht geeignet, weil es nur die URL Parameter auswertet und sich nicht um die Tags der Seite / des Artikels kümmert
    • {{tags_article::article_id}} ist der beste Kandidat, gibt aber nur eine schlichte Liste der Tags aus (die man dann selbst stylen muss)
    • {{tags_article_url::article_id}} fand ich zunächst vielversprechend ... aber sämtliche URLs verweisen dann ja immer auf die/den Seite/Artikel, die/der gerade angezeigt wird. Nicht sinnvoll auf einer Seite (und ich frage mich gerade, wo dies Inserttag wohl wirklich sinnvoll sein könnte).

    Ich mag etwas übersehen, aber ich fand kein passendes Inserttag für diesen Zweck.

    Deshalb habe ich 2 Templates (update sicher) angepasst, so dass das Template "tags_inserttag.*" weiterhin so funktioniert, wie von Dir geplant, aber andere Ausgaben erzeugt, falls erforderlich. Für das "falls erforderlich" habe ich lange gegrübelt: in Sub-Templates kann man ja nur auf die Variablen des aktuellen Templates zugreifen, aber nicht auf die Variablen der umschließenden Templates (was mich schon immer gestört hat). Deshalb habe ich "mod_article.html5" so angepasst, dass ich im $GLOBALS Array Alias und ID der aufzurufenden Seite setze und anschließend das Inserttag {{tags_article::*}} verwende:

    Code:
    --- mod_article.html-revBASE.svn001.tmp.html5    So 15. Jan 05:27:37 2012
    +++ templates/fixed_font/mod_article.html5    So 15. Jan 02:56:52 2012
    @@ -20,6 +20,11 @@
     <!-- indexer::continue -->
     <?php endif; ?>
     <?php echo $this->contentElements; ?>
    +<?php
    +// Alias und ID der Artikellisten-Zielseite setzen, damit im Template "tags_inserttag.*" generateFrontendUrl() aufgerufen werden kann 
    +$GLOBALS['MY_SETTINGS']['tags_target_page'] = array('id' => 31, 'alias' => 'liste');
    +?>
    +{{tags_article::<?php echo $this->id; ?>}}
     <?php if ($this->backlink): ?>
     
     <!-- indexer::stop -->
    Die Inserttags der [tags] Erweiterung verwenden allesamt das Template tags_inserttag.*, über das $GLOBALS Array wird nun der gesetzte Wert hereingereicht und kann dort ausgewertet werden:

    Code:
    --- tags_inserttag.html-revBASE.svn001.tmp.html5    Di 17. Jan 21:30:39 2012
    +++ templates/fixed_font/tags_inserttag.html5    Di 17. Jan 21:29:22 2012
    @@ -1,3 +1,13 @@
    +<?php if (is_array($GLOBALS['MY_SETTINGS']['tags_target_page'])): ?>
    +<ul class="tag-chain">
    +<?php foreach ($this->tags as $k => $tag): ?>
    +  <li class="tag-chain-item<?php if ($k == 0) { echo ' first'; } if ($k + 1 == count($this->tags)) { echo ' last'; } ?>">
    +  <?php $url = ampersand($this->generateFrontendUrl($GLOBALS['MY_SETTINGS']['tags_target_page'], '/tag/' . str_replace(' ', '+', $tag['tag']))); ?>
    +  <a href="<?php echo $url; ?>"><?php echo $tag['tag']; ?></a>
    +  </li>
    +<?php endforeach; ?>
    +</ul>
    +<?php else: ?>
     <ul class="tagged">
     <?php foreach ($this->tags as $tag): ?>
         <li><?php if (strlen($this->url)): ?><a href="<?php echo $this->url; ?>"><?php endif; ?><?php echo $tag['tag']; ?><?php if (strlen($this->url)): ?></a><?php endif; ?></li>
    @@ -2,2 +12,3 @@
     <?php endforeach; ?>
    -</ul>
    \ No newline at end of file
    +</ul>
    +<?php endif; ?>
    Meine Template-Anpassung gibt die Tagliste praktisch genauso aus, wie das Template taglist.*, aber nur, falls die globale Variable übergeben wurde.

    Ich fände es aber deutlich besser/einfacher, wenn [tags] ein entsprechendes Inserttag zur Verfügung stellen würde, das dann 2 dynamische Parameter akzeptieren müsste, etwa {{tags_article_url2::<article_id>::<target_page_id >}}.

    Was denkt Ihr?

    LG, Georg

    PS: wichtiger Hinweis: beim Testen NIEMALS das $GLOBALS Array komplett ausgeben!!! Es enthält an mehreren Stellen geheim zu haltende Daten, etwa den Zugang zur DB und, bei Safe Mode Hack, auch die FTP Zugangsdaten im Klartext!!! Schlägt eine Suchmaschine im Testmoment zu, dann sind diese Daten für immer im Internet publiziert. Ähnliches gilt natürlich auch für <?php $this->showTemplateVars(); ?>, oft harmlos, aber manchmal tauchen auch dort die geheimen Daten auf!

    PS2: Ihr könnt diese Anpassung eine kurze Zeitlang sehen unter http://georg-rehfeld.com/arabesques-...ulturtage.html

    Update: Code für tags_inserttags.html5 korrigiert: str_replace und ampersand hinzugefügt.
    Geändert von deerwood (17.01.2012 um 20:34 Uhr)

  2. #2
    Contao-Fan Avatar von Ripperz
    Registriert seit
    22.09.2012.
    Ort
    Hamburg
    Beiträge
    710

    Standard

    Hallo ich habe diesen Artikel gefunden. Weiß aber nicht so recht was zu tun ist um das Ergebniss zu erzielen. Kann mir einer kurz erklären was ich tun muss?

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •