জুমলা ৩.৪.১ জে ক্যাপশন, কীভাবে জিকুয়েরির সাথে ডাকা হবে?


10

আমি নিম্নলিখিত পদ্ধতিগুলি দ্বারা নিষ্ক্রিয় মাথা, jquery এবং jcaption ফাইল থেকে JCaption মুছতে চাই :

unset($doc->_scripts[JURI::root(true) . '/media/jui/js/jquery.min.js']);
unset($doc->_scripts[JURI::root(true) . '/media/jui/js/jquery-noconflict.js']);
unset($doc->_scripts[JURI::root(true) . '/media/jui/js/jquery-migrate.min.js']);
unset($doc->_scripts[JURI::root(true) . '/media/system/js/caption.js']);

পূর্ববর্তী সংস্করণগুলিতে জ্যাক্যাপশন মুছতে যেখানে ব্যবহারের ক্ষেত্রে মটুলগুলি প্রয়োজন:

$this->_script = preg_replace('%window\.addEvent\(\'load\',\s*function\(\)\s*{\s*new\s*JCaption\(\'img.caption\'\);\s*}\);\s*%', '', $this->_script);

এটিকে jquery এ মুছে ফেলার জন্য আমিও চেষ্টা করেছি তবে প্রিগিরিপ্লেস () অভিজ্ঞতা আমার নেই, মাথা থেকে জেটিপিসিয়ন মুছতে কী করতে হবে?

আমার কোড:

$this->_script = preg_replace('%jQuery\(window\)\.on(\'load\',\s*function\(\)\s*{\s*new\s*JCaption\(\'img.caption\');\s*}\);\s*%', '', $this->_script);

উত্তর:


5

এটি খুব পুরানো প্রশ্ন এবং সম্ভবত এটি আর কেউ পড়ে না, তবে যাই হোক আমি আমার উত্তর পোস্ট করব।

JQueryক্যাপশনের জন্য রেজিজেসে আপনার ত্রুটি রয়েছে। আপনার বিন্দুগুলি থেকে বাঁচার দরকার নেই তবে আপনাকে বিশেষ অক্ষরগুলি থেকে বাঁচতে হবে। এবং আপনাকে অ্যারেতে সঠিক কীটিও লক্ষ্য করা দরকার যাতে আপনাকে ['text/javascript']স্ক্রিপ্ট অবজেক্টটি কল করার পরে যুক্ত করতে হবে ।

সুতরাং সঠিক রেজেক্স / পূর্ববর্তী স্থানটি হ'ল:

$this->_script['text/javascript'] = preg_replace('%jQuery\(window\).on\(\'load\',\s*function\(\)\s*\{\s*new\s*JCaption\(\'img.caption\'\)\;\s*\}\)\;\s*%', '', $this->_script['text/javascript']);

এত দিন আগে আমি রেইজেক্সের সাথেও লড়াই করে যাচ্ছিলাম তবে এই সাইটটি অনেক সহায়তা করেছে: http://regexr.com/ আপনি যদি সাইটটি চেষ্টা করে দেখেন তবে আপনাকে খালি এবং বন্ধ ট্যাগগুলি ব্যবহার করার দরকার নেই কারণ এটি ইতিমধ্যে স্বয়ংক্রিয়ভাবে সেখানে রয়েছে ।


একক উদ্ধৃতি এড়ানোর জন্য, ডাবল উদ্ধৃতিতে প্যাটার্নটি মোড়ানো। সেমিকোলনগুলি এড়ানোর দরকার নেই। যদিও বিন্দুগুলি থেকে রক্ষা পাওয়া এখনও এই ক্ষেত্রে প্রত্যাশিত ফলাফলটি সরবরাহ করবে না, এটি আক্ষরিক বিন্দুর সাথে "কোনও চরিত্রের" মেটাচার্যাক্টারের চেয়ে মেলানো আরও সঠিক / দক্ষ, তাই আমি বিন্দুগুলি থেকে পালানোর পরামর্শ দিই।
মিকম্যাকুসা

4

এটা চেষ্টা কর:

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

এটা অসাধারণ! আমি ঐ সেট না ($ ডক সব পরিত্রাণ ->: _ স্ক্রিপ্ট কোডের লাইন এবং সঙ্গে 2. প্রতিস্থাপন
mmundiff

আমি আপনার জন্য একটি সহায়তা ছিল তা জেনে ভাল
লাগছে

আশা করি এটির মূল পোস্টারটি সহায়তা করেছে এবং তারা আপনাকে উত্তর হিসাবে গ্রহণ করবে! আবারও ধন্যবাদ
ম্যামুন্ডিফ

2

এটা চেষ্টা কর:

if (isset($this->_script['text/javascript']))
{ $this->_script['text/javascript'] = preg_replace('%window\.addEvent\    (\'load\',\s*function\(\)\s*{\s*new\s*JCaption\(\'img.caption\'\);\s*}\);\s*%',     '', $this->_script['text/javascript']);
if (empty($this->_script['text/javascript']))
unset($this->_script['text/javascript']);}
$this->_scripts = array();

0

আপনি যদি ইনজেকশনের স্ক্রিপ্ট ট্যাগটি আনসেট করতে কোনও প্লাগইন ব্যবহার করতে ইচ্ছুক হন তবে নীচেরগুলি কার্যকর হতে পারে।

public function onBeforeRender() {
    // Front end
    if ($this->app instanceof JApplicationSite) {
        $doc = JFactory::getDocument();

        foreach ($doc->_script as $key => $script) {
            if (stristr($key, 'text/javascript') !== false) {
                unset($doc->_script['text/javascript']);
            }
        }
    }
}

স্ট্রিংং স্ট্রিংয়ের অস্তিত্বের জন্য যাচাই করার সময় কেবল পিএইচপি ম্যানুয়ালই strstr()কম দক্ষ বলে ঘোষণা strpos()করে না, এই কার্যটি একটি স্ট্রিংয়ের সন্ধান করার প্রয়োজন নেই - $keyএটি পুরো স্ট্রিংয়ের মিল।
মিকম্যাকুসা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.