শুধুমাত্র নির্দিষ্ট পৃষ্ঠায় একটি পৃথক jQuery সংস্করণ সহ


16

jQuery আপডেট মডিউলটি এই স্ক্রিপ্টটি সহ অন্তর্ভুক্ত রয়েছে।

<script type="text/javascript" src="/sites/all/modules/jquery_update/replace/jquery.min.js?6"></script>

আমি অভিনব বাক্স ব্যবহার করছি এমন একটি নির্দিষ্ট টেম্পলেট ফাইল ব্যতীত প্রতিটি পৃষ্ঠায় আমার এটি প্রয়োজন এবং জিকুয়েরির পরবর্তী সংস্করণ প্রয়োজন।

উপরের স্ক্রিপ্টটি $scriptsকেবলমাত্র পৃষ্ঠা-মিডিয়া-ফটো.tpl.php- এ চলকটিতে রাখা থেকে আমাকে jQuery আপডেট বাদ দিতে হবে । আমি কীভাবে এটি অর্জন করতে পারি?

উত্তর:


10

আপনার বিকল্পগুলি এখানে:

  • অন্য উত্তরে উল্লিখিত হিসাবে jQuery মাল্টি ব্যবহার করুন । এটি কেবলমাত্র সেই পৃষ্ঠায় এবং কেবল অভিনব বাক্সের জন্য jQuery এর উচ্চতর সংস্করণটি লোড করার জন্য কনফিগার করা যেতে পারে। এটি দ্রুপালের jQuery বা jquery_update এর jQuery এর সাথে হস্তক্ষেপ করবে না।
  • ড্রুপাল 7-এ, আপনি hook_js_alter () ব্যবহার করতে পারেন , যা আপনাকে jquery_update এর সংস্করণটি যা খুশি তাই বদলাতে দেবে।
  • JQuery আপডেট সহ ড্রুপাল 6 এ এটি একটি হুক সরবরাহ করে যা আপনাকে জেএস এর কাজটি করার পরে এটি পরিবর্তন করতে দেয়। আপনি এই হুকটি কীভাবে ব্যবহার করেন তা দেখতে আপনি jQuery মাল্টি 6.x কোডটি দেখতে পারেন ।
  • JQuery আপডেট ছাড়াই ড্রুপাল 6 এ আপনি একটি প্রিপ্রসেস_পেজ হুক ব্যবহার করে এটি করতে পারেন। $scriptsপরিবর্তনশীল সেখানে উপলব্ধ হবে, এবং আপনি এটি পরিবর্তন করতে পারেন। এটি কিছুটা জটিল হয়ে উঠতে পারে। আপনি দেখতে পারবেন কীভাবে qmult এটি করে । jQuery আপডেটও এটি একইভাবে করে।

মনে রাখবেন যে উচ্চতর jQuery সংস্করণে অদলবদল করা ড্রুপাল কোরের কিছু জিনিসকে ভেঙে ফেলতে পারে এবং অবদান রাখতে পারে, যা jQuery মাল্টি সমাধান করে। সুতরাং আপনি যদি এটি করেন তা নিশ্চিত করুন যে আপনি কোনও কিছু ভঙ্গ করছেন না। এখানে সুবিধাটি হ'ল আপনি কেবল আপনার প্রয়োজনীয় jQuery লোড করুন, যখন jQuery মাল্টির সাথে আপনি উভয়ই লোড করবেন।


মনে রাখবেন, hook_js_alter উপলব্ধ d6 হয়
ডেভিড টমাস

2
পাশাপাশি D6 তথ্য রাখার জন্য উত্তরটি পরিবর্তন করা হয়েছে।
goron

আপনি jQuery এর একাধিক সংস্করণ চালাতে চাইলে আমি jQuery মাল্টি ব্যবহারের সাথে সম্মত। আপনি যদি আপনার পুরো সাইটের জন্য নতুন সংস্করণটি চালাতে চান তবে আমি কেবল jquery আপডেটের সুপারিশ করব। এছাড়াও, আমার অভিজ্ঞতা অনুসারে, jquery 1.7 এবং 1.8 এর জন্য jquery আপডেট এখনও উত্পাদনে ব্যবহার করতে বগি।
রোবি

3

একটি মডিউল jQuery মাল্টি আছে । এই মডিউলটি আপনাকে multiple versions of jQuery run parallelআপনার ড্রুপাল উদাহরণগুলিতে রাখতে দেয়। এটি aliasপ্রতিটি উদাহরণের জন্য একটি সরবরাহ করে যা আপনি jquery এর সেই সংস্করণটি কল করার জন্য ব্যবহার করতে পারেন।


3

আপনার যদি jqueryupdate নিয়ে সমস্যা হয় এবং অ্যাডমিন পৃষ্ঠাগুলি দেখে (উদাহরণস্বরূপ) টিটিওলের ডিভ সংস্করণ ইনস্টল করার চেষ্টা করুন এবং সবকিছু ঠিকঠাক হবে, কেবল নিজের পরীক্ষা করে দেখুন।


3

দয়া করে এই কোডটি সহায়ক হিসাবে সন্ধান করুন, এই কোডটি আপনার টেম্পলেট.এফপিটিতে রাখুন

function MYTHEME_preprocess_page(&$vars) {
  $scripts = drupal_add_js();
  if (in_array('page-media-photos', $vars['template_files'])) {
    unset($scripts['all']['module']['PATH_OF_JS_NEED_TO_REMOVE']);
  }
  $vars['scripts'] = drupal_get_js('header', $scripts);
}

PATH_OF_JS_NEED_TO_REMOVE প্রাক্তন: সাইটের / সমস্ত / মডিউল / og / og.js এর জন্য জেএসের পথ দেয়


ফাংশন phptemplate_preprocess_page (& &) vars) $ rip স্ক্রিপ্টস = drupal_add_js (); যদি (ইন_আররে ('পৃষ্ঠা-মিডিয়া-ফটো', $ ওয়ার্স ['টেমপ্লেট_ফায়ালস'])) আনসেট করা না হয় (rip স্ক্রিপ্টস ['সমস্ত'] ['মডিউল'] ['/ সাইটস / সমস্ত / মডিউল / জ্যাকেই_আপডেট / রিপ্লেস / জ্যাকোয়ারি। min.js ']); ars vars ['স্ক্রিপ্টস'] = drupal_get_js ('শিরোনাম', $ স্ক্রিপ্ট); work এটি কাজ করছে বলে মনে হচ্ছে না
এলো 18

আমি উত্সাহিত করেছি কিন্তু এটি কাজ করে না
আলবো

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

2

দ্রুপাল 7

এখানে শ্রুপমলফ দ্বারা প্রদর্শিত হিসাবে jquery_update_jquery_replace()আপনি নির্দিষ্ট পৃষ্ঠায় (যেমন এটিতে hook_library_alter()) কল করতে পারেন :

<?php
/**
 * Implements hook_module_implements_alter().
 */
function your_module_module_implements_alter(&$implementations, $hook){
  if( $hook == 'library_alter' ){
    $group = $implementations ['your_module'];
    unset($implementations ['your_module']);
    $implementations ['your_module'] = $group;
  }
}

/**
 * Implements hook_library_alter().
 */
function your_module_library_alter(&$javascript, $module) {
  if( $module === 'system' && current_path() == 'path/to/page' ) {
    // Make sure we inject either the minified or uncompressed version as desired.
    $min = variable_get('jquery_update_compression_type', 'min') == 'none' ? '' : '.min';
    $cdn = variable_get('jquery_update_jquery_cdn', 'none');
    $path = drupal_get_path('module', 'jquery_update');

    $version = '1.7';

    jquery_update_jquery_replace($javascript, $cdn, $path, $min, $version);
  }
}
?>

দ্রুপাল ঘ

আমার সমাধানটি লোড JQUERY_UPDATE_REPLACE_PATHহওয়ার আগে ধ্রুবক পরিবর্তন করা ছিল jquery_update:

<?php
/**
 * Replace jQuery files on specified paths (fix for IE 6&7 - jQuery bug: bugs.jquery.com/ticket/6498)
 */
// if (array_search($_GET['q'], array('my_page')) !== FALSE) {
if (arg(0) == 'node' && arg(1) == '123') {
  define('JQUERY_UPDATE_REPLACE_PATH', 'sites/all/libraries/jquery/1.5.2');
}
?>

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


আপনার উত্তর হাইজ্যাক করা নয়, তবে আপনিও এর ডি 8 ভেরিয়েটন যুক্ত করতে চান?
পিয়ের.ভ্রিয়েন্স

আমি 8 খুব বেশি খেলিনি, সুতরাং D8 এর সমাধান কী হবে তা সম্পর্কে আমি নিশ্চিত নই, এটির জন্য দুঃখিত। নির্দ্বিধায় সম্পাদনার পরামর্শ দিতে বা একটি উত্তর পোস্ট করুন। অথবা বিশেষত ডি 8 এর জন্য অন্য একটি প্রশ্ন তৈরি করা মূল্যবান হতে পারে।
কেনারব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.