2013-05-23 8 views
8

मैं अपने कस्टम Joomla टेम्पलेट हैडर, जो मैं इस के अलावा सब कुछ दूर करने के लिए प्रबंधित किया है से अवांछित लिपियों दूर करने के लिए कोशिश कर रहा हूँ:जूमला 3. एक्स - हेडर से टूलटिप स्क्रिप्ट निकालें?

<script type="text/javascript"> 
jQuery(document).ready(function() 
       { 
        jQuery('.hasTooltip').tooltip({}); 
       }); 
    </script> 

मैं घंटों के लिए खोज की है और मैं करने के लिए कई बातें की कोशिश की है इसे हटा दें, लेकिन मुझे इससे छुटकारा नहीं मिल रहा है। यहाँ मैं क्या अन्य लिपियों मैं नहीं चाहता (किसी और को जो इस मुद्दे है के लिए) को हटाने के लिए किया गया है:

# unset frameworks 
JHtml::_('bootstrap.framework',false); 
JHtml::_('jquery.framework',false); 

# unset scripts 
unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery.min.js']); 
unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery-noconflict.js']); 
unset($doc->_scripts[$this->baseurl.'/media/jui/js/bootstrap.min.js']); 

कोई मुझे कि टूलटिप जावास्क्रिप्ट को दूर करने में मदद कर सकता है, कि शानदार होगा। ओह और मैं कोर फाइलों को छूना नहीं चाहता, इसलिए मैं इसे टेम्पलेट index.php फ़ाइल से खुद को हटाने की कोशिश कर रहा हूं।

+0

वहाँ 3.4.0 में इस मुद्दे के लिए एक स्पष्ट ठीक होने के लिए प्रकट नहीं होता। –

उत्तर

4

कुछ घटक/मॉड्यूल/प्लगइन फ़ंक्शन JHTML :: _ ('behavior.tooltip') को कॉल कर रहा है। और वह फ़ंक्शन आपका कोड जोड़ता है।

आप कर सकते हैं:

गंदा तरीका: पुस्तकालयों के लिए \ सेमी \ एचटीएमएल \ bootstrap.php जाने के लिए और विधि टूलटिप पर फ़ाइल बदल()। लेकिन याद रखें कि यह एक मूल फ़ाइल है इसलिए अपग्रेड आपके परिवर्तनों को ओवरराइड कर सकता है।

स्वच्छ तरीका, इस कोड को जोड़ने और इसे हटाने या बदलने के लिए घटक ढूंढें।

unset($this->_script['text/javascript']); 

अस्वीकरण::

गुड लक

+1

में काम नहीं कर रहा है जेएचटीएम :: _ ('bootstrap.tooltip') को कॉल करने वाले घटक; (जिनमें से बहुत सारे हैं) इस कोड को भी जोड़ा जाएगा। –

3

आपको मैन्युअल रूप से $doc->_script विश्लेषण करना होगा। $doc->_scripts सरणी में स्क्रिप्ट शामिल हैं जो किसी अन्य स्रोत से जुड़े हुए हैं जबकि $doc->_script टूलटिप की तरह स्क्रिप्ट घोषणाओं के लिए है।

+0

मैंने $ doc -> _ स्क्रिप्ट का उपयोग करने का प्रयास किया है, लेकिन यह टूलटिप कोड नहीं उठाता है - सरणी खाली हो जाती है। – SoulieBaby

+0

जेएचटीएमबूटस्ट्रैप :: टूलटिप() से शुरू होने वाले कोड के माध्यम से कदम, जहां जेएस स्निपेट जेनरेट किया गया है, आप देखेंगे कि स्निपेट $ doc -> _ स्क्रिप्ट पर सेट है। इस समय आप एक खाली सरणी क्यों प्राप्त कर रहे हैं, लेकिन आप सही जगह पर देख रहे हैं। – Michael

+0

मुझे पता चला है कि यह कोड कहां जोड़ता है, लेकिन मैं इसे हटाने के लिए कोर को हैक करना नहीं चाहता हूं। मैंने टेम्पलेट इंडेक्स फ़ाइल के शीर्षलेख और पाद लेख में $ doc -> _ स्क्रिप्ट सरणी को प्रतिबिंबित करने का भी प्रयास किया है, लेकिन फिर भी कुछ भी नहीं मिला है। – SoulieBaby

2

मैं अपने टेम्पलेट के index.php फ़ाइल में इस कोड का उपयोग एम्बेडेड जावास्क्रिप्ट से छुटकारा पाने में कामयाब रहा एक PHP डेवलपर नहीं कर रहा हूँ, इसलिए कोड ऊपर का उपयोग अपने जोखिम पर :)

1

मैं पहले से ही इस मुद्दे को पूरा कर चुका हूं, मैं जूमला 3 का उपयोग कर रहा हूं। यदि यह आपका मामला है तो आप इसे करके इसे हल कर सकते हैं: जूमला 3 बोर्ड पर jQuery के साथ आता है, इसलिए जूमला जोड़कर स्वयं, यह समस्या उत्पन्न कर सकता है। यह भी सुनिश्चित करें कि आप अपने jQuery को <jdoc:include type="head" /> पर शामिल करें। यदि आप जरूरी है कि इसे शामिल करना चाहते हैं। लेकिन मैं इसकी सिफारिश नहीं करता हूं। आशा इस

2

में मदद करता है Joomla documents के आधार पर, 2 बातों पर विचार करने के लिए:

क) नीचे दिए गए कोड में, आप वास्तव में बूटस्ट्रैप और jQuery सहित सक्षम कर रहे हैं /:

# unset frameworks 
JHtml::_('bootstrap.framework',false);// including bootstrap! 
JHtml::_('jquery.framework',false);// including jquery! 

जब बूटस्ट्रैप सक्षम किया गया है , जूमला स्वचालित रूप से jquery को सक्षम करता है, और यदि जूमला सक्षम jquery, joomla स्वचालित रूप से टूलटिप को सक्षम बनाता है।

बस इन कार्यों को कॉल न करें। unset आप बूटस्ट्रैप और jQuery सही ढंग से निकाल देंगे प्रयोग किया है:

unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery.min.js']); 
unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery-noconflict.js']); 
unset($doc->_scripts[$this->baseurl.'/media/jui/js/bootstrap.min.js']); 
unset($doc->_scripts[$this->baseurl.'/media/jui/js/jquery-migrate.min.js']); 

ख) यदि टूलटिप स्क्रिप्ट अभी भी शामिल किया गया है, यह शायद इस्तेमाल किया घटक में कहीं JHtml::_('behavior.tooltip'); द्वारा डाला जाता है।

आखिरकार, कभी भी जूमला कोर फ़ाइलों को कभी संशोधित न करें। यह एक सबसे बुरा अभ्यास है।

पीएस। उन लोगों के लिए जिन्होंने टूलटिप स्क्रिप्ट डाली है, लेकिन उन्हें $doc में नहीं मिला है, ऐसा इसलिए है क्योंकि $doc में इनलाइन स्क्रिप्ट शामिल नहीं हैं।

3

अपने वेब रूट index.php के अंत में (टेम्पलेट नहीं, http://domain.com/index.php) $ app-> execute() को प्रतिस्थापित करें; निम्नलिखित के साथ कतार:

// Start the output buffer. 
ob_start(); 

// Execute the application. 
$app->execute(); 

// Get buffer 
$buffer = ob_get_clean(); 

// Change HTML 
$buffer = str_replace('<script type="text/javascript">'.chr(10).'jQuery(document).ready(function(){'.chr(10).' jQuery(\'.hasTooltip\').tooltip({"html": true,"container": "body"});'.chr(10).'});'.chr(10).' </script>','',$buffer); 

// Output buffer 
echo($buffer); 

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

एचटीएमएल कर के अलावा इस तरह पुनर्लेखन करता है, तो आप भी साफ उत्पादन, लिंक मॉड्यूल के लिए, को दूर कर सकता है आदि

मैं भी एक वेबसाइट पर कॉपीराइट साल बदलने जैसे काम करने के लिए इस का उपयोग करें। एक मॉड्यूल स्थिति में, मैं के रूप में "{साल}" चालू वर्ष का संदर्भ और उसके बाद मैं एक str_replace जो निम्नलिखित करता जोड़ें:

$buffer = str_replace('{year}',date('Y'),$buffer); 

बिंगो, हमेशा चालू वर्ष को दर्शाता है।

का आनंद लें ...

1

मैं एक ही समस्या है जब मैं केवल HTML5, CSS3 और प्रभाव के लिए कुछ छोटे jQuery प्लगइन के साथ एक जूमला टेम्पलेट/साइट का निर्माण किया गया था। यह कुछ टूलटिप्स दिखाने के लिए भारी बूटस्ट्रैप को शामिल करने के योग्य नहीं था जिसे मैंने बिल्कुल भी उपयोग नहीं किया था।

हालांकि मैं पहले से ही सेट किए बिना मीडिया/जुई/js/JDocument से bootstrap.min.js लेकिन कोड

jQuery(document).ready(function(){ 
    jQuery('.hasTooltip').tooltip({"html": true,"container": "body"}); 
}); 

की इन पंक्तियों अभी भी पुस्तकालयों द्वारा/सेमी/html/bootstrap.php संलग्न किया गया। तो मुझे त्रुटि मिली "फ़ंक्शन टूलटिप नहीं मिला"।

मैंने हल किया कि मेरे टेम्पलेट की जेएस फ़ाइल में एक खाली फ़ंक्शन जोड़कर।

jQuery.fn.tooltip = function (option) { }; 
0

वहाँ एक जूमला प्लगइन उपलब्ध है जो बूटस्ट्रैप unsets है और यह भी निकालता है टूलटिप समारोह का टुकड़ा है जो किसी भी घटक में कहीं JHtml::_('behavior.tooltip'); द्वारा डाला जाता है।

See here: Disable Bootstrap Plugin

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