Seite 1 von 1

Metadescription in Modul ausgeben

Verfasst: Di 1. Okt 2019, 14:51
von volupp11
Hat jemand einen Plan, wie man die MetaDescription in der aktuellen Version im Modul ausgibt? Wäre für jeden Tipp dankbar. Ich benötige die Ausgabe für die RichSnippets.

Re: Metadescription in Modul ausgeben

Verfasst: Di 1. Okt 2019, 18:11
von Faar
Ich guck mal schnell in die DB, vielleicht finde ich was.

so, bin wieder da.
In der Tabelle con_meta_tag sind die Inhalte fast aller Meta-Tags enthalten und in der Tabelle con_meta_type sind die Typen der Metatags enthalten, also z.B. Nr. 3 ist die Description.
In der Tabelle Meta_Tag kann man dann die Metatags anhand der idartlang suchen und mittels dem Type zuordnen, welcher Metatag es ist.
Die idartlang sollte im Modul mit dem Artikel abgreifbar sein, also braucht es "nur" noch ein Funktion oder Klasse, die die Daten raus holt.
Vielleicht sowas hier: https://api.contenido.org/latest/class- ... ction.html

Re: Metadescription in Modul ausgeben

Verfasst: Di 1. Okt 2019, 18:18
von volupp11
das wäre super

Re: Metadescription in Modul ausgeben

Verfasst: Di 1. Okt 2019, 18:21
von Faar
Hiermit sollte es gehen: fetchByArtLangAndMetaType( integer $iIdArtLang, integer $iIdMetaType )
Diese Methode (Funktion) ist in der Klasse enthalten.
https://api.contenido.org/latest/class- ... ndMetaType

Re: Metadescription in Modul ausgeben

Verfasst: Di 1. Okt 2019, 18:22
von volupp11
Danke für Deine Bemühugen. Hast Du für mich etwas Konkreteres?

Re: Metadescription in Modul ausgeben

Verfasst: Di 1. Okt 2019, 18:29
von Faar
volupp11 hat geschrieben:
Di 1. Okt 2019, 18:22
Danke für Deine Bemühugen. Hast Du für mich etwas Konkreteres?
Achje, also es sind public Functions und da sollte man so zugreifen können:

Code: Alles auswählen

$metadaten = new cApiMetaTagCollection;
$metatype = 3;
$description = $metadaten->fetchByArtLangAndMetaType($idartlang, $metatype);
echo $description;
Ohne Gewähr, ich habe das schnell so zusammengezimmert.

Re: Metadescription in Modul ausgeben

Verfasst: Di 1. Okt 2019, 18:36
von volupp11
Das schaut eigentlich sehr gut aus.
Jetzt bekomme ich im Errorlog
PHP Recoverable fatal error: Object of class cApiMetaTag could not be converted to string
Ich vermute, dass ein Update nicht vollständig gemacht wurde.

Re: Metadescription in Modul ausgeben

Verfasst: Di 1. Okt 2019, 18:40
von Faar
volupp11 hat geschrieben:
Di 1. Okt 2019, 18:36
Das schaut eigentlich sehr gut aus.
Jetzt bekomme ich im Errorlog
PHP Recoverable fatal error: Object of class cApiMetaTag could not be converted to string
Ich vermute, dass ein Update nicht vollständig gemacht wurde.
Der Fehler liegt bei mir, ich habe nicht geschaut, was die Funktion zurück gibt.
Du kannst es auch mal so probieren:

Code: Alles auswählen

SELECT `metavalue` FROM `con_meta_tag` WHERE `idartlang`='68' AND `idmetatype`='3' 
Das funktioniert, hab ich gerade ausprobiert.
Ich muss zum essen, dann schaue ich vielleicht später nochmal nach dem Fehler oben.

Re: Metadescription in Modul ausgeben

Verfasst: Di 1. Okt 2019, 19:16
von volupp11
Ich danke Dir vielmals. Das hat einwandfrei funktioniert.

Re: Metadescription in Modul ausgeben

Verfasst: Di 1. Okt 2019, 19:22
von Faar
volupp11 hat geschrieben:
Di 1. Okt 2019, 18:36
Jetzt bekomme ich im Errorlog
PHP Recoverable fatal error: Object of class cApiMetaTag could not be converted to string
Also, die Funktion liefert nicht den Text zurück sondern eher ein Objekt, das man nicht mit echo ausgeben kann.
Du kannst man schauen, ob du mit

Code: Alles auswählen

print_r($description);
Die Daten siehst. Falls ja, kann man es vielleicht mit einer foreach() Schleife auslesen oder wiederum mit der Objektschreibweise.

Hm, schade, eigentlich hätte ich gedacht, diese Methode in der Klasse liefert den Inhalt als Text zurück.
Aber mit dem SLQ in meinem Beispiel geht es auch, nur muss man da natürlich noch mehr darum herum schreiben, das Datenbankgedöns halt, wie früher.

Re: Metadescription in Modul ausgeben

Verfasst: Mi 2. Okt 2019, 12:53
von Oldperl
Servus,

es geht natürlich auch mit Bordmitteln von CONTENIDO. Den folgenden Code in den Modul-Output kopieren und man bekommt im Frontend den Inhalt des entsprechenden MetaTags (hier $idmetatype = 3 = description) angezeigt.

Code: Alles auswählen

<?php

$idmetatype = 3;
$sMetaValue = "";

$oMetaTagColl = new cApiMetaTagCollection();
$oMetaTag = $oMetaTagColl->fetchByArtLangAndMetaType(cRegistry::getArticleLanguageId(), $idmetatype);

if (is_object($oMetaTag)) {
    $sMetaValue = $oMetaTag->get('metavalue');
    $sMetaValue = stripslashes($sMetaValue);
}

echo "Value of MetaTag: ".$sMetaValue;
?>
Gruß aus Franken

Ortwin