Kategorieblog override

  • Joomla Version
    4.4.3
    PHP Version
    PHP 8.2.x
    Hoster
    fc

    Hallo Forum,

    im Kategorieblog (Template Astroid One) möchte ich das HTML vom Bild ändern.
    In der blog_item.php im HTML override odner finde ich aber nur sowas:


    Code
    ...
    if ((!empty($images->image_intro)) && $post_format == 'standard') { 
    echo LayoutHelper::render('joomla.content.intro_image', $this->item); 
    } else if (is_string($image) && !empty($image)) { 
    $document->include('blog.modules.image', ['image' => $image, 'title' => $this->item->title, 'item' => $this->item]); 
    } else { echo LayoutHelper::ren
    ...


    per firefox-inspector habe ich den code ermittelt, an der ich die Änderungen haben möchte, der sieht ungefähr so aus:

    Code
    <div class="my_class-1">
        <a href="/Joomla's_link_"> <!-- rot -->
            <figure class="my_class-2">
                <img src="Joomla's cat-blog_img"> <!-- rot -->
            </figure> </a>
    </div>

    Nur, wie kriege ich meinen code um joomlas eigenen cryptischen (rot, Einfärbung ging nicht) hinein?

  • Sofern es um das intro-Image geht und ich mich nicht irre:

    Entweder du enfernt den entsprechenden Code in Template-Override der blog_item.php welcher das ausgibt und setzt deinen eigenen Code ein.

    Oder du machst z.B. ein Template-Override des layouts der 'joomla.content.intro_image' siehe dazu z.B.:


    github.com/joomla/joomla-cms/blob/5.0.3/layouts/joomla/content/intro_image.php


    bzw. auch im One-Template wohl bei:

    /html/layouts/joomla/content/intro_image.php

  • Danke Sieger66,

    das heisst,
    ich kopiere die JOOMLAROOT/layouts/joomla/content/intro_image.php


    nach

    templates/astroid_template_one/html/layouts/joomla/content/intro_image_blog.php

    mache hier meine Änderungen,

    und muss dann in

    templates\astroid_template_one\html\com_content\category\blog_item.php


    die Stelle

    Code
    echo LayoutHelper::render('joomla.content.intro_image', $this->item);

    mit dieser

    Code
    echo LayoutHelper::render('joomla.content.intro_image_blog', $this->item);

    ersetzen?


    Bei den Änderungen in der

    templates/astroid_template_one/html/layouts/joomla/content/intro_image_blog.php

    kriege ich nicht raus, wo ich einsetzen soll?


    Mein Code soll etwa so angeordnet sein:

    <div class="my_class-1">

    <a href="/Joomla's_eigener_Bildlink_">

    <figure class="my_class-2">

        <img src="Joomla's eigene_cat-blog_img">

    </figure>

    </a>
    </div>


    Wie kriege ich das hin?

  • Geht es denn überhaupt um das íntro-image jeden Beitages bei dem du etwas im Quelltext ergänzen möchtest?


    Würde auf den zusätzlichen unterstrich im Dateinamen auf jeden Fall verzichten!

    Kenne mich mit AstroidTemplates und Framework nicht aus.

    Aber werden die Overrides eventuell dort verwendet ?!


    templates/astroid_template_one/overrides/layouts/joomla/content/intro_image.php

    oder wenn du eine zweite Variante benötigst eben:

    templates/astroid_template_one/overrides/layouts/joomla/content/intro_image2.php


    und deine Quelle dazu sollte dann wohl eigentlich diese sein:

    templates/astroid_template_one/html/layouts/joomla/content/intro_image.php


    Die blog_item.php brauchst du ja nur zu ändern wenn du z.B. die zweite Variante der intro_image benötigst...


    Außerdem verstehe ich noch nicht wo du was im Code ändern oder ergänzen möchtest.

    Geht es um das einfügen der Klassen my_class oder ??

  • Ja, es geht mir eigtl nur das intro-image und das umschließen mit meinen

    <div class="my_class-1">

    und

    <figure class="my_class-2">


    bzw das beenden der tags


    Zitat

    und deine Quelle dazu sollte dann wohl eigentlich diese sein:

    templates/astroid_template_one/html/layouts/joomla/content/intro_image.php

    Jo, die override Datei.


    Sollte auch keine große Sache sein, aber, wenn das sooo kompliziert is, um ein paar Zeilen einzufügen...

  • Die Quelldatei für den Override ist:

    templates/astroid_template_one/html/layouts/joomla/content/intro_image.php

    Diese Datei ist eine Template-Core-Datei und diese darfst du daher nicht ändern !


    Kannst ja deine Klasse in den Override-Code hinzufügen z.B.:

    PHP
    <div class="my_class-1 text-<?php echo htmlspecialchars($imgfloat, ENT_COMPAT, 'UTF-8'); ?> item-image">

    oder halt zusätzliches div korrekt einfügen usw.

    Den Anfang und das Ende der HTML-Tags sieht man doch in der Datei.

  • ok, mach'mer...


    hier die inserts:


    <?php $imgfloat = empty($images->float_intro) ? $params->get('float_intro') : $images->float_intro; ?>

    <div class="my_class-1 text-<?php echo htmlspecialchars($imgfloat, ENT_COMPAT, 'UTF-8'); ?> item-image">

    <?php if ($params->get('link_titles') && $params->get('access-view')) : ?>


    <a href="<?php echo Route::_(ContentHelperRoute::getArticleRoute($displayData->slug, $displayData->catid, $displayData->language)); ?>">

    <figure class="my_class-2">

    <img <?php if ($images->image_intro_caption) : ?>

    <?php echo 'class="caption"' . ' title="' . htmlspecialchars($images->image_intro_caption) . '"'; ?>

    <?php endif; ?> src="<?php echo htmlspecialchars($images->image_intro, ENT_COMPAT, 'UTF-8'); ?>" alt="

    <?php echo htmlspecialchars($images->image_intro_alt, ENT_COMPAT, 'UTF-8'); ?>" itemprop="thumbnailUrl" />

    </figure>

    </a>
    scheint zu klappen... noch läufts


    Danke für Deine Tipps!
    ich setz es mal als gelöst

  • War doch eigentlich einfach wenn man weis wie es geht.


    Wichtig ist das du es nicht in der Template-Core-Datei änderst:

    templates/astroid_template_one/html/layouts/joomla/content/intro_image.php

    weil diese Datei bei einem Template- oder Framework-Update überschrieben werden könnte.


    ... gehts nur mit "dazu hinein setzen", nicht Zeile(n) davor ?

    Und wenn du unbedingt noch ein weiteres div-Tag außerhalb des schon vorhandenen div-Tags möchtest ist das ja auch kein Problem.

    Wo das vorhandene div-Tag beginnt und endet sieht man ja auch im Code...

  • War doch eigentlich einfach wenn man weis wie es geht.

    höhö...


    das du es nicht in der Template-Core-Datei änderst

    was denn nun... noch ein override von der override?

    Lag ich doch richtig am Anfang?
    hier schreiben sie bei Layout overrides:


    JOOMLAROOT/layouts/joomla/content/intro_image.php kopie machen
    und in
    templates/YOUR_TEMPLATE/html/layouts/joomla/content/ verschieben


    und in intro_image_blog.php umbenennen


    dann Template override Datei

    templates/YOUR_TEMPLATE/html/com_content/category/blog_item.php


    dort den referer
    LayoutHelper::render('joomla.content.intro_image', $this->item);

    suchen


    und mit


    LayoutHelper::render('joomla.content.intro_image_blog', $this->item);

    ersetzen.


    Also doch diese Methode?

  • Nein, das wäre auch völlig falsch.


    Da für dein Template ein zusätzliches Framework(Astroid) installiert und benutzt wird gelten die Anleitungen wie z.B. bei Joomla.org nicht vollständig.

    Daher hatte ich dir schon in #4 geschrieben wo du deinen Override platzieren sollst:


    templates/astroid_template_one/overrides/layouts/joomla/content/intro_image.php


    und anschließend testen ob er von Joomla bzw. dem zusätzlichen Framework von dort genommen wird.


    Ich habe aber eben nochmal nachgeschaut und das wird so wohl leider nicht gehen.

    Wie schon geschrieben verwende und nutze ich dieses zusätzliche Astroid-Framework und dessen Templates nicht.


    Welche Version vom Template Astroid One verwendest du ?

    1.3.4 ?

    Gib uns mal einen Link zu der Website oder die Datei

    templates/astroid_template_one/templateDetails.xml

    kannst sie ja in templateDetails.xml.txt umbennen damit du sie als Dateianhang beifügen kannst.


    Alternativ könntest du aber eine Template Kopie oder Child des Templates erstellen und benutzen.

    Siehe dazu z.B. auch:

    help.joomla.org/proxy?keyref=Help40:Templates:_Customise&lang=de#Keine_Datei_ausgew.C3.A4hlt


    Achtung nicht verwechseln mit Template-Stil-Kopie, das ist nicht damit gemeint und wäre nicht zielführend.


    In der Kopie oder dem Child kannst du dann dein Override updatesicher platzieren:


    templates/"Kopie-astroid_template_one"/html/layouts/joomla/content/intro_image.php


    "Kopie-astroid_template_one"

    mußt du natürlich durch deinen Dateiordnernamen der Kopie bzw. dem Child ersetzen.

  • Es ist derzeit die Version 3.0.11


    https://regionalmuseum-bfh.de/templates/astroid_template_one/templateDetails.xml


    Bei dieser Version kann man keine Kopie sondern ein Child-Template anlegen.

    Siehe dazu z.B. auch:


    help.joomla.org/proxy?keyref=Help50:Templates:_Customise&lang=de#No_file_selected


    Lies einfach diese ganze Hilfe-Seite.


    Hilfe, so ein Aufriss wegen 2 Zeilen code...😏

    Weil du unbedingt ein Template mit zusätzlichem Framework verwenden willst.

    Sonst wären wir längst fertig!

    Kannst es aber auch so lassen und dich halt später nach einem Update ärgern und suchen...

  • Du kannst dir auch eine Kopie der Override-Datei im selben Dateiodner anlegen z.B.:


    templates/astroid_template_one/overrides/layouts/joomla/content/.kopie-von-intro_image.php


    Habe jetzt auch gesehen wo du welche CSS-Klassen im Override eingesetzt hast.


    rel-item-zoom-img und newsflash-image

  • Stef
    😂

    ich habe mir mal ein Child "gemacht"...

    dort hinein habe ich mir das override

    /layout/com_content


    angelegt

    dort hinein habe ich mir die intro_image.php kopiert und mit meinem Code infiltriert.


    so, und Jomla findet nun diese Datei?
    und diese wird beim update vom Template auch nicht überschrieben?

    Es geht dann eben das gechecke der Overides los...

  • Damit Joomla das Child verwendet mußt du es als Stil auf Standard setzen oder für die gewünschten Menüeinträge verwenden.

    Siehe z.B. auch:


    help.joomla.org/proxy?keyref=Help40:Templates:_Styles&lang=de


    Es geht dann eben das gechecke der Overides los...

    Ja richtig, ist aber beim Child-Template seit Joomla 4.1 eigentlich etwas komfortabler siehe z.B. in den Anleitungen:


    Hinweis in joomla : Overrides sind nicht mehr aktuell