web-dev-qa-db-fra.com

Comment le plugin peut vérifier si une balise méta existe?

Donc, j'essaie de modifier un plugin. Ce plugin définit certaines balises méta dans la section head en utilisant addCustomTag (en ajoutant <meta property="og:...>, Etc.) Le problème est qu’elles ne doivent être ajoutées qu’une seule fois. Est-ce une bonne idée d'utiliser $woo = JResponse::getBody(); et de vérifier à l'intérieur avec preg_match()? Ma préoccupation ici est que JResponse est obsolète . L'événement utilisé est onContentAfterDisplay.

2
pl71

Ajoutez l’entrée une seule fois en ajoutant un champ à votre application et cochez-la chaque fois que vous souhaitez ajouter votre balise personnalisée.

$app = JFactory::getApplication();
if(!isset($app->metaloaded))
{
  $document->addCustomTag('<meta property="og:..."/>');
  $app->metaloaded = true;
}

Maintenant, si vous voulez l'appeler ailleurs ou si la fonction est appelée deux fois dans la même demande, la vérification l'empêchera de s'exécuter deux fois.

Pour vérifier au sein de balises personnalisées déjà existantes ajoutées par d'autres extensions, vous pouvez utiliser le code ci-dessous:

$document = JFactory::getDocument();
$headData = $document->getHeadData();
$existing = false

foreach($headData['custom'] as $tag)
{
   if($tag == $mytag) // or you can use if(strcmp($tag, $mytag) === 0))
   {
       $existing = true;
       break;
   }
}

// now if the tag does not exist, add your tag
if(!$existing)
{
    // add your tag here
}
1
Nagarjun