Ergebnis 1 bis 9 von 9

Thema: Klassen im Artikellisten-Modul ausgeben

  1. #1
    Contao-Nutzer
    Registriert seit
    21.09.2016.
    Beiträge
    7

    Standard Klassen im Artikellisten-Modul ausgeben

    Hallo!

    Ich möchte das Artikellisten-Modul nutzen, um eine einfache One-Page-Navigation zu erstellen. Dazu würde ich gerne den Listenelementen im mod_article_list Template noch die Klasse der jeweiligen Artikel mitgeben. Leider enthält das $article[] Array anscheinend nur die ID und nicht die Klasse. Gibt es eine einfache Möglichkeit, um auch die Klasse auszugeben? Hier nochmal die konkrete Codezeile aus dem Template:

    HTML-Code:
    <li><a href="<?= $this->request ?>#<?= $article['id'] ?>" title="<?= $article['title'] ?>"><?= $article['link'] ?></a></li>
    und was ich gerne irgendwie erreichen würde:

    HTML-Code:
    <li class="<?= $article['class'] ?>"><a href="<?= $this->request ?>#<?= $article['id'] ?>" title="<?= $article['title'] ?>"><?= $article['link'] ?></a></li>
    Danke für die Hilfe!

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.063
    Partner-ID
    10107

    Standard

    PHP-Code:
    <li class="<?= deserialize(\ArticleModel::findById($article['articleId'])->cssID)[1?>"><a href="<?= $this->request ?>#<?= $article['id'?>" title="<?= $article['title'?>"><?= $article['link'?></a></li>
    ungetestet und es setzt voraus, dass jeder Artikel auch tatsächlich eine Klasse eingetragen hat.

  3. #3
    Contao-Nutzer
    Registriert seit
    21.09.2016.
    Beiträge
    7

    Standard

    Funktioniert! Vielen Dank!

  4. #4
    Contao-Nutzer
    Registriert seit
    07.04.2010.
    Ort
    Berlin
    Beiträge
    155

    Standard

    Vielen Dank, diese Info hat mir auch sehr geholfen!
    Leider hat sich in Contao4 nun einiges geändert was die Artikel-ID betrifft, wie auch schon hier beschrieben: https://community.contao.org/de/show...097#post452097

    Da wird leider nicht mehr der Artikelalias als ID ausgegeben, sondern ein numerischer wert. Leider reichen meine php-Kenntnisse nicht aus um den Code von Spooky so umzubauen, daß nicht mehr die ID, sondern der Alias abgefragt & ausgegeben wird - kann da jemand helfen?

  5. #5
    Contao-Nutzer
    Registriert seit
    07.04.2010.
    Ort
    Berlin
    Beiträge
    155

    Standard

    Gibts keinen der mir da weiterhelfen kann?
    Ich habe mal selbst ein bischen herumprobiert: Wenn ich alles richtig verstanden habe, dann müsste die Sache funktionieren, wenn ich im href vom Link den Teil
    HTML-Code:
    #<?= $article['id'] ?>
    ersetzte durch
    HTML-Code:
    #<?= $article['alias'] ?>
    Funktioniert aber leider nicht, da wird dann hinter dem # nix ausgegeben.

  6. #6
    Contao-Nutzer
    Registriert seit
    07.04.2010.
    Ort
    Berlin
    Beiträge
    155

    Standard

    Hallo? Hat denn niemand eine Lösung? Würde mich wundern, wenn nicht noch andere Leute das selbe Problem haben. Bin für jeden Hinweis dankbar!

  7. #7
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Du hast das schon richtig probiert, aber anscheinend liefert dir dieses Modul die Variable "alias" nicht. Dann kannst du sie mit dem Model holen, ist sogar noch einfacher als die ID, weil die ID in einem serialisierten Array zusammen mit den CSS-Klassen vorlag, der Alias müsste aber direkt ein String sein.
    PHP-Code:
    // Alt
     class="<?= deserialize(\ArticleModel::findById($article['articleId'])->cssID)[1?>"

    // Neu
     class="<?= $article['class'] . ' ' . \ArticleModel::findById($article['articleId'])->alias ?>"
    (ungetestet)

    ps Ich glaube das $article['articleId'] im Beispiel von Spooky oben war ein Fehler, es müsste $article['id'] heißen.

    Sorry, ich hab's zwar nicht getestet, aber ich glaube das von Spooky ist doch richtig, weil mit $article['id'] wahrscheinlich die CSS-ID ausgegeben wird und nicht die ID des Artikels. Irreführend.
    Geändert von Andreas (10.11.2017 um 17:53 Uhr)
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  8. #8
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich sehe gerade, dass du die Raute dort hast. Das wird dir nichts nutzen, wenn du diese Ausgabe änderst, weil danach ja der Hash kommt, welcher den Artikel anspringt. Dann müsstest du die CSS-ID-Ausgabe bei den Artikeln ja auch ändern.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  9. #9
    Contao-Nutzer
    Registriert seit
    07.04.2010.
    Ort
    Berlin
    Beiträge
    155

    Standard

    Hey Andreas, vielen Dank für deine Hilfe - damit habe ich es nun geschafft! Du hast natürlich recht - die Sache funktioniert nur, wenn man auch die CSS-ID Ausgabe in den Artikeln ändert, aber dafür hatte ich schon in diesem Thread eine Lösung gefunden.

    Hier also noch einmal fürs Protokoll die komplette Lösung für Contao 4:

    Inhalt von mod_articlelist.html5

    HTML-Code:
    <?php $this->extend('block_unsearchable'); ?>
    
    <?php $this->block('content'); ?>
    
      <ul>
      	<?php foreach ($this->articles as $article): ?>
    		<li class="<?= deserialize(\ArticleModel::findById($article['articleId'])->cssID)[1] ?>">
    			<a href="<?= $this->request ?>#<?= $article['class'] . '' . \ArticleModel::findById($article['articleId'])->alias ?>" title="<?= $article['title'] ?>">
    				<?= $article['link'] ?>
      			</a>
      		</li>
      		<?php endforeach; ?>
      </ul>
    
    <?php $this->endblock(); ?>
    Und in mod_article.html5 muß dieser Ausdruck

    HTML-Code:
    <?= $this->cssID ?>
    überall ersetzt werden durch

    HTML-Code:
     id="<?= $this->alias ?>"

    Ich frag mich allerdings immer noch, wieso diese geänderte Artikel-ID für Contao4 eingeführt wurde. Der Vorteil der numerischen ID erschließt sich mir nicht.

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
  •