2012-11-24 7 views
5

मैं जूमला 2.5 के साथ कस्टम प्लगइन एक्सटेंशन का उपयोग कर रहा हूं। यह प्लग-इन मेरी साइट पर एक पृष्ठ के लिए लक्षित है। लेकिन किसी कारण से मैंने देखा कि यह प्रत्येक पृष्ठ पर सीएसएस फ़ाइल लोड करता है।जूमला प्लगइन एक्सटेंशन प्रत्येक पृष्ठ पर सीएसएस फ़ाइल लोड करता है

प्लगइन लोड इस सीएसएस फ़ाइल के लिए कोड:

$doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css'); 

मुझे लगता है कि यह एक आम बात है, लेकिन मैं प्लग-इन के बारे में यकीन नहीं है। क्या मैं इसे केवल उस पृष्ठ को लागू कर सकता हूं जो मैं चाहता हूं कि प्रत्येक पृष्ठ के बजाय। इस पर डीबग करने के बारे में कोई भी विचार सराहना की जाएगी।

प्लगइन एक लेख पेज पर एक साधारण तालिका प्रिंट और प्लगइन फ़ंक्शन का उपयोग करता onContentPrepare

+0

पर लोड सीएसएस प्लगइन क्या कर रहा है? उदाहरण के लिए यदि यह किसी विशिष्ट वर्ग/आईडी को लक्षित कर रहा है तो आप कक्षा/आईडी की खोज कर सकते हैं और यदि यह मौजूद है तो सीएसएस फ़ाइल शामिल करें। –

उत्तर

5

इन स्निपेट का प्रयोग कर अपनी समस्या का प्रबंधन करने के:

1) की जाँच करके लोड सीएसएस सक्रिय मेनू आइटम

$menu = &JSite::getMenu(); 
$menuItem = $menu->getActive(); 
$Itemid = $menuItem->id; 
if($Itemid!=1) 
{ 
$doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css'); 
} 

2) घटक पर लोड सीएसएस

if (JRequest::getCmd('option') == 'com_k2'){ 
     $doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css'); 
} 

3) केवल मुख पृष्ठ में लोड सीएसएस

<?php if(JRequest::getInt('Itemid') == $menu->getDefault()) { 
    $doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css'); 
}?> 

4) सक्रिय मेनू आईडी पर लोड सीएसएस

<?php 
$menuID = JSite::getMenu()->getActive()->id ; 
    if ($menuID == '6') 
    { 
    $doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css'); 
    } 
?> 

5) सक्रिय भाषा पर लोड सीएसएस:

$lang =& JFactory::getLanguage(); 
switch ($lang) { 
case 'en-gb': 
$doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css'); 
break; 
} 

6) उपयोगकर्ताओं पर लोड सीएसएस

$user =& JFactory::getUser(); 
if($user->get('id')==0){ 
//user is logged in 
$doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css'); 
} 

7) यूआरएल

$u =& JFactory::getURI(); 
if($u=="http://www.example.com/joomla/index.php?task=view&id=12&Itemid=29") 
{ 
$doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css'); 
} 
+0

आह! # 1 ने किया। @Lodder के रूप में वह करीब था। विकल्प की महान सूची btw! धन्यवाद। – Tom

+0

Gracias दोस्त, खुशी है कि मैं मदद करने में सक्षम था – Theodore

0

निम्नलिखित की तरह कुछ का उपयोग कर प्रयास करें:

$application = JFactory::getApplication(); 
$menu = $application->getMenu(); 
$item = $menu->getItem(1); 
if ($item == 1){ 
    $doc = JFactory::getDocument(); //Remove it you already have this line 
    $doc->addStyleSheet($pluginAssetsUrl . '/css/aecuserpage.css'); 
} 

बदलें संख्या "1" को मेनू आइटम पृष्ठ पर का है।

कृपया ध्यान दें कि मैंने इसका परीक्षण नहीं किया है, इसलिए यह बताएं कि यह काम करता है या नहीं। यदि ऐसा नहीं होता है, तो मैं देखता हूं कि मैं क्या खोद सकता हूं।

+0

बंद करें, धन्यवाद। यह कोड निश्चित रूप से इसे अधिकतर लोडिंग से रोकता है (विचित्र रूप से यह अभी भी साइट की जड़ पर दिखाई देता है)। मैं मेनू आइटम आईडी के साथ खेल रहा हूं क्योंकि यह अब उस पृष्ठ पर काम नहीं करता है जिसके साथ मैं इसे काम करना चाहता हूं ... श्वास। अगर 'getMenu' या' getItem' वह कर रहे हैं जो कर रहे हैं तो मैं और अधिक शोध करूंगा। – Tom

+0

कोई भाग्य के साथ, सबकुछ कोशिश की। कोशिश की 'getItems (' menutype ',' mymenu ')' जो कम से कम कुछ देता है। 'getItem' नहीं करता है। कोई अन्य विचार? – Tom

0

मुझे नहीं लगता कि Itemidplugin के अंदर काम करेगा। मेरे पास एक सुझाव है कि आप सीएसएस कोड को टेम्पलेट index.php में ले जाएं और उस आइटम की स्थिति को जांचें जो यह वहां काम करेगा।

0

प्लगइन किस घटना का जवाब दे रहा है? इसमें क्या समूह है? कई घटनाओं के लिए आप पृष्ठ के $ संदर्भ की जांच कर सकते हैं। यदि आप जानते हैं कि यह केवल एक निश्चित पृष्ठ पर लोड होगा जो उन पहचानकर्ताओं का उपयोग करेगा।

उदा

अगर ($ params-> प्राप्त ('show_item_navigation') & & ($ संदर्भ == 'com_content: यहाँ पृष्ठांकन प्लगइन से एक पंक्ति है।लेख ') & & ($ दृश्य ==' लेख ')) {

या इस loadmodule से

$canProceed = $context == 'com_content.article'; 
    if (!$canProceed) { 
     return; 
    } 
+0

घटना है: 'onContentPrepare' – Tom

+0

ठीक है ताकि प्रत्येक पृष्ठ पर ऐसा हो। तो आप क्या करना चाहते हैं यदि एक ($ संदर्भ! = जो भी हो) {वापसी;} कुछ अन्य सामग्री प्लगइन देखें जो आप देखेंगे कि मूल रूप से आप यूआरएल की जांच कर रहे हैं। – Elin

+0

मुझे यकीन नहीं है कि मैं समझता हूं कि "जो भी" हिस्सा है? अन्य प्लगइन्स में आपके सामान में कुछ सामान होते हैं लेकिन मुझे यकीन नहीं है कि उनका क्या मतलब है। उदाहरण के लिए loadmodule मुझे नहीं पता कि 'com_content.article' क्या है। – Tom

संबंधित मुद्दे