Joomla पेज के HTML टैग में विशेषताएँ जोड़ने का उचित तरीका?


11

मैं अपने जूमला लेख के कई पन्नों में कुछ और उन्नत कार्यक्षमता जोड़ने के लिए AngularJS का उपयोग कर रहा हूं। इन पृष्ठों पर मुझे <HTML>अपने पृष्ठ के टैग में एनजी-ऐप विशेषता जोड़ने की आवश्यकता है । वर्तमान में मेरे जूमला (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">

यह थोड़ा गतिशील होने की जरूरत है क्योंकि विभिन्न पृष्ठों के लिए अलग-अलग एनजी-ऐप निर्देश की आवश्यकता हो सकती है। क्या जूमला में ऐसा करने का उचित तरीका है?

मैं वर्तमान में निम्नलिखित का उपयोग करके AngularJS आयात कर रहा हूं:

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

आप को भी मदद दे सकते हैं उसके लिए धन्यवाद।


आप वर्तमान में केवल उन पृष्ठों में AngularJS और ऐसा कैसे जोड़ रहे हैं?
डेविड फ्रिट्च

मैं उन पृष्ठों में AngularJS जोड़ रहा हूँ जिनके साथ PHP कोड का एक सरल ब्लॉक है। यहाँ कोड का उपयोग किया गया है; <pre> {स्रोत} <? php $ document = JFactory :: getDocument (); $ urlAngular = " ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js "; $ document-> addScript ($ urlAngular); ?> {/ स्रोत} </ प्री>
drobertson

माफ कर दिया कोड के लिए क्षमा करें। मैं यह पता नहीं लगा सका कि 5 खंडों को देखने के लिए मुझे इसे कैसे संपादित करना है।
ड्रबर्टन

@DougRobertson - आप अपने प्रश्न को अपडेट किए गए कोड के लिए अपडेट कर सकते हैं;) मैंने आपके प्रश्न को तदनुसार संपादित किया है
Lodder

जवाबों:


5

आप 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());
    }
}

धन्यवाद, यह वही है जिसकी मुझे तलाश थी। मैं सिस्टम प्लगइन पर काम करूंगा। अल्पावधि में क्या यह संभव है कि लेख के अंदर PHP से एम्बेडेड यह वही काम करे?
drobertson

DOMDocument Html संरचना के प्रति बहुत संवेदनशील है। यदि यह दस्तावेज़ को लोड करने में विफल रहता है, तो यह बड़े पैमाने पर विफल रहता है और मामूली एचटीएमएल त्रुटि को पुनर्प्राप्त करने का कोई तरीका नहीं है। मैं एक सीधा preg_replace पसंद करता हूं ।
आइबियल

@DougRobertson AFAIK, नहीं यह संभव नहीं है। BTW मैं AngularJS से परिचित नहीं हूं, लेकिन यदि क्लाइंट पक्ष में विशेषता का उपयोग किया जाता है, तो आप इसे क्लाइंट पक्ष में भी परिभाषित कर सकते हैं। एक jQuery का उदाहरण:$('html').attr('ng-app', 'dataManager');
फरहमान

@ फ़री मैंने ऐसा करने पर विचार किया, लेकिन भार के अनुक्रम में मुश्किल आ गई। अगर मैं एटर के प्लेसमेंट को नियंत्रित कर सकता हूं, ताकि यह विशेष रूप से एंगुलरजेएस के प्रारंभ होने से पहले हो जाए तो आपका विचार एक महान हो सकता है। अब तक मैंने उस खरगोश के छेद को नीचे नहीं गिराया है।
drobertson

1

आप ng-appविशेषता में गतिशील सामग्री जोड़ने के लिए PHP का उपयोग कर सकते हैं ।

अपनी \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 ?>">

इस दृष्टिकोण का उपयोग करके मुझे हर उस पृष्ठ के लिए मास्टर टेम्पलेट को संशोधित करना होगा जिसे मैं जोड़ना चाहता था। यह काम करेगा, लेकिन यह बहुत ही अस्पष्ट है क्योंकि मैं अधिक पृष्ठ और एनजी-ऐप जोड़ता हूं। मैं एक विशेषता को जोड़ने के तरीके के लिए और अधिक देख रहा हूँ कि कैसे हम एक स्क्रिप्ट के संदर्भ को जावास्क्रिप्ट लाइब्रेरी में सम्मिलित करते हैं। क्या इसे करने का कोई तरीका है?
drobertson

1
संभवतः एक सिस्टम प्लगइन सबसे आसान तरीका होगा। यह क्लाइंट को सेवा देने से पहले प्रदान किए गए HTML में हेरफेर कर सकता है, और यह निर्धारित करने के लिए सभी सत्र डेटा उपलब्ध हैं कि कौन सी विशेषताएँ आपके लिए उपयुक्त हैं।
Riccardo Zorn
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.