কীভাবে ড্রুপালে জ্যাকেয়ারি প্লাগইন যুক্ত করবেন?


19

আমি কি কেবল প্রধান টেমপ্লেট ফাইলে কোডটি আটকানো উচিত, বা দ্রুপাল in-তে নতুন জ্যাকুয়ারি প্লাগইন সংযুক্ত করার কোনও অন্য প্রস্তাবিত উপায় নেই?


আপনি কোন ধরণের JQuery প্লাগইন ব্যবহার করছেন এবং কেন? সাধারণত কোনও ধরণের জাভাস্ক্রিপ্ট যুক্ত করে ফাংশনটি যুক্ত করা হয় drupal_add_js( api.drupal.org/api/drupal/includes--common.inc/function/… )।
জেমি হোলার্ন

উত্তর:


15

সবচেয়ে সহজ উপায় হ'ল এটি আপনার থিমের ইনফো ফাইলটিতে যুক্ত করা:

scripts[] = js/my_jquery_plugin.js

ব্যতিক্রম কেবলমাত্র যদি আপনি কোনও বাহ্যিক সংস্থান (সিডিএন / হোস্টেড স্ক্রিপ্ট) যুক্ত করে থাকেন তবে জেমি হোলার ব্যাখ্যা অনুসারে আপনার উচিত ড্রুপাল_এডিডি_জেএস () ব্যবহার করা উচিত


1
তবে ক্রোম কনসোল আমাকে পরিবর্তন করে:Uncaught TypeError: undefined is not a function
ট্যাংমঙ্ক

@ অ্যালেক্স আমি একটি বোবা প্রশ্ন পেয়েছি। আমি জানি দ্রুপাল জেকারি লাইব্রেরি ব্যবহার করছে। ধরা যাক আমি থিম.info- তে আপনার "স্ক্রিপ্টগুলি [] = js / back_to_top.js" ধারণাটি ব্যবহার করে "ব্যাক টু টপ" ফান্ট যুক্ত করছি। আমারও কি jquery ফাইল যুক্ত করতে হবে (jquery v1.9, v1.11 এর মতো)?
কোকস্কিন

@ কোকোস্কিন আপনার ভাল হওয়া উচিত
অ্যালেক্স ওয়েবার

আসলে না. এটি সবসময় কাজ করে না। দুটি উদাহরণ: ১) স্ক্রিপ্টগুলি [] = জেএস / জ্যাকোয়ারি.ওভারিনেন্ট.জেএস ২) স্ক্রিপ্টগুলি [] = জেএস / জ্যাকোয়ারি.স্ক্রোলমে.জেএস
সমুদ্র 26.2

সাধারণত এটি করার ভাল উপায় নয়। কোন পৃষ্ঠায় এটি লোড হয়েছে তা আপনি কীভাবে নিয়ন্ত্রণ করবেন? ব্যবহার করুনdrupal_add_library()
অ্যান্টনিগোর

12

ড্রুপাল এর সাথে জ্যাকেই প্যাকেজ রয়েছে।

একটি জেএস ফাইল যুক্ত করতে আপনি অন্যান্য পোস্টে নকশাকৃতভাবে drupal_add_js ব্যবহার করতে পারেন।

এটি সাধারণ ক্ষেত্রে কাজ করবে তবে আপনি যদি অন্য প্লাগইনগুলির উপর নির্ভর করে এমন প্লাগইন থাকতে শুরু করেন। আপনি লাইব্রেরি এপিআই দেখতে চাইতে পারেন । আমি আশা করি সময়ের মধ্যে মডিউলগুলি জনপ্রিয় লাইব্রেরিগুলিকে সমর্থন করার জন্য তৈরি করা হবে, দেখুন সিস্টেম_লাইবারি () দেখুন জিকুয়েরি ইউআই-র জন্য কিছু রয়েছে ।

এই উদাহরণে jQuery ui.accordion মডিউলটি ঝুঁকতে আপনি drupal_add_library () ব্যবহার করতে পারেন

drupal_add_library('system', 'ui.accordion');

এটি সিএসএস এবং এর উপর নির্ভরশীল কোনও লাইব্রেরির সাথে জেএস অন্তর্ভুক্ত করা নিশ্চিত করবে। এটিও নিশ্চিত করবে যে গ্রন্থাগারগুলি কেবল একবার অন্তর্ভুক্ত করা হয়েছে।

আপনি যদি বলেন যে আপনি কোন লাইব্রেরি ব্যবহার করছেন আমি কীভাবে এটি সংজ্ঞায়িত করতে পারি তার জন্য আমি নমুনা কোড সরবরাহ করতে পারি

সুতরাং প্রথমে গ্রন্থাগারটি সংজ্ঞায়িত করার জন্য একটি মডিউল তৈরি করুন (এটি কেটিপি কল করুন) এবং মডিউলটি ফোল্ডারের নীচে একটি জেএস ফোল্ডারে আপলোড করুন

তারপরে হুক_লিবারি বাস্তবায়ন করুন ()

function qtip_library() (
 $libraries['qTip'] = array(
    'title' => 'qTip', 
    'website' => 'http://craigsworks.com/projects/qtip/docs/', 
    'version' => '1.0.0-rc3', 
    'js' => array(
      drupal_get_path('module', 'qtip') . '/js/jquery.qtip-1.0.0.min.js' => array(),
    ),
    'dependencies' => array(
      array('system', 'jquery'),
    ),
  );
  return $libraries;
}

তারপরে আপনার কোডটিতে ফাইল যুক্ত করুন

drupal_add_library('qtip', 'qtip');

এটি একটি সাধারণ লাইব্রেরির জন্য অতিমাত্রার কাজ হতে পারে তবে আপনি যদি একাধিক সাইট এবং থিমগুলির উপরে প্রচুর গ্রন্থাগার পরিচালনা করতে পারেন তবে এটি জীবনকে আরও সহজ করে তোলে।


ধন্যবাদ, আমি কিউটিপ লাইব্রেরিটি ব্যবহার করছি - craigsworks.com
প্রকল্পগুলি

5

আপনি যদি কিছু পৃষ্ঠায় (সমস্ত নয়) স্ক্রিপ্টটি লোড করতে চান তবে আপনি এটি আপনার টেম্পলেট.এফপি ফাইলটি ট্রাট যুক্ত করতে পারেন। এর সাথে কেবল কোডটি যুক্ত করুন:

function YourTheme_preprocess_node(&$variables) {

 $node = $variables['node'];
if (!empty($node) && ($node->nid == 983)
 // here you can esily add more pages
) {

drupal_add_js('sites/all/libraries/jquery.ui/ui/ui.core.js');
drupal_add_js('sites/all/libraries/jquery.ui/ui/jquery-ui-1.7.3.custom.js');
drupal_add_js('sites/all/libraries/jquery.ui/ui/ui.progressbar.js');

drupal_add_css('sites/all/libraries/jquery.ui/themes/redmond/ui.progressbar.css');
drupal_add_css('sites/all/libraries/jquery.ui/themes/redmond/ui.core.css');
drupal_add_css('sites/all/libraries/jquery.ui/themes/redmond/ui.theme.css');
 }
}

আমি কেবল ড্রুপাল 6 এ এটি পরীক্ষা করেছি।


3

আপনি যে থিমটি ব্যবহার করছেন script[] =সেটির .info ফাইলটিতে একটি লাইন যুক্ত করে আপনি ড্রুপাল সাইটটিতে যে থিমটি ব্যবহার করেন সেটিতে আপনি একটি জাভাস্ক্রিপ্ট ফাইল যুক্ত করতে পারেন । আমি এই ক্ষেত্রেটি কেবল তখনই বিবেচনা করব যদি আপনি কোনও কাস্টমাইজড থিম বা কোনও নতুন থিমের পরিবর্তিত সংস্করণ ব্যবহার করেন যা নাম বদলে দেওয়া হয়েছে; আপনি যদি এটি ব্যবহার করেন তবে উদাহরণস্বরূপ গারল্যান্ডটি করার জন্য আমি এটি করার পরামর্শ দেব না। এ জাতীয় ক্ষেত্রে এটি করার অর্থ থিম আপডেট হওয়ার সময়ে সমস্ত পরিবর্তন হারাতে বা আপডেট হওয়া থিম ফাইলগুলি অনুলিপি করা এবং তারপরে ফাইলগুলির পূর্ববর্তী সংস্করণে প্রয়োগ করা একই পরিবর্তনগুলি পুনরায় প্রয়োগ করা উচিত; যদি পরিবর্তনটি কেবল একটি script[]লাইন যুক্ত করে, তবে পরিবর্তনটি ন্যূনতম হয়, এবং এটি করা মূল্যবান হতে পারে তবে এর অর্থ হ'ল জাভাস্ক্রিপ্ট ফাইলগুলি থিম ফাইল যুক্ত ডিরেক্টরিতে যুক্ত করা হয় না, বা আপনার প্রতিটি জাভাস্ক্রিপ্ট ফাইল যুক্ত করা উচিত সময় থিম আপডেট করা হয়।

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

যেমন ইতিমধ্যে অন্য উত্তরে রিপোর্ট করা হয়েছে, hook_init()হুকটি কি আপনার প্রয়োগ করা উচিত। hook_library()জাভাস্ক্রিপ্ট ফাইলগুলির জন্য jQuery প্লাগ-ইনগুলির জন্য ড্রুপাল 7 এ যুক্ত করা নতুন হুকটি আমি যুক্ত করব ।


3

আপনি ড্রপাল অ্যাডমিন প্যানেলে সরাসরি স্ক্রিপ্ট যুক্ত করতে জেএস ইনজেক্টর মডিউলটি ব্যবহার করতে পারেন । বিকল্পভাবে আপনি আপনার পৃষ্ঠায় আপনার জেএস ফাইল যুক্ত করতে drupal_add_js () ফাংশন ব্যবহার করতে পারেন ।


আমি মনে করি এটি ঠিক আমার প্রয়োজন, আমি আপনার উত্তরটি সেরা হিসাবে বেছে নেব, তবে আমি দেখতে চাই যে অন্যান্য সমাধানগুলি প্রথমে রয়েছে কিনা;)
ব্রুনো ভিনসেন্ট

আপনি আপনার থিম.ইন.পি স্ক্রিপ্টে এই লাইনটি যুক্ত করতে পারেন [] = 'আপনার ফাইলের পথে' যা একটি পদ্ধতি তবে এই পদ্ধতির সাহায্যে জেএসগুলি আপনার সমস্ত পৃষ্ঠায় লোড হয়ে যাবে যা সাধারণত ভাল অনুশীলন নয়। উপরের দুটি পদ্ধতির সাহায্যে আপনি যে পৃষ্ঠাগুলিতে চান ঠিক সেই পৃষ্ঠায় জেএস যুক্ত করতে পারেন।
শাবির এ।

1

আপনি একটি সাধারণ কাস্টম মডিউল তৈরি করতে এবং এটি সেভাবে যুক্ত করতে পারেন। কোডটি নিম্নলিখিতগুলির মতো হবে:

MYMODULE_init() {
  drupal_add_js(drupal_get_path('module', 'MYMODULE') . '/FILE.js');
}

JQuery যুক্ত করার জন্য কাস্টম মডিউল? সিরিয়াসলি?
ভেন্ডার

কেবল এটি বাহ্যিক হলেই আমার উত্তরটি দেখুন
অ্যালেক্স ওয়েবার

1

আপনি YOURTHEME_preprocess_theme()যদি লজিকাল শর্তটি প্রয়োগ করতে চান তবে আপনি কেবল এতে ব্যবহার করতে পারেন:

drupal_add_js(drupal_get_path('theme','your_theme').'/js/yourplugin.js');

এবং yourtheme.info ফাইলটিতে যুক্ত করুন:

scripts[] = js/yourplugin.js


1

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

কোনও কোডিংয়ের প্রয়োজন নেই।


ধন্যবাদ! এটির সুবিধা রয়েছে যে আপনি নির্দিষ্ট পাথগুলিতে লাইব্রেরি সীমাবদ্ধ করতে পারেন, তবুও কোনও কোডিংয়ের প্রয়োজন নেই।
ড্রুভিশন

1
কিন্তু টেক্সটেক্সট.জেএস এর মতো জিকুয়েরি প্লাগইনগুলির জন্য যার মধ্যে গড়ে ৫ টি সিএসএস এবং ৫ টি জেএস ফাইল অন্তর্ভুক্ত রয়েছে, এটি এখনও প্রচুর কাজ।
দ্রুভিশন

1

অনেকগুলি বাহ্যিক গ্রন্থাগার রয়েছে যা আজকাল অন্তর্ভুক্ত করা দরকার।

এগুলি সমস্ত থিমের জেএস ডিরেক্টরিতে অন্তর্ভুক্ত করা সর্বদা কাম্য নয় কারণ কখনও কখনও libra গ্রন্থাগারগুলি একাধিক জেএস ফাইল এবং একাধিক সিএসএস ফাইল সমন্বিত থাকে।

আমি libraries_get_pathলাইব্রেরি মডিউলের ফাংশনটি ব্যবহার করে সাইট / সমস্ত / লাইব্রেরি থেকে তাদের পথ ধরতে পেরেছি :

এখানে আমি নির্বাচিত ফাইলগুলি কীভাবে টেক্সটেক্সট.জেএস এর সাথে সম্পর্কিত তা যুক্ত করেছি:

<?php 
function MYMODULE_init() {

  // Add jQuery library to a specific page.
  if (arg(0) == 'messages' && arg(1) == 'new') {
    // Add the jQuery TextExt library ( http://textextjs.com/ )
    $libdir = libraries_get_path('jquery-textext');
    drupal_add_js("$libdir/src/js/textext.core.js");
    drupal_add_js("$libdir/src/js/textext.core.js");
    drupal_add_js("$libdir/src/js/textext.plugin.tags.js");
    drupal_add_js("$libdir/src/js/textext.plugin.autocomplete.js");
    drupal_add_js("$libdir/src/js/textext.plugin.suggestions.js");
    drupal_add_js("$libdir/src/js/textext.plugin.filter.js");
    drupal_add_js("$libdir/src/js/textext.plugin.focus.js");
    drupal_add_js("$libdir/src/js/textext.plugin.prompt.js");
    drupal_add_js("$libdir/src/js/textext.plugin.ajax.js");
    drupal_add_js("$libdir/src/js/textext.plugin.arrow.js");

    drupal_add_css("$libdir/src/css/textext.core.css");
    drupal_add_css("$libdir/src/css/textext.plugin.tags.css");
    drupal_add_css("$libdir/src/css/textext.plugin.autocomplete.css");
    drupal_add_css("$libdir/src/css/textext.plugin.focus.css");
    drupal_add_css("$libdir/src/css/textext.plugin.prompt.css");
    drupal_add_css("$libdir/src/css/textext.plugin.arrow.css");
  }

} ?>

আমি শুনতে পছন্দ করব যে কোনও বাহ্যিক সংগ্রহশালা রয়েছে যেখানে এই সমস্ত লাইব্রেরি পূর্বনির্ধারিত রয়েছে সুতরাং আমি সেগুলি প্রতিটি নিজেই সংজ্ঞায়িত করতে হবে না।


আপনি কীভাবে এতে পৃষ্ঠাগুলি যুক্ত করবেন?
উমাইয়ার

0

পুতুল গুগল সিডিএন থেকে jQuery লোড করার জন্য আমি আপনাকে পুনঃসংশোধন করছি। আরও তথ্যের জন্য এই লিঙ্কটি চেক করুন: http://code.google.com/apis/libraries/devguide.html#jquery । কেবল আপনার সাইটে একই স্ক্রিপ্ট একাধিকবার লোড করবেন না তা নিশ্চিত করুন।


0

এটি আমার পক্ষে কাজ করেছে, আমার টেম্পলেটটিতে jQuery প্লাগইনের জন্য কোনও মডিউল তৈরি করতে বা একটি ইনস্টল করার দরকার নেই - আমি যুক্ত করেছি:

function YOURTHEME_js_alter(&$javascript){
    // overwriting for newer jQuery version
    $javascript['misc/jquery.js']['data'] = path_to_theme() . '/assets/js/jquery-1.9.0.js';
    // also the min...
    $javascript['misc/ui/jquery.ui.core.min.js']['data'] = path_to_theme() . '/assets/js/jquery-ui-1.10.0.custom.min.js';
    // here I add the library (jQuery plugin) to resolve an error -> $.browser.msie undefined
    $javascript[path_to_theme() . '/assets/js/jquery-migrate-1.1.0.min.js'] = array(   
        "group" => -100,
        "weight" => -18.990,
        "version" => "1.1.0",
        "every_page" => true,
        "type" =>   "file",
        "scope" => "header",
        "cache" => true,
        "defer" => false,
        "preprocess" => true,
        "data" =>  path_to_theme() . '/assets/js/jquery-migrate-1.1.0.min.js',
    );

}

-4

আর একটি উপায় হ'ল পেজ.tpl.php ফাইল
drupal_add_js (drupal_get_path ('থিম', 'পাথ / থেকে / আপনার / প্লাগইন')। নীচে কোড যুক্ত করা। '/plugin.js', 'ফাইল');


4
টেমপ্লেটগুলিতে সরাসরি কোড যুক্ত করা অভ্যাস হিসাবে বিবেচিত হয়।
এমপিডোনাদিও

"টেমপ্লেটগুলিতে সরাসরি কোড যুক্ত করা খারাপ অভ্যাস হিসাবে বিবেচিত হয়" ... সুতরাং এসকিউএল ইনজেক্টর মডিউল তখনকার সেরা অনুশীলন?
ব্রুনো ভিনসেন্ট

উল্লিখিত অন্যান্য কয়েকটি উপায়কে ব্রুনো ভিনসেন্টকে ভাল অনুশীলন হিসাবে বিবেচনা করা যেতে পারে, এটি নির্ভর করে আপনি কোন স্তরে এটি আক্রমণ করতে চান (একটি থিমের কোড, একটি কাস্টম মডিউলে কোড, বা জেএস ইনজেক্টরের মতো মডিউল ইনস্টল করতে)
ক্লাইভ

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