Contao-Camp 2024
Ergebnis 1 bis 29 von 29

Thema: Eigene Meta-Description soll beim News-Beitrag individuell angepasst werden

  1. #1
    Contao-Nutzer Avatar von fall2out
    Registriert seit
    16.06.2011.
    Ort
    Bramsche / Osnabrück
    Beiträge
    132

    Standard Eigene Meta-Description soll beim News-Beitrag individuell angepasst werden

    Hallo Leute,

    bin neu in der Contao Entwickler Community, was zumindest die Extensionentwicklung angeht. Beim News-Beitrag wird die Meta-Description vom Teaser übernommen. Ziel ist nun ein eigenes Feld anzulegen, welches, falls ausgefüllt, die Meta-Description überschreibt. Nun das Feld usw. ist im Backend angelegt, nun fehlt mir nur noch die Logik. Leider blicke ich bei der Doku nicht so gut durch und komme einfach nicht weiter. Mir würde ein richtiges Contao Entwicklerbuch helfen :-D Wer hat Tipps und könnte mir schon mal helfen, wie ich meine im Backend hinterlegten Daten im Frontend anzeigen könnte. Bin auch bereit dafür zu bezahlen, falls sich jemand per Teamviewer Zeit nehmen würde. Am liebsten heute :-D Danke im Voraus!
    Mertens Media - Internetagentur aus Bramsche

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

    Standard

    Zitat Zitat von fall2out Beitrag anzeigen
    Contao Entwicklerbuch helfen :-D
    Eine überarbeitete Contao Dokumentation wird mal kommen .

    Jedoch bin ich mir nicht sicher ob wir wirklich alle Fälle, wie auch diesen, abdecken können. Denn viele Wege führen zum Ziel. Im Endeffekt musst du irgendwo $GLOBALS['objPage']->description überschreiben. Der parseArticles Hook ist hier leider nicht geeignet, da dieser ausgeführt wird bevor das Newreader Modul die meta description selbst setzt. Du musst es also woanders machen, wie zB im allgemeinen parseFrontendTemplate Hook oder direkt im news_full oder mod_newsreader Template.

  3. #3
    Contao-Nutzer Avatar von fall2out
    Registriert seit
    16.06.2011.
    Ort
    Bramsche / Osnabrück
    Beiträge
    132

    Standard

    Okay, der Hook ist schon mal ein guter Ansatz. Danke schon mal dafür. Kannst du mir kurz erklären, wie ich nun mein eigenes angelegtes Feld vernünftig abrufe?
    Mertens Media - Internetagentur aus Bramsche

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

    Standard

    Zitat Zitat von fall2out Beitrag anzeigen
    Okay, der Hook ist schon mal ein guter Ansatz. Danke schon mal dafür. Kannst du mir kurz erklären, wie ich nun mein eigenes angelegtes Feld vernünftig abrufe?
    Das kommt darauf an wo du es nun brauchst.

  5. #5
    Contao-Nutzer Avatar von fall2out
    Registriert seit
    16.06.2011.
    Ort
    Bramsche / Osnabrück
    Beiträge
    132

    Standard

    Achja, was ich noch vergessen hatte, wie komme ich an die Head-MetaDescription? Welches Object ist das?
    Mertens Media - Internetagentur aus Bramsche

  6. #6
    Contao-Nutzer Avatar von fall2out
    Registriert seit
    16.06.2011.
    Ort
    Bramsche / Osnabrück
    Beiträge
    132

    Standard

    Code:
         public function modifyNewsPage($objPage, $objLayout, $objPageRegular)
        {
          $objPage->description = "TESTTESTTEST ";
        }
    Also die Meta-Description kann ich ersetzen, allerdings ist dies auf jeder Seite ersetzt. Folgende Funktionen fehlen also noch.

    - Mein Zusatzfeld "Meta-Description" muss aus dem Newsbeitrag entnommen werden.
    - Meta-Description soll auch nur bei jeweiligen Newsbeitrag im Frontend ersetzt werden
    - Zusatzfeld soll nur überschreiben, falls etwas in der Description steht (Das sollte aber das kleinere Problem sein)
    Mertens Media - Internetagentur aus Bramsche

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

    Standard

    Am einfachsten wäre es direkt im news_full Template:
    PHP-Code:
    if ($this->metaDescription)
    {
        
    $GLOBALS['objPage']->description $this->metaDescription;


  8. #8
    Contao-Nutzer Avatar von fall2out
    Registriert seit
    16.06.2011.
    Ort
    Bramsche / Osnabrück
    Beiträge
    132

    Standard

    Möchte es am liebsten mit der eigenen Extension lösen ohne zusätzliches Template. Hab einen Helper in meiner Extension geschrieben, weißt du zufällig wie ich da an mein Feld komme? Hab dir auch eine PN geschrieben. Danke nochmal!
    Mertens Media - Internetagentur aus Bramsche

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

    Standard

    Wenn du es im modifyFrontendPage Hook machst, kommst du so am einfachsten zu deiner Meta Description:
    PHP-Code:
    use Contao\Frontend;

    class 
    HookListener extends Frontend
    {
        public function 
    onModifyFrontendPage($buffer$templateName)
        {
            if (
    null !== ($objNews = \NewsModel::findByAlias(\Input::get('auto_item'falsetrue))))
            {
                if (
    $objNews->metaDescription)
                {
                    global 
    $objPage;
                    
    $objPage->description $this->prepareMetaDescription($objNews->metaDescription);
                }
            }

            return 
    $buffer;
        }

    Geändert von Spooky (22.07.2018 um 18:26 Uhr)

  10. #10
    Contao-Nutzer Avatar von fall2out
    Registriert seit
    16.06.2011.
    Ort
    Bramsche / Osnabrück
    Beiträge
    132

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Wenn du es im modifyFrontendPage Hook machst, kommst du so am einfachsten zu deiner Meta Description:
    PHP-Code:
    use Contao\Frontend;

    class 
    HookListener extends Frontend
    {
        public function 
    onModifyFrontendPage($buffer$templateName)
        {
            if (
    null !== ($objNews = \NewsModel::findByAlias(\Input::get('auto_item'falsetrue))))
            {
                if (
    $objNews->metaDescription)
                {
                    global 
    $objPage;
                    
    $objPage->description $this->prepareMetaDescription($objNews->metaDescription);
                }
            }

            return 
    $buffer;
        }

    Okay, das ist doch schon eigentlich alles was ich brauche, leider überschreibt er die Metadescription nicht. Ist es vielleicht der falsche Hook? Und zum Verständnis, was machst du mit dieser Funktion hier? Ich meine speziell "prepareMetaDescription". Und was $buffer?
    Code:
    $this->prepareMetaDescription($objNews->metaDescription);
    Mertens Media - Internetagentur aus Bramsche

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

    Standard

    Zitat Zitat von fall2out Beitrag anzeigen
    Okay, das ist doch schon eigentlich alles was ich brauche, leider überschreibt er die Metadescription nicht. Ist es vielleicht der falsche Hook?
    Ja du hast recht, der Hook modifyFrontendPage ist zu spät. myParseTemplate wäre evt. besser - wird aber auch viel öfter aufgerufen.

    Vielleicht wäre es auch effizienter, wenn deine Extension ein eigenes News Reader Modul mitbringt.

  12. #12
    Contao-Nutzer Avatar von fall2out
    Registriert seit
    16.06.2011.
    Ort
    Bramsche / Osnabrück
    Beiträge
    132

    Standard

    Danke, es funktioniert :-)

    Kannst du oben noch meine Frage kurz beantworten zum besseren Verständnis?
    Mertens Media - Internetagentur aus Bramsche

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

    Standard

    Siehe:



    Musst du so nicht einsetzen, es stellt nur sicher, dass der Text nicht länger als x Zeichen ist und keine HTML Tags hat und die Insert Tags ersetzt sind. Um das besser zu kontrollieren können könntest du auch einfach selbst direkt
    PHP-Code:
            $strText = \Controller::replaceInsertTags($strTextfalse);
            
    $strText strip_tags($strText);
            
    $strText str_replace("\n"' '$strText); 
    verwenden.

  14. #14
    Contao-Nutzer
    Registriert seit
    15.03.2010.
    Ort
    AT
    Beiträge
    204

    Standard

    Ist auch ohne Hook machbar - so verwende ich es in Contao 4.8 (sollte überall funktionieren)

    PHP-Code:
    #fe_page.html5
    global $objPage;
    echo 
    '<meta property="og:title" content="'.($objPage->ogTitle_Custom?$objPage->ogTitle_Custom:$this->title) .'">'
    So wird auf jeder Seite der Title ausgegeben.

    Für individuelle Inhalte - zb. bei den News:
    PHP-Code:
    #news_full.html5
    global $objPage;
    $objPage->ogTitle_Custom $this->newsHeadline " und was auch immer"
    Im fe_page wird jetzt statt des Title der CustomTitle vom news_full ausgegeben.
    Das Ganze natürlich auch noch für Description, Image, Url, Type usw..

    lg

  15. #15
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Und wenn ihr ab nächster Woche die 4.9 verwendet, dann kommen diese Tollen Features hinzu:
    https://www.youtube.com/watch?v=Gx2VIeyX5lE (Leos Keynote bei der Contao Konferenz)

  16. #16
    Contao-Nutzer
    Registriert seit
    15.10.2015.
    Beiträge
    131

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Am einfachsten wäre es direkt im news_full Template:
    PHP-Code:
        $GLOBALS['objPage']->description "Meine Beschreibung"
    Ich nutze Contao 4.4.47, möchte den Seitentitel und die Beschreibung in news_full ändern.
    Funktioniert jedoch so leider nicht, ist es mittlerweile anders?

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

    Standard

    Was genau möchtest du machen?

  18. #18
    Contao-Nutzer
    Registriert seit
    15.10.2015.
    Beiträge
    131

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Was genau möchtest du machen?
    Ich habe ein kleines Modul hinzugefügt "tl_news_mm", dort im dca/tl_news.php zwei Felder hinzugefügt.
    mm_news_seo_titel + mm_news_seo_beschreibung

    Die Meta Daten sollten nicht automatisch aus dem News Titel oder dem Teaser genommen werden.
    Ich kann beides auch bei den News eintragen.

    Nun möchte ich die Meta Daten übers Standard Template überschreiben.

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

    Standard

    Wie du das mit MetaModels machst, kann ich dir nicht sagen. Aber das Features, dass du brauchst, gibt es bereits in Contao 4.9, das heißt du solltest einfach aktualisieren.

  20. #20
    Contao-Nutzer
    Registriert seit
    15.10.2015.
    Beiträge
    131

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Wie du das mit MetaModels machst, kann ich dir nicht sagen. Aber das Features, dass du brauchst, gibt es bereits in Contao 4.9, das heißt du solltest einfach aktualisieren.
    Nein, MetaModels nutze ich schon sehr lange nicht mehr (mm ist mein Kürzel). Das mit Contao 4.9 habe ich gelesen, ist jedoch eine Kundenseite die Online ist, die noch nicht vorgesehen ist für ein Update auf 4.9, sicher erst Anfang nächsten Jahres :/

    Die SEO Möglichkeit muss jetzt aber rein.
    Wenn ich die News Ausgabe komplett mit eigenem Modul ersetze bekomme ich es auch hin, wollte ich mir hier nur sparen , da ich dachte, dass geht sicher auch viel einfacher!?

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

    Standard

    Zitat Zitat von windblick Beitrag anzeigen
    Nein, MetaModels nutze ich schon sehr lange nicht mehr (mm ist mein Kürzel).
    Achso, dann hatte ich das falsch verstanden. Nachdem du hier deine eigene Logik hast, musst du natürlich auch mitteilen, was genau du nun gemacht bzw. wie du das nun implementiert hast.

  22. #22
    Contao-Nutzer
    Registriert seit
    15.10.2015.
    Beiträge
    131

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Achso, dann hatte ich das falsch verstanden. Nachdem du hier deine eigene Logik hast, musst du natürlich auch mitteilen, was genau du nun gemacht bzw. wie du das nun implementiert hast.
    Sorry, wenn das noch unverständlich war, dachte das hätte ich oben verdeutlicht.
    Ich habe unter "/system/modules/tl_news_mm/dca/tl_news.php"

    nur die Felder ergänzt:
    $GLOBALS['TL_DCA']['tl_news']['fields']['mm_news_seo_titel']
    und
    $GLOBALS['TL_DCA']['tl_news']['fields']['mm_news_seo_beschreibung']

    Mehr nicht. Diese werden bei den Nachrichten nach "Alias" angezeigt, lassen sich auch befüllen.
    Ich habe das ganz normal "news_full.html5" Template, die Daten der Felder bekomme ich über $this->mm_news_seo_beschreibung und kann Sie mir im Template anzeigen lassen.

    $GLOBALS['objPage']->description = strip_tags($this->mm_news_seo_beschreibung);
    Funktioniert jedoch nicht.

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

    Standard

    Poste dein news_full Template.

  24. #24
    Contao-Nutzer
    Registriert seit
    15.10.2015.
    Beiträge
    131

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Poste dein news_full Template.
    PHP-Code:
    <?php
    if($this->mm_news_seo_beschreibung != ""){
        
    $GLOBALS['objPage']->description $this->mm_news_seo_beschreibung;
    }
    ?><div class="layout_full block<?= $this->class ?>" itemscope itemtype="http://schema.org/Article">

        <?php
        $class
    ='';
        if(
    $this->singleSRC!=''){$class.=' withImage';$class.=' image_float_left';}
        
    ?>

        <div class="ce_text dritteltext block<?= $class ?>" itemprop="description">

            <?php if ($this->addImage): ?>
                <?php $this->insert('image'$this->arrData); ?>
            <?php endif; ?>

            <div class="text">
                <h1 itemprop="name"><?= $this->newsHeadline ?></h1>

            <?php if ($this->hasSubHeadline): ?>
                <h2><?= $this->subHeadline ?></h2>
            <?php endif; ?>

            <?php if ($this->hasText): ?>
                <?= $this->text ?>
            <?php else: ?>
                <?= $this->teaser ?>
            <?php endif; ?>

            <?php if (($this->hasText) && $this->source == 'default'){ ?>

            <?php }else if($this->source == 'internal'){ ?>
              <p><a class="btn" href="<?= $this->link ?>"><?= $this->replaceInsertTags'{{link_title::' $this->jumpTo '}}' ?></a></p>
            <?php ?>

            </div>

        </div>

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

    Standard

    Sollte grundsätzlich so funktionieren.

  26. #26
    Contao-Nutzer
    Registriert seit
    15.10.2015.
    Beiträge
    131

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Sollte grundsätzlich so funktionieren.
    Cache gelöscht per SSH.
    Browser Cache auch deaktiviert.
    Gebe ich $this->mm_news_seo_beschreibung in dem Template aus wird es auch korrekt angezeigt.
    Aber die Beschreibung bleibt unverändert (also automatisch vom Teaser)

  27. #27
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.056
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Vielleicht kommt das im Template einfach zu spät? Ich kann mich ganz dunkel an uralte Threads zu Contao 3 zu entsprechenden Problemen mit dem ändern des Seitentitels erinnern.

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

    Standard

    Ja, die description wird tatsächlich nach dem parsen des Nachrichten Templates gesetzt: https://github.com/contao/contao/blo....php#L118-L122

    Müsste man also in einem Hook machen, der erst zu einem späteren Zeitpunkt aufgerufen wird.

  29. #29
    Community-Moderatorin & Contao-Urgestein Avatar von mlweb
    Registriert seit
    10.07.2011.
    Beiträge
    6.704
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Es gab da auch für Contao 4.4 eine Erweiterung von Erdmann und Freunde https://github.com/ErdmannFreunde/contao-news-meta.
    Ich habe Dir mit meinen Hinweisen geholfen und Du möchtest Dich bedanken?
    Unterstütze bitte das Contao-Projekt (Button Links)
    Weitere Spendenmöglichkeiten
    ------------------------------------------------------------------------------------------------------
    Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
    Contao-Online-Video-Kurse: Contao Academy
    Funktionalität erweitern: Contao-Erweiterungen

    Für Dinge die man mit html5 und css3 lösen kann, braucht man kein javascript.




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
  •