2010-07-17 7 views
9

क्या किसी विशिष्ट आलेख पर टेम्पलेट को बदलने का कोई तरीका है? ध्यान दें कि इसे किसी भी मेनू में लेख को लिंक किए बिना काम करना चाहिए।जूमला: किसी विशिष्ट आलेख पर टेम्पलेट को कैसे बदलें

उत्तर

5

यदि आप चाहते हैं कि टेम्पलेट ओवरराइड मेनू मेनू पर एक अलग टेम्पलेट निर्दिष्ट करने के मानक जूमला तरीके से मेनू स्थिति पर निर्भर न हो, तो काम नहीं करेगा। आपको अपने हाथ गंदे होने और कुछ कस्टम कोड लिखने की आवश्यकता होगी। आपको टेम्पलेट स्विच के लिए ट्रिगर के रूप में article_id का उपयोग करने की आवश्यकता होगी।

मैंने काम पर ऐसा कुछ किया लेकिन अब याद नहीं है कि यह वास्तव में कैसे प्राप्त किया जाता है। जैसे ही मैं इसे ढूंढता हूं, मैं अपना कोड यहां पोस्ट करूंगा।

संपादित: मिले कोड :)

आप फ़ाइल /includes/application.php संपादित करने की जरूरत है, विशेष रूप getTemplate() विधि। तुम इतनी तरह एक कस्टम टेम्पलेट लागू करने के लिए अपने शर्त जोड़ सकते हैं

// Fallback template 
if (!file_exists(JPATH_THEMES.DS.$template.DS.'index.php')) { 
    $template = 'rhuk_milkyway'; 
} 

,: इस विधि के अंत में, बस से पहले पर

//CUSTOM TEMPLATE FOR THE ARTICLE 13 
if (JRequest::getVar('id')=='13' && JRequest::getVar('option')=='com_content') { 
    $template = $custom_template_name; 
} 

यह जो नाम $ के अंदर है कस्टम टेम्पलेट लागू होगी id = 13 के साथ आलेख में custom_template_name। तुम भी, इसका इस्तेमाल घटकों के लिए एक अलग ही टेम्पलेट का उपयोग कर सकते हैं जैसे मैं simplecaddy के साथ किया था:

//TEMPLATE FOR SIMPLECADDY 
if (JRequest::getVar('option')=='com_caddy'){ 
    $template = 'shop'; 
} 
1

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

आप इसे एकल लेख, श्रेणियां, अनुभाग या यहां तक ​​कि घटकों के साथ भी कर सकते हैं। जब तक आपके पास टेम्पलेट को संबद्ध करने के लिए मेनू लिंक हो। साइट को चलाने के लिए आवश्यक लिंक डालने के लिए मैं हमेशा एक व्यवस्थापक केवल मेनू बनाता हूं, लेकिन उपयोगकर्ताओं द्वारा एक्सेस करने की आवश्यकता नहीं है।

1

ब्रेंट ने कहा, कोर जूमला कोड को संशोधित करने के प्रलोभन से बचें! ऐसा करने से आपको जूमला अपग्रेड करने से रोक दिया जाएगा क्योंकि आप जानते हैं कि यह आपके द्वारा किए गए मूल परिवर्तनों को तोड़ने जा रहा है।

"छुपा मेनू आइटम" तकनीक के अलावा (जो उपयोगी है लेकिन कुछ परिस्थितियों में एसईएफ यूआरएल तोड़ सकता है), उपयोगी उपकरण Chameleon है। यह आपको विशिष्ट लेख/श्रेणियों/अनुभागों (साथ ही ब्राउज़र प्रकार, उपयोगकर्ता समूह, घटक, जो कुछ भी) का चयन करने और एक निश्चित टेम्पलेट को ट्रिगर करने के लिए इनका उपयोग करने की अनुमति देता है।

1

हालांकि यह एक पुरानी पोस्ट है, मैंने सोचा कि मैं अपने विचार साझा करूंगा: आप सिस्टम प्लगइन में onAfterInitialize() - फ़ंक्शन को कार्यान्वित करके आसानी से एक लेख पर टेम्पलेट बदल सकते हैं। जूमला कोर को संशोधित करने की कोई आवश्यकता नहीं है।

यह जूमला 1.5 के लिए काम करता है, लेकिन यह भी 2.5 में काम करना चाहिए:

function onAfterInitialise(){ 
    if(true){ // f.ex. test for article ID or whatever 
    JRequest::setVar('template', 'beez'); // change template 
    } 
} 

जूमला 3.x संस्करणों में, यूआरएल-पैरामीटर अलग ढंग से नियंत्रित किया जाता है। निम्नलिखित जूमला 3.4 में परीक्षण किया गया था।8:

public function onAfterInitialise() 
{ 
    $app=JFactory::getApplication(); 
    if(true){ // f.ex. test for article ID or whatever 
    $app->input->set('template', 'beez3'); 
    } 
} 

जूमला here

+0

मैं अपने कोड के साथ एक प्लगइन बनाने है, लेकिन के लिए प्लगइन्स लिखने पर अधिक जब मैं इस '' '$ app-> इनपुट-> प्राप्त की तरह वर्तमान घटक के लिए जाँच करने की कोशिश ('विकल्प') == "com_content" '' कुछ भी नहीं होता, क्या आप मेरी मदद कर सकते हैं? – ivayloc

+0

यह जांचने का प्रयास करें कि प्लग-इन फ़ंक्शन वास्तव में चल रहा है या नहीं, f.ex. print_r ($ app-> इनपुट) के साथ; मरने(); यहां आप यह भी देखेंगे कि $ app-> इनपुट ऑब्जेक्ट में कौन से पैरामीटर परिभाषित किए गए हैं ... – jonasfh

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