web-dev-qa-db-ja.com

JoomlaページのHTMLタグに属性を追加する適切な方法?

AngularJSを使用して、いくつかのJoomla記事ページにさらに高度な機能を追加しています。これらのページで、ページの<HTML>タグにng-app属性を追加する必要があります。現在、Joomla(v3.3)ページの通常のHTMLタグは次のようになっています。

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

このように見えるようにする必要があります。

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

ページによって異なるng-appディレクティブが必要になる場合があるため、これは少し動的である必要があります。 Joomlaでこれを行う適切な方法はありますか?

現在、AngularJSを以下を使用してインポートしています。

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

あなたが与えることができるあらゆる助けをありがとう。

11
drobertson

次のようにsystemプラグインを作成できます。

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

PHPを使用して、動的コンテンツをng-app属性。

あなたの\templates\yourtemplate\index.phpファイル、変更

<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