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.
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());
}
}
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 ?>">