web-dev-qa-db-fra.com

Manière correcte d'ajouter des attributs à la balise HTML de la page Joomla?

J'utilise AngularJS pour ajouter des fonctionnalités plus avancées à plusieurs de mes pages d'articles Joomla. Sur ces pages, je dois ajouter l'attribut ng-app à la <HTML> tag sur ma page. Actuellement, la balise HTML normale pour mes pages Joomla (v3.3) ressemble à ceci;

<html prefix="og: http://ogp.me/ns#" xml:lang="en-gb" lang="en-gb">

et j'en ai besoin pour ressembler à ceci;

<html prefix="og: http://ogp.me/ns#" xml:lang="en-gb" lang="en-gb" ng-app="dataManager">

Cela doit être un peu dynamique car différentes pages peuvent nécessiter une directive ng-app différente. Existe-t-il un moyen approprié de faire cela dans Joomla?

J'importe actuellement AngularJS en utilisant les éléments suivants:

<?php 
    $document = JFactory::getDocument();
    $urlAngular = "http://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js";
    $document->addScript($urlAngular); 
?>

Merci pour toute aide que vous pouvez donner.

11
drobertson

Vous pouvez créer un plugin system comme ceci:

class plgSystemAddAttr extends JPlugin
{
    public function onAfterRender()
    {
        $document = JFactory::getApplication();
        $htmlString = $document->getBody();

        $dom = new DOMDocument();
        libxml_use_internal_errors(true);
        $dom->loadHTML($htmlString);
        libxml_use_internal_errors(false);
        $htmlTag = $dom->getElementsByTagName('html')->item(0);

        $domAttribute = $dom->createAttribute('ng-app');
        $domAttribute->value = 'dataManager';
        $htmlTag->appendChild($domAttribute);

        $document->setBody($dom->saveHtml());
    }
}
5
Farahmand

Vous pouvez utiliser PHP pour ajouter du contenu dynamique au fichier ng-app attribut.

Dans votre \templates\yourtemplate\index.php fichier, changement

<html prefix="og: http://ogp.me/ns#" xml:lang="en-gb" lang="en-gb" ng-app="dataManager">

à

<?php
if ( condition ) {
   $ngapp = "dataManager";
} else {
   $ngapp = "somethingElse";
}
?>
<html prefix="og: http://ogp.me/ns#" xml:lang="en-gb" lang="en-gb" ng-app="<?php echo $ngapp ?>">
1
johanpw