web-dev-qa-db-fra.com

Existe-t-il un événement du type "OnAfterCompileHead"?

Selon le titre, existe-t-il déjà un événement qui peut fonctionner comme une sorte de OnAfterCompileHead?

Peut-être que onAfterDispatch, onAfterRender ou onBeforeRender?

J'ai besoin de changer certaines balises méta dans le <head> comme canonical, title, etc.

4
Gruber

Je dois modifier ma réponse car je pense que je n'ai pas bien compris ce que vous voulez réellement au départ.

Avec tous les 3 événements, vous pouvez faire des changements sur la tête. Si vous avez d'autres plugins qui font la même chose, vous pouvez les commander à nouveau.

  • onAfterDispatch
  • onBeforeRender
  • onBeforeCompileHead

Pour éditer le <head> Les données:

La tête est stockée dans l'objet de document et vous pouvez y accéder et la manipuler facilement:

$doc = JFactory::getDocument();

$doc->setTitle('My Title');
$doc->setMetaData( 'tagname', 'tag content' );
$doc->addCustomTag( '<!-- this is a comment -->'); 

Exemples:

$doc->setMetaData( 'description', 'My Description' );
$doc->addCustomTag( '<meta property="og:title" content="Custom og Title tag">');

Vous pouvez également obtenir les données complètes de la tête avec:

$head = $doc->getHeadData();
// echo '<pre>' . print_r($head, true) . '</pre>';

Le $head est le tableau de données destiné au HTML <head> section sous forme de tableau.
Ceci ne renvoie que les données ajoutées par l'ensemble de méthodes du JDoc. Il ne renverra pas de données sur les fichiers liés directement à partir de HTML dans l'en-tête du modèle.

Vous pouvez ensuite définir les données sur le $head comme:

$head['metaTags']['standard']['keywords'] = 'keyword1, keyword2,...';

$doc->setHeadData($head);
5
FFrewin