Jhtml :: স্ক্রিপ্ট অর্ডার - jQuery লোড না হওয়া পর্যন্ত স্থগিত কিভাবে?


11

আমি JHtml::scriptকাস্টম-বিকাশযুক্ত মডিউলটিতে আমার পৃষ্ঠাগুলিতে স্ক্রিপ্ট যুক্ত করতে ব্যবহার করি । যাইহোক, এই স্ক্রিপ্টগুলি জিকুয়েরিতে জে 3 যুক্ত করার আগে মাথায় ইনজেকশন দেওয়া হয় - উদাহরণস্বরূপ:

<!-- my module js -->
<script src="/modules/mod_tiles/js/jquery.isotope.min.js" type="text/javascript"></script>
<script src="/modules/mod_tiles/js/jquery.hoverintent.min.js" type="text/javascript"></script>
<script src="/modules/mod_tiles/js/mod_tiles.js" type="text/javascript"></script>
<!-- then joomla loads jQuery --->
<script src="/media/jui/js/jquery-noconflict.js" type="text/javascript"></script>
<script src="/media/jui/js/jquery.min.js" type="text/javascript"></script>

অন্য কোনও স্ক্রিপ্টগুলির আগে আমি জুমলা কীভাবে jQuery লোড করতে বাধ্য করতে পারি?

উত্তর:


15

আপনার ফোন করা উচিত

JHtml::_('jquery.framework');

আপনার অন্যান্য JHtml :: স্ক্রিপ্টের আগে। এএআইএআইএইকি এটি নিশ্চিত করে যে jQuery প্রথমে লোড হয়েছে।


এটি আমার জন্য কাজ করা একমাত্র সমাধান - mod_tiles.phpপ্রথমে লোড করার জন্য এই বাধ্যতামূলক jQuery এ রাখা হয়েছিল । ধন্যবাদ!
কোডিংহ্যান্ডস


2

আমি যদি আপনার প্রশ্নটি সঠিকভাবে পড়ি তবে আপনি নিজের মডিউলটি বিকাশ করছেন।

এটি ডিফল্ট.এইচপি-তে চেষ্টা করুন - মডিউলটির দর্শন ("tmpl" তে):

JHtml::stylesheet('modules/'.$module->module.'/assets/css/yourfile.css');

JHtml::script('modules/'.$module->module.'/assets/js/yourscript.js');

অথবা এটা :

JHtml::_('stylesheet', 'modules/'.$module->module.'/assets/css/anotherfile.css');

JHtml::_('script', 'modules/'.$module->module.'/assets/js/othercript.js');

উভয় ক্ষেত্রেই, আপনার জেএস ফাইল (গুলি) জিকুয়েরির পরে ইনজেকশন করা উচিত, এটি সরবরাহ করে যে আপনি একটি "সম্পদ" ফোল্ডার তৈরি করেছেন এবং ভিতরে "সিএসএস" এবং একটি "জেএস" ফোল্ডার তৈরি করেছেন।

দ্বিতীয় সমাধানটি জুমলা ৩.XX এপিআই অনুসারে বেশি।

আশা করি এটা সাহায্য করবে.


আমি এখানে কেবলমাত্র পরিবর্তনটি assetsফোল্ডার যুক্ত করা ছিল - এটি কোনও আলাদা করে তোলে না এবং jQuery করার আগে স্ক্রিপ্টগুলি এখনও লোড হয়। আমি এই ধরণের কোডটি টেমপ্লেট ফাইলে রাখার মতো প্রজ্ঞার বিষয়েও অবাক হই (বিশেষত যদি একই স্ক্রিপ্ট,
ডিআরওয়াই

হেইম, আপনার মন্তব্যটি অদ্ভুত -> "এই ধরণের কোডটি একটি টেম্পলেট ফাইলে রেখে দেওয়া"। আমি ছিলাম, এবং সম্ভবত এটি যথেষ্ট পরিষ্কার ছিল না, আপনার দ্বারা বিকাশিত এবং আইসোটোপ.জেএস এবং অন্যান্য জেএস স্ক্রিপ্টগুলির উপর ভিত্তি করে তৈরি একটি মডিউল সম্পর্কে কথা বলছিলেন। আমি ভুল হলে আমি দুঃখিত এবং আপনি আসলে তৃতীয় পক্ষের মডিউল ব্যবহার করছেন যা মোড_টাইলস। বিটিডাব্লু, টেমপ্লেটে জেএস স্ক্রিপ্টগুলি সন্নিবেশ করার অন্যান্য উপায় রয়েছে।
গজল

দুঃখিত, আমি এত কঠোর হাহা শব্দ বলতে চাইনি! খুব তাড়াতাড়ি হওয়া উচিত ... আপনি ঠিক বলেছেন, আমি যা করছি তা - এটি আমার মডিউল। আমি কি টেমপ্লেট ফাইল দ্বারা বোঝানো ছিল default.phpমধ্যে tmplমডিউলের (টেমপ্লেট) ফোল্ডার। আমার মনে হয় স্ক্রিপ্টগুলি (ভিউ) mod_tiles.phpপরিবর্তে default.php( 'নিয়ন্ত্রণকারী') এ লোড করা উচিত ।
কোডিংহ্যান্ডস

এটি একটি tmpl / default.php এ স্থাপন করা ওভাররাইডগুলিকে অনুমতি দেয়। Mod_tiles.php এ এটি ওভাররাইড করা যায় না।
sovainfo

2

আমি গত সপ্তাহে এই সমস্যার মধ্যে পড়েছিলাম এবং এটি যেখানে আমি জেএইচটিএমএল :: স্ক্রিপ্ট কল করছিলাম তার সাথে সম্পর্কিত। আপনি কি আপনার দর্শন বা দেখার টেমপ্লেটে এটি করছেন? আপনি যদি ভিউটিতে নিজেই স্ক্রিপ্টগুলি যুক্ত করার চেষ্টা করেন (দেখুন / আপনার মতামত / ভিউ html.php) এটি জুমলার নিজস্ব স্ক্রিপ্টগুলির আগে সন্নিবেশ করা হবে, তবে আপনি যদি টেমপ্লেটে স্ক্রিপ্টগুলি যুক্ত করেন (ভিউ / আপনার ভিউ / টিএমপিএল / default.php) এগুলি জুমলার স্ক্রিপ্টগুলির পরে .োকানো হবে।

শুভকামনা!


এটি কেবলমাত্র Mod_tiles.php, একটি হেল্পার.এফপি ফাইল এবং একটি একক টেম্পলেট (ডিফল্ট.এফপি) সহ একটি মডিউল tmpl। আমি দুটি মোড_টাইল.পিপি এবং ডিফল্ট.এফপি - এ উভয় স্ক্রিপ্ট যুক্ত করার চেষ্টা করেছি jQuery এর আগে উভয়ই লোড।
কোডিংহ্যান্ডস

0

এটি সম্ভবত বিকাশকারী mod_tilesস্ক্রিপ্টগুলি আমদানি করতে যে পদ্ধতির ব্যবহার করেছে to আমি ধরে নিচ্ছি যে তারা এই পরিস্থিতিতে জুমলা কোডিং মানকে আটকেছে না।

আপনার কাছে দুটি বিকল্প রয়েছে (যা আমি ভাবতে পারি) hwre:

  1. স্ক্রিপ্টগুলি মডিউলটির মধ্যে tmpl ফোল্ডারের মধ্যে কোনও ফাইল থেকে আমদানি করা হচ্ছে , আপনি একটি টেম্পলেট ওভাররাইড সম্পাদন করতে পারেন এবং স্ক্রিপ্টটি আমদানি করার পদ্ধতিটি ব্যবহার করে পরিবর্তন করতে পারেন JHtml
  2. আপনি jQuery ইজি ডাউনলোড এবং ইনস্টল করতে পারেন যা একটি প্লাগইন যা jQuery আমদানি করে এবং অন্যান্য স্ক্রিপ্টগুলির উপরে রাখে।

আশাকরি এটা সাহায্য করবে


আমি মডিউলটি তৈরি করেছি - আমার কোন পদ্ধতিটি ব্যবহার করা উচিত? আমি এটি একটি প্রশ্নে জিজ্ঞাসা করেছি ( joomla.stackexchange.com/questions/325/… ) এবং জেএইচটিএমএলকে বলা হয়েছিল: স্ক্রিপ্টটি এগিয়ে যাওয়ার পথ।
কোডিংহ্যান্ডস

0

আমি সত্যতা পরে আমার বিট যোগ করতে চেয়েছিলেন। আমি বেশ কয়েকটি স্ক্রিপ্ট এবং স্টাইল শীট পেয়েছি যা আমাদের উপাদানগুলির প্রতিটি দৃশ্যের জন্য লোড করা দরকার, এবং একটি বিন্দুও চেয়েছিল যাতে তা নিশ্চিত হয়ে যায় যে সেগুলি সঠিক ক্রমে লোড হয়েছে।

ফাইলটিতে components\myComponent\mycomponent.php:

defined('_JEXEC') or die;

// Include dependancies
jimport('joomla.application.component.controller');

JHtml::stylesheet('http://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css', array(), true);
JHtml::stylesheet('components/com_mycomponent/assets/css/mycomponent.css');

JHtml::_('jquery.framework');   // Make sure jQuery is loaded before component JS
JHtml::script( 'components/mycomponent/assets/js/jquery.cookie.js');

// Execute the task.
$controller = JControllerLegacy::getInstance('Mycomponent');
$controller->execute(JFactory::getApplication()->input->get('task'));
$controller->redirect();

-1

আমি জানি এটি একটি পুরানো বিষয় তবে আপনি কি কখনও এর নীচে পৌঁছেছেন? আমি সবেমাত্র একই সমস্যাটি পেয়েছি। আমি CAUSE সনাক্ত করেছি তবে সমস্যা / সমাধান নয়; আমার কাছে একটি লুক্কায়িত সন্দেহ আছে যে এটি একটি বিইউজি তবে এটি চেষ্টা করে অন্য কারও সাথে করতে পারি।

পরিস্থিতি: আপনি একটি মডিউল তৈরি করেছেন যাতে একটি jQuery নির্ভর স্ক্রিপ্ট অন্তর্ভুক্ত থাকে যাতে আপনি নিম্নলিখিতটি আপনার ডিফল্ট.এফপি ভিউতে ব্যবহার করেন:

$doc = JFactory::getDocument();
$doc->addScript("media/mod_accordion/js/accordion.js");

তারপরে আপনি মডিউলটি ইনস্টল করুন এবং এটিকে একটি মডিউল অবস্থান দিন, বলুন 'বাম'। যখন আপনি সম্মুখ প্রান্তের উত্স কোডটি দেখেন সবকিছু ভাল লাগে, সমস্ত স্ক্রিপ্টগুলি এতে অন্তর্ভুক্ত স্ক্রিপ্টগুলির পরে লোড হয়

JHtml::_('bootstrap.framework');

আপনি যদি মডিউলটিকে একটি অবস্থান 'অ্যাকর্ডিয়ান' দেন এবং জুমলা লোডপজিশন বৈশিষ্ট্যটি কোনও নিবন্ধে মডিউল যুক্ত করতে ব্যবহার করেন তবে

{loadposition accordion}

তারপরে বুটস্ট্র্যাপ.ফ্রেমওয়ার্ক ফাইলগুলির আগে অ্যাকর্ডিয়ন.জেস যুক্ত হয়।

আমি এটিকে কাজে লাগাতে সক্ষম হয়েছি স্ক্রিপ্টটিকে মাথায় অন্তর্ভুক্ত না করে একটি ইনলাইন স্ক্রিপ্ট হিসাবে যুক্ত করা।

সম্পাদনা: সিএসএস সহ একই কাজ; এটি সিএসএস ঘোষণার তালিকার শীর্ষে যুক্ত করা হচ্ছে (টেমপ্লেট এবং বুটস্ট্র্যাপ CSS ফাইলগুলির আগে)। এর জন্য বোডটি সিএসএস ঘোষণায় গুরুত্বপূর্ণ!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.