Einleitungstext in Artikelansicht per css ändern

  • Liebe Leute,


    der Einleitungstext eines Artikels (also der Bereich vor <hr id="system-readmore" />) wird standardmäßig genauso formatiert wird der nachfolgende Lauftext (ich verwende eine Kopie des Protostar-Templates).


    Im Override für com_content > article findet sich in der default.php

    PHP
    <div itemprop="articleBody">
            <?php echo $this->item->text; ?>
        </div>


    Damit wird allerdings der gesamte Artikeltext inklusive Einleitungstext angesprochen. Vermutlich sollte dort eine Unterscheidung zwischen

    • "vor <hr id="system-readmore" />" und
    • "nach <hr id="system-readmore" />"

    samt class="introtext" eingebaut werden.


    Dafür reichen meine spärlichen php-Kenntnisse nicht, bei j-over habe ich nichts dafür gefunden, deswegen mein Frage, ob mir wer bei der Lösung behilflich sein kann.


    Danke im Voraus

    Joomla 3.5.1, PHP 7.0.4, mySQLi 5.5.49-0

  • introtext und fulltext beide separat ausgeben statt text hat den Nachteil, dass für erstere die Plugins nicht durchlaufen werden.


    Aber das ist meist ein guter Kompromiss, wenn man darauf achtet, dass im Introtext keine pluginrelevanten Sachen vorkommen:
    Bspw. in den globalen Einstellungen für Beiträge die Einstellung Einleitungstext anzeigen auf NEIN setzen.


    Dann im Override:

    PHP
    <div class="itemprop-articleBody" itemprop="articleBody"><div class=introtext style="background-color:yellow"> <?php echo $this->item->introtext; ?></div>  <?php echo $this->item->text; ?>


    Man kann zur Not im Override aber auch introtext und/oder fulltext nachträglich durch die Content-Plugins schicken

    PHP
    <div class=introtext style="background-color:yellow">
    <?php echo JHtml::_('content.prepare', $this->item->introtext, '', 'com_content.article'); ?>
    </div>
    <div class=fulltext style="background-color:green">
    <?php echo JHtml::_('content.prepare', $this->item->fulltext, '', 'com_content.article'); ?>
    </div>
    • Hilfreich

    Wenn du in deinem Beitrag Plugin-Platzhalter verwendest wie z.B.
    {youtube}ljsl879{/youtube}
    von allvideos, aber auch Haufen andere denkbar.


    Joomla packt erst introtext und fulltext (das sind 2 verschiedene Felder in der Datenbank) zu text zusammen, bevor es in der default.php ankommt und dort ausgegeben wird.


    Und nur das zusammengepackte text wird im Normalfall durch die Plugins geschickt, damit die obigen Platzhalter umgesetzt werden, zu eingedundenem Video z.B.


    Ein pures echo $this->item->fulltext; statt echo $this->item->text; wird dir den Platzhalter anzeigen statt Video.

  • Deine Erklärung hat mir geholfen: Für Introtext habe ich deine 1. für fulltext die 2. Variante genommen.


    Falls das wer braucht: Den doppelten Einleitungstext in Variante 1 bekommst du weg, wenn du

    PHP
    <?php echo $this->item->fulltext; ?>


    verwendest.


    Nachteil: der Einleitungstext wird angezeigt, auch wenn er im Menü oder Artikel auf "Verbergen" gestellt ist.

    Joomla 3.5.1, PHP 7.0.4, mySQLi 5.5.49-0