head nur für bestimmten Beitrag ändern

  • Joomla Version
    3.10.12
    PHP Version
    PHP 8.1.x
    Hoster
    Hosteurope
    Link (URL) zur Seite mit dem Problem
    https://faschingsclub-helmstadt.de/16-internes/webseite/7-impressum.html

    Hallo Gemeinde,


    ich muss in den Head-Bereich eines bestimmten Beitrags ein Script einfügen, damit das Consent-Tool für diesen Beitrag ausgelendet wird. Konkret um vor Einwilligung das Impressum bzw. die DE lesen zu können.

    Füge ich das Script in der Template Index ein, wirkt sich das auf alle Seiten aus, es sollen aber nur die beiden bestimmten Beiträge sein.


    Kann mir jemand helfen das zu realisieren?


    Danke und viele Grüße

  • Ich habe es jetzt mal über ein Artikel-Override versucht. Dazu habe ich bei "com_content" > "article" ein Override erzeugt und dieses umbenannt, damit ich es als alternatives Layout im Artikel einstellen kann.

    Die Date heißt nun "Override.php" und enthält folgenden Code am Anfang des Dokuments:


    PHP
    <?php
    $Usercentrics = 'var UC_UI_SUPPRESS_CMP_DISPLAY=true;';
    JFactory::getDocument()->addScriptDeclaration($Usercentrics);

    Herauskommen soll dabei dann

    <head>

    <script type="application/javascript"> var UC_UI_SUPPRESS_CMP_DISPLAY=true;</script>

    </head>


    Aber irgendetwas läuft noch schief weil der Code nicht erzeugt wird und schon gar nicht im Head-Bereich des Beitrags

  • Zuerst einmal Danke für die Hilfsangebote und sorry fürs falsche Forum. Mir ist bewusst, dass J3 EOL ist, dennoch benötige ich es aktuell noch für J3 und später auch für J4. Somit Danke Sieger66 auch für den J4 Link!


    Leider bin ich kein PHP oder JS Profi und komme mit dem Link nicht wirklich weiter. Daher folgende Fragen:

    1. Verstehe ich es richtig, dass icht mit dem Override und alternativen Layout erstmal auf dem richtigen Weg bin?
    2. Ich habe den Code nach dem Beispiel für J3 angepasst aber auch das funktioniert nicht. Vielleicht kannst Du mir hier die richtige Variante notieren
    PHP
    <?php
    $document = JFactory::getDocument();
    
    // Add Javascript
    $document->addScriptDeclaration('
        var UC_UI_SUPPRESS_CMP_DISPLAY=true;
    ');

    Danke

  • Old School:


    Code
    $contentId = JFactory::getApplication()->input->get('id', 0);
    if ($contentId == X) {
    } else {
      function output() {
      return 'AUSGABE';
    }
    echo output();
    }

    1. Den Code direkt unter defined('_JEXEC') or die; einfügen.

    2. Das X musst Du gegen die ID Deines Impressums ändern. Findest Du bei den Beiträgen rechte Spalte.

    3. AUSGABE musst Du gegen Deinen Consent - Code tauschen.


    Was passiert jetzt? Dein Consent - Code wird nur eingebunden, wenn Du nicht auf der Seite Impressum bist.


    Wenn Du weitere Seiten benötigst, in dem der Consent - Code nicht eingebunden wird, musst Du die Abfrage erweitern:

    Code
    if ($contentId == X) {

    wird dann zu

    Code
    if ($contentId == X || $contentId == Y) {

    für zwei Beiträge, in dem der Code nicht eingebunden werden soll.


    Könnte in Deinem Fall dann so aussehen:


    Problem: Würde bei einem Update des Templates überschrieben. Lösung: Child Template anlegen.