Artikel/Beitrags-ID auslesen

  • Hi Leute,


    weiß jemand ob man die Artikel ID auslesen kann genauso wie es in WordPress mit "post_id" möglich ist?


    Folgende Situation:


    Ich würde gern einzelne Beiträge in einem Blog (Blogansicht) anders darstellen bzw. hervorheben als die anderen. Die Ansicht kann dabei ganz unterschiedlich sein. Beispiel; andere Hintergrundfarbe oder ein Icon neben dem Beitragstitel. Natürlich mit dem Befehl (:after). Auf einer einzelnen Seite bzw. eine Seite wo nur ein einzelner Beitrag über einen Menüpunkt angesteuert wird kann ich den Beitrag über die "Seitenklasse" ansteuern. In einem Blog kann ich das so nicht machen.


    Ich habe zwar bereits eine Ersatzlösung mit (:first-child), (:last-child), (:nth-child) usw. im Einsatz aber so richtig bin ich damit nicht zu frieden. Muss ich viel zu lange via CSS basteln bis alles passt.


    Wenn man eine Modul ID auslesen möchte, dann funktioniert das ja mit folgendem z. B.


    PHP
    id="search-<?php echo $module->id; ?>"


    Ergebnis ist dann z. B. id="search-92"


    Leider bin ich da bei Google auch nicht fündig geworden. Vielleicht weiß ja einer von euch ob und wie es geht.


    Danke und Gruß,
    Tobias

  • Danke CurlY BracketS, damit habe ich schon mal einen Ansatz.


    Ich verwende ein YOOtheme Template in dem bereits einige Overrides dabei sind. Hier gibt es eine article.php welche ich jetzt mal angepasst habe und mit folgendem Code die ID des Beitrages auslesen konnte:


    PHP
    <?php echo JRequest::getVar('id'); ?>


    Sieht dann so aus:


    PHP
    <article id="article-id<?php echo JRequest::getVar('id'); ?>" class="uk-article ...


    Wie gesagt, damit konnte ich die ID des Artikels auslesen und via CSS steuern bzw. könnte ich es jetzt wie gewünscht anpassen.


    Problem:


    Ich kann zwar die ID mit dem verwendeten Schnipsel auslesen aber das funktioniert nur mit einzelnen Beiträgen, also ein Beitrag pro Seite. In der Blog-Darstellung haben alle Beiträge die gleiche ID was ich natürlich nicht möchte.


    :(

  • Hi tobias,


    Wie gesagt, damit konnte ich die ID des Artikels auslesen und via CSS steuern bzw. könnte ich es jetzt wie gewünscht anpassen.


    Dem Menülink eine Klasse zu geben, hilft wohl an der Stelle nicht weiter?
    Wäre Joomla-Standard und Du müsstest Dich nicht mit Overrides quälen. :D

  • @germanis,


    das habe ich schon gemacht. Bringt mich nicht überall weiter bzw. kann ich damit eine Einzelseite beeinflussen jedoch keine Blog-Seite mit mehr als einem Beitrag wenn man darin z. B. den 3 Beitrag von 10 anders darstellen will.


    @Indigo66,


    Wenn ich einen Div-Container innerhalb des Beitrages erstelle, erfasst dieser nur den Text und leider nicht die Überschrift von Joomla inkl. z. B. Verlinkung oder auf ein Intro Bild oder Weiterlesen-Button.


    In einem Projekt habe ich das via Seitenklasse und CSS gemacht indem ich folgende Konfiguration habe:


    1 Lead article
    4 Intro article
    4 Spalten pro Zeile



    Hierbei habe ich mit der Seitenklasse und den CSS Befehlen :first-child, :last-child und :nth-child gearbeitet und so den unterschiedlichen Beiträgen (5 insgesamt davon 3 angepasst) ein anderes aussehen verpasst inkl. Joomla eigener Überschrift inkl. Überschrift-Verlinkung, Intro-Bild und Weiterlesen-Button. Die weißen Boxen wie auf dem Bild zusehen sind Standard und nur der blaue, rote und gelbe sind geändert. Die 5 Beiträge kommen aus unterschiedlichen Kategorien und werden derzeit als "Beiträge » Haupteinträge" angezeigt. Das funktioniert etwas mühselig via CSS aber es funktioniert. Voraussetzung dafür sind für mich, dass die Beiträge sich so gut wie nie ändern.


    Wenn ich jetzt aber einen Blog mit 10 Beiträgen pro Seite habe und der 3. Beitrag XYZ neben dem Titel ein kleines Icon und der 8. Beitrag ZYX eine andere Hintergrundfarbe haben soll, dann funktioniert das sicher auch so wie oben beschrieben. Wenn jetzt ein weiterer Beitrag hinzukommt steht dieser an erster Stelle. Somit ändert sich die Reihenfolge und der Beitrag 3 steht auf Pos. 4 und der Beitrag 8. auf Pos 9 und nicht mehr auf 3 und 8.


    Über die ID hätte ich die Möglichkeit eben diese einmalig anzupassen egal an welcher Position oder Reihenfolge diese später stehen. Das aussehen bleibt gleich da ich diese ja via ID steuere.

  • Hallo!
    Wer pflegt den die Texte der Website?
    Vielleicht könntest du ja beim Erstellen des Beitrages um diesen herum ein div mit ID legen?
    Ist das CSS dann pro Beitrag immer wieder anders, oder gibt es nur ein paar verschiede Layouts?
    Viele Grüße
    Astrid

    • Hilfreich

    Ist vielleicht nicht die eleganteste Lösung, aber ich würde folgendermassen rangehen:


    Erstelle ein Override, indem du
    templates/templateName/warp/systems/joomla/layouts/com_content/category/blog_item.php
    nach:
    templates/templateName/layouts/com_content/category/blog_item.php
    kopierst.


    Dann editiere die kopierte Datei und ändere ganz unten die Zeilen


    Code
    // render templateecho $warp['template']->render('article', $args);


    durch


    PHP
    ?>
    <div id="post_<?php echo $this->item->id; ?>">
    <?php
    // render template
    echo $warp['template']->render('article', $args);
    ?>
    </div>


    Für Hauptbeiträge müsstest du ein entsprechendes Override von
    templates/templateName/warp/systems/joomla/layouts/com_content/featured/default_item.php
    machen.

  • Danke @anka,


    das ist genau das was ich gesucht und gebraucht habe. Über elegant und nicht elegant lässt sich streiten. Das Ergebnis ist vollkommen zufriedenstellend. Zugegeben habe ich immer an der falsche Stelle versucht die Schrauben zu drehen aber in diese Dateien hätte ich nicht geschaut.


    Danke vielmals, Gruß
    Tobias

  • Nabend,


    das habe ich schon gemacht. Bringt mich nicht überall weiter bzw. kann ich damit eine Einzelseite beeinflussen jedoch keine Blog-Seite mit mehr als einem Beitrag wenn man darin z. B. den 3 Beitrag von 10 anders darstellen will.


    Okay, dann war ich auf dem falschen Dampfer. Nach Deinem ersten Post, dachte ich, Du meinst pro Seite, sprich: pro im Menü verlinkter Inhaltsseite.


    Die Lösung von @anka ist schon mal deswegen elegant, weil ich (der auch des Öfteren Yoothemes einsetzt) noch gar nicht wußte, dass man WARP-Overrides einfach per Kopie in "einfache" Overrides packen kann.
    Dann bleibt das Ganze sogar "update"-bar.

  • Toll dass es eine Lösung gab.


    Am Rande: Ich habe ein Modul geschrieben, welches genau die Zielstellung im ersten Beitrag umsetzt und es erlaubt, eine CSS-Datei in Abhängigkeit von Meneupunkt, Kategorie oder Komponente zu laden, und: Es sind auch einzelne Artikel, zum beispiel in einem Blog ansteuerbar, die keine eigene ItemID (also Menupunkt) haben. In dieser CSS-Datei kann man dann beliebigen Code unterbringen. Wäre das auch eine Lösung gewesen?