• 0
Marie-Anne

Récupération des infos des balises title et description

Question

Marie-Anne    10

Bonjour,

Je cherche la façon de récupérer le contenu des balises titre et description pour pouvoir remplir automatiquement les balises Open Graph selon la page où on se trouve.

<meta property="og:title" content="??" >
<meta property="og:description" content="??">

Merci d'avance.

Partager ce message


Lien à poster
Partager sur d’autres sites

47 réponses à cette question

Messages recommandés

  • 1
CroqueWeb    101

Méthode incluant le nom du site :

	/**
	 * Affiche les meta balises pour l'open graph
	 */
	public function showOGmeta() {
	echo '<meta property="og:title" content="' . $this->core->output['metaTitle'] . '">';
	echo '<meta property="og:description" content="' . $this->core->output['metaDescription'] . '">';
	echo '<meta property="Og:site_name" content="'. $this->getData(['config', 'title']) . '">';
	echo '<meta property="og:type" content="website">';
	}

 

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 1
CroqueWeb    101

Ajout dans les fichiers .php de core/layout :

<?php $layout = new layout($this); ?>
<!DOCTYPE html>
<html xmlns:og="http://ogp.me/ns#">
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<?php $layout->showMetaTitle(); ?>
	<?php $layout->showMetaDescription(); ?>
	<?php $layout->showOGmeta(); ?>
	<?php $layout->showFavicon(); ?>
	<?php $layout->showVendor(); ?>

 

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0
PeterRabbit    330

Bonjour @Marie-Anne,

 

Ces instructions devraient te permettre de récupérer les deux données que tu veux :

$titre = $this->getData(['page', $this->getUrl(0), 'title']);
$metaDescription = $this->getData(['page', $this->getUrl(0), 'metaDescription']);

Pour la suite, je ne peux rien te dire, ne connaissant pas la chose. o.O

 

Pour mieux comprendre comment fonctionne la "base de données" de Zwii, édite "site/data/data.json" (après avoir fait une copie de sauvegarde, bien entendu xD), copies-en le contenu et colle-le dans la fenêtre de ce site. Un clic sur le bouton "Unminify", et voici :

 

unminify.jpg.5974591fcd2e0db36a47204f30922c8d.jpg

 

C'est tout de même plus parlant ! 

 

 

 

Modifié par PeterRabbit

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0
Rémi    151

@Marie-Anne il y a deux méthodes dans core.php pour retourner le titre et la description : 

 

/**
 * Affiche le meta titre
 */
public function showMetaTitle() {
    echo '<title>' . $this->core->output['metaTitle'] . '</title>';
}

/**
 * Affiche la meta description
 */
public function showMetaDescription() {
    echo '<meta name="description" content="' . $this->core->output['metaDescription'] . '">';
}

Il faut ajouter les balises dans les méthodes ci-dessus. Le mieux serait de voir avec @cybertaf, @CroqueWeb ou @PeterRabbit pour faire un intégration dans une prochaine mise à jour du CMS ;) .

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0
CroqueWeb    101

Bonjour @Marie-Anne

Et bienvenue chez ZwiiCMS

Pour renseigner ces balises de manière automatique, édite comme tu l'as déjà fait le fichier core/layout/main.php et ajoute ceci :

<meta property="og:title" content="<?php echo $this->getData(['config', 'title']); ?>">
<meta property="og:description" content="<?php echo $this->getData(['config', 'metaDescription']); ?>">

à partir de la ligne 11

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0
Rémi    151
Il y a 1 heure, CroqueWeb a dit :

Bonjour @Marie-Anne

Et bienvenue chez ZwiiCMS

Pour renseigner ces balises de manière automatique, édite comme tu l'as déjà fait le fichier core/layout/main.php et ajoute ceci :


<meta property="og:title" content="<?php echo $this->getData(['config', 'title']); ?>">
<meta property="og:description" content="<?php echo $this->getData(['config', 'metaDescription']); ?>">

à partir de la ligne 11

 

Y a un mauvais point avec cette technique, si la page intègre un méta titre ou une méta description, ils ne seront pas utilisés pour les balises open graph ( et vis versa avec la technique de PeterRabbit). C'est pour ça que ce serait bien de développer un truc rapidos pour l'intégrer (c'est un gros plus pour les réseaux sociaux) :) .

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0
CroqueWeb    101

Bonsoir

Je n'avais pas saisi qu'il faut que ce soit le titre et la description de chacune des pages qui doit apparaître dans ces balises

Mon exemple ne permet d'afficher que le titre et la description commune à tout le site

Pour afficher ces renseignements automatiquement pour chaque page, voici comment procéder :

  • Edite core/core.php, et place les lignes de code ci-desous à la ligne 1963
	//  Affiche les meta titre & description pour l'open graph
	public function showOGmeta() {
	echo '<meta property="og:title" content="' . $this->core->output['metaTitle'] . '">';
	echo '<meta property="og:description" content="' . $this->core->output['metaDescription'] . '">';
	}
  • Edite ensuite core/layout/main.php et ajoute ceci ligne 11
<?php $layout->showOGmeta(); ?>

Tu auras alors les meta balises og renseignées avec le meta titre et la meta description de chacune de tes pages

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0
CroqueWeb    101
Il y a 9 heures, Rémi a dit :

Il faut ajouter les balises dans les méthodes ci-dessus. Le mieux serait de voir avec @cybertaf, @CroqueWeb ou @PeterRabbit pour faire un intégration dans une prochaine mise à jour du CMS ;) .

C'est un peu ce que je viens de faire, j'ai simplement ajouté une méthode, plutôt qu'ajouter les balises dans les méthodes existantes

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

  • Contenu similaire

    • Par PeterRabbit
      Ce serait parfois pratique d'intégrer un bout de code PHP directement dans une page de son site. Mais comment faire ?
      Utiliser le bouton " {;} " affiche le code, mais il ne s'exécute pas. Quand on intègre du PHP dans le source (<>), TinyMCE le supprime avant même qu'on enregistre la page. Les solutions présentées sur le net, comme celle-ci, ne semblent pas fonctionner, contrairement à ce qui est affirmé.  
      Et pourtant, c'est possible :
       

       
       
      L'autre jour, j'ai eu une idée bête : et si on faisait un détour ? Peut-être que Tiny n’interpréterait plus le code ?
      Bingo ! Un détour par les templates, et ça marche... 
       
      Tutoriel 
      Créez un nouveau fichier dans "core/vendor/tinymce/templates" et nommez-le "phpinfo.php". Éditez-le pour ajouter le code PHP : <?php phpinfo(); ?> Éditez le fichier de configuration de Tiny "core/vendor/tinymce/init.js" et ajoutez le nouveau template à la ligne 86 (par exemple). { title: "Php info", url: baseUrl + "core/vendor/tinymce/templates/phpinfo.php", description: "Affiche la configuration de PHP." }, Éditez votre page et placez-le à l'endroit voulu (+ > Modèle) – il faudra sans doute vider le cache du navigateur (CRTL MAJ Suppr sur Chrome ou Firefox entre autres) pour qu'il s'affiche dans la liste déroulante des thèmes :   

       
       
      Et voilà ! vous savez tout de la configuration de votre PHP directement depuis votre site ! 
       
      PS : Quand j'ai présenté le plugin "template" de TinyMCE l'an dernier en vantant son intérêt, je ne pensais pas que ça irait aussi loin. Et il doit y avoir encore pas mal de choses à découvrir...
    • Par Marie-Anne
      Salut à tous  
       
      je suis en train de travailler sur mon dernier point : l'optimisation du chargement des fichier javascript.
      Dans le fichier core.php si je rajoute l'attribut "async" a ce niveau : 
      // Détermine le type d'import en fonction de l'extension de la librairie $vendorFiles = json_decode(file_get_contents($vendorPath . 'inc.json')); foreach($vendorFiles as $vendorFile) { switch(pathinfo($vendorFile, PATHINFO_EXTENSION)) { case 'css': echo '<link rel="stylesheet" href="' . helper::baseUrl(false) . $vendorPath . $vendorFile . '">'; break; case 'js': echo '<script async src="' . helper::baseUrl(false) . $vendorPath . $vendorFile . '" ></script>'; break; Tout fonctionne bien, ma page fonctionne normalement sur mobile et gagne en temps d'affichage, mais un problème se pose, mon éditeur tinymce ne se charge plus 
      Quelqu'un aurait il une solution ? 
      j'utilise la version de CroqueWeb : TinyMCE plus complet
       
      Merci d'avance 
       
    • Par dangee
      Si comme moi, vous avez besoin de rajouter des balises "non conventionnelles" (comme itemtype ou itemprop ;)), vous ne pourrez pas avec la configuration de base de TInyMce.
      Pour modifier cela, ouvrez le fichier init.js dans le répertoire /core/vendor/tinymce et ajoutez le code suivant après la langue.
      //valid extended_valid_elements: "*[*]", verify_html : false, cleanup : false, et voilà :))