আমার থিমটিতে jQuery ইউআই অন্তর্নির্মিত ব্যবহার করে


25

আমার থিমের প্রতিটি পৃষ্ঠার jquery UI ব্যবহার করা প্রয়োজন। আমি জানি এটি ড্রুপাল with এর সাথে অন্তর্ভুক্ত রয়েছে তবে আমি সত্যই ড্রপালের উপায়-প্রযুক্তিগত ডকুমেন্টেশনটি বোঝাতে পারি না। দেখে মনে হচ্ছে এটি করার একমাত্র উপায় হ'ল টেম্পলেট.এফপি ফাইল দিয়ে। তবে যেহেতু আমি এই ফাইলটি বুঝতে পারি না, তাই আমি সেভাবে এটি এড়াতে চেষ্টা করছি।

অন্য কোন উপায় আছে, বা আমি কেবল টেমপ্লেট.এফপি ফাইল চেষ্টা করব?


আপনি কি করতে চেষ্টা করছেন? সমস্ত jquery UI ফাংশন এবং কী আপনার কাছে উপলভ্য নয়। প্রতিটি পৃষ্ঠায় কাস্টম জেএস কোড চালাবেন? একটি নির্দিষ্ট পৃষ্ঠায় এটি কার্যকর? একটি নির্দিষ্ট ঘটনা? জেএসকে কার্যকর করার জন্য প্রচুর উপায় রয়েছে, যথা
দ্রুপাল_এডি_জেএস

আমি আমার থিমের প্রতিটি একক পৃষ্ঠায় প্রদর্শিত কিছু ক্ষেত্রগুলিতে .datepicker () ব্যবহার করার চেষ্টা করছি। পরে আরও কিছু জিনিস হতে পারে।
বেন

@ বেন অনুগ্রহপূর্বক পুরষ্কার মনে রাখবেন যদি কোনও উত্তর আপনার সমস্যার সমাধান করে।
googletorp

@googletorp দুঃখিত, আমার প্রথম অনুগ্রহ। অনুদান পুরষ্কার।
বেন

আমি উত্তরগুলি অনেকের চূড়ান্ত পদক্ষেপটি ছাড়ার মতো অনুভব করছি, একবার আপনি যখন drupal_add_library ('সিস্টেম', 'ui.button') অন্তর্ভুক্ত করেন বা যাই হোক না কেন, আপনাকে আপনার থিমটিতে জাভাস্ক্রিপ্টের একটি লাইন বা দুটি যুক্ত করতে হবে যা প্রকৃতপক্ষে অনুরোধ জানায় said প্লাগ লাগানো.
রায়ান দাম

উত্তর:


36

আপনার কোনও পিএইচপি ব্যবহার করা প্রয়োজন সত্ত্বেও কোনও পৃষ্ঠায় জেএস যুক্ত করা এতটা কঠিন নয়।

সাধারণ জেএস ফাইলগুলির জন্য, আপনি এর মতো কিছু করতে পারেন

drupal_add_js($path_to_js)

দ্রুপাল অবশ্য jQuery UI কে লাইব্রেরিতে নিবন্ধভুক্ত করেছেন যাতে নির্দিষ্ট jQuery UI প্লাগইনগুলির জন্য জেএস এবং সিএসএস উভয় ফাইলই যুক্ত করা সহজ হয়। এটি ব্যবহার করে করা যেতে পারে

drupal_add_library($module, $library);

সমস্ত jQuery UI প্লাগইন সিস্টেম মডিউলে বিদ্যমান, তাই আপনি এটি করতে পারেন

drupal_add_library('system', 'ui');

অথবা

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

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

আপনি এখানে jQuery প্লাগইনগুলির সম্পূর্ণ তালিকা দেখতে পারেন । এটি একটি পিএইচপি অ্যারে হিসাবে ফর্ম্যাট করা হয় তবে সাধারণত নামকরণ কনভেনশনটি ui.PLUGIN-NAME হয়।

আপনার যদি প্রতিটি পৃষ্ঠায় জেএস যুক্ত করতে হয় তবে আপনি কেবল একটি প্রিপ্রসেস পৃষ্ঠা হুক যুক্ত করতে এবং সেগুলিতে সেখানে যুক্ত করতে পারেন। এটি টেমপ্লেট.এফপি ফাইলটিতে এরকম কিছু দেখাবে।

function NAME_OF_THEME_preprocess_page(&$variables) {
  drupal_add_library('system', 'ui');
  drupal_add_library('system', 'ui.accordion');
  drupal_add_library('system', 'effects.highlight');
}

আমি এখানে টেমপ্লেট.এফপিতে ঠিক কী আছে (তবে আমার থিমের নামটি NAME_OF_THEME এর জায়গায় ব্যবহার করে) যোগ করার চেষ্টা করেছি এবং এটি কার্যকর হয়নি। কোন ধারনা? আমার কাছে এটিই রয়েছে: function nocturnal_preprocess_page(&$variables) { drupal_add_library('system', 'ui'); drupal_add_library('system', 'ui.datepicker'); }
বেন

@ বেন আপনি যখনই কোনও নতুন হুক বা প্রিপ্রোসেস ফাংশন যুক্ত করবেন তখন আপনাকে ক্যাশে সাফ করতে হবে। ক্যাশে সাফ করার চেষ্টা করুন। আপনার এটি পরীক্ষা করার একটি উপায়ও প্রয়োজন যদি এটি কার্যকর হয় তবে যেহেতু আপনি কেবল জেএস ফাইল যুক্ত করছেন যা নিজেরাই কিছু করবে না।
googletorp

আমি পরিষ্কার ক্যাশে করেছি, এবং এটি এমন কিছু তারিখের ক্ষেত্রে কাজ করা উচিত যা পূর্বে ম্যানুয়ালি রেফারেন্সড jquery UI ব্যবহার করে। এখনও ডিবাগ করা হচ্ছে, তবে এখনও পর্যন্ত কোনও ভুল খুঁজে পাচ্ছে না।
বেন


3
@ গুগলটারপ: আপনি কী পার্থক্য বেটউইন drupal_add_library('system', 'ui');এবং এর উপর কিছুটা ব্যাখ্যা করতে পারবেন drupal_add_library('system', 'ui.accordion');? প্রথমটি কি সমস্ত কিছু আনছে বা কেবল মূল? আমি যে প্রতিটি প্লাগইন ব্যবহার করি তার জন্য আমার কি একটি লাইনের প্রয়োজন?
জার্ল

4

আপনি ডেট_পপআপ মডিউল চেষ্টা করেছেন ? ফর্ম এপিআই দিয়ে ভাল কাজ করে


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

আপনার যে কোনও সাইট থেকে যেকারি ইউআই স্টাফ কল করতে এবং এটি যুক্ত করতে সক্ষম হওয়া উচিত, এটি ড্রুপাল কোরে রয়েছে। ফর্মটি এপিআই দিয়ে তৈরি করা আছে?
LSU_Jobi

2
ফর্মটি টেমপ্লেট ফাইলগুলিতে অন্তর্নির্মিত হয় কেন? এটি খুব দ্রুপালি নয় ... আপনি যদি ফর্ম এপিআই ব্যবহার না করে থাকেন তবে এসকিউএল ইঞ্জেকশন আক্রমণ থেকে অন্তর্নির্মিত সুরক্ষার মতো কিছু সুবিধায় আপনি মিস করছেন। আমি দৃONG়রূপে আপনার ফর্মগুলি টেম্পলেট ফাইলগুলির বাইরে নিয়ে যাওয়ার এবং কাস্টম মডিউলটি লেখার পরামর্শ দিচ্ছি যেখানে আপনি ফর্ম এপিআই ব্যবহার করে ফর্মগুলি তৈরি করবেন। কাউবয় না হওয়ার চেষ্টা করুন। যে কোনও ইভেন্টে, আপনি drupal_add_js ব্যবহার করে যে কোনও জায়গা থেকে জাভাস্ক্রিপ্টের রেফারেন্স দিতে পারেন, এই দ্রুপাল_এডিডি_জেএস ('/ মিসক্য / ইউআই / জ্যাকুয়ের.ই.সি.আর.সি.এস.এস', 'ফাইল'); এবং দ্রুপাল_এডিডি_জেএস ('/ মিস / ইউআই / জ্যাকুই.ইউ.ডেটপিকার.জেএস', 'ফাইল');
এলএসইউ_জবোজ

3
ফর্ম এপিআই ব্যবহার করে একটি কাস্টম মডিউলে ফর্ম তৈরি করুন, তারপরে টিপিএল ফাইলগুলিতে কল রেন্ডার করুন (drupal_get_form ('form_id')); আমি ফর্ম প্রতিশ্রুতি দিচ্ছি, সম্ভবত কিছু কাস্টম জাভাস্ক্রিপ্ট সহ আপনার যে কোনও জটিল প্রয়োজন হ্যান্ডেল করতে পারে। আমার মনে হচ্ছে আপনি কেবল এইচটিপিএল ফাইলে এই সমস্ত কার্যকারিতা ক্র্যাম করার চেষ্টা করে নিজের উপর জিনিসকে আরও শক্ত করে তুলছেন। এটি টেকনিক্যালি থিম স্তর, তাই তাদের মধ্যে কার্যকরী ব্যাক-এন্ড কোডের বড় অংশগুলিতে চলা ভাল অনুশীলন নয়।
এলএসইউ_জবোজ

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

4
  1. আপনার হার্ড-কোডড ফর্মটি .tpl ফাইলে একটি ফর্ম এপিআই বাস্তবায়নে রিফ্যাক্টর করুন। @ এলএসইউ_জবোসের মতোই বলেছেন, এফএপিআই ব্যবহার না করে আপনাকে ফর্ম তৈরি করার কোনও কারণ নেই। আমি আপনাকে ফর্ম এপিআই কুইকস্টার্ট গাইডটি পড়ার এবং ফর্ম এপিআই রেফারেন্স পৃষ্ঠাটি বুকমার্ক করার পরামর্শ দিচ্ছি ।
  2. একবার আপনার ফর্মটি তৈরি হয়ে গেলে এবং আপনি এতে মান জমা দিতে, এটি প্রক্রিয়া করতে সক্ষম হন ইত্যাদি, তারিখ অবদানকারী মডিউলে কোডটি ডাউনলোড এবং পড়তে সক্ষম হন । তারিখটি আপনি যে ধরণের তারিখের পপআপ তৈরি করতে চান তা সরবরাহ করতে ব্যবহৃত হয়, তবে ডি 6-তে সিসিকে এবং ডি 7-তে কোর ক্ষেত্রগুলি। যদিও আপনি ক্ষেত্রগুলির সাথে কাজ করতে চাইছেন না, তারিখ মডিউলটি আপনি যা করার চেষ্টা করছেন তা অর্জন করতে JQuery UI ব্যবহার করে। এই মডিউলটি আপনাকে একটি দৃ example় উদাহরণ দেওয়া উচিত।

ধন্যবাদ। এই লিঙ্কগুলি সহায়ক। আমি পিএইচপি-তে প্রবেশ করতে পছন্দ করি না, তবে আমি মনে করি এই ক্ষেত্রে আমি যা করতে চাই ঠিক তা করতে হবে, আমাকে করতে হবে। আমি সম্ভবত সময়ের প্রয়োজনে এটি টিপিএল ফাইলের মধ্যে রাখব, কারণ এই মুহুর্তে আমার কাছে ড্রপাল পিএইচপি শেখার সময় নেই। সবার কাছ থেকে ভাল পরামর্শ।
বেন

3

googletorpএই উত্তর দেওয়ার জন্য ধন্যবাদ ।

কেবল যোগ করার জন্য, যদি ইউআই প্লাগইনগুলি সক্ষম করার সাথে সম্পর্কিত জিনিসগুলি এখনও খুব স্পষ্ট না হয় ।

দয়া করে মনে রাখবেন যে আপনি যখন উল্লেখ করবেন: drupal_add_library('system', 'ui');
এটি সমস্ত ইউআই প্লাগইন স্বয়ংক্রিয়ভাবে সক্ষম করবে না।

আপনি এখানে ড্রপাল 7-তে উপলব্ধ jquery ui প্লাগইনগুলির তালিকা পেতে পারেন: /misc/ui/

একটি লম্বালম্বি প্লাগইন সক্ষম করতে, forexample:, jquery.ui.slider.min.jsআপনাকে এই লাইনটি যুক্ত করতে হবে:

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

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


2

আমি সম্প্রতি এই সমস্যা ছিল। কেউ আমাকে প্রতিটি পৃষ্ঠায় JQuery UI চাপতে বাধ্য করার জন্য তাদের কাস্টম মডিউল দিয়েছে। আপনি এটি সহজভাবে পুনরায় তৈরি করতে পারেন। প্রথমে jquery_update ইনস্টল করুন এবং নিশ্চিত হয়ে নিন যে এটি কাজ করছে। তারপরে, এই মডিউলটি তৈরি এবং সক্ষম করুন:

'Jquery_for' নামক পথে / থেকে / মডিউলগুলিতে একটি ফোল্ডার তৈরি করুন।

ভিতরে দুটি ফাইল যুক্ত করুন:

jquery_force.info :

name = JQuery UI Force
description = Forces JQuery UI to always load
dependencies[] = jquery_update
package = User Interface
core = 7.x
files[] = jquery_force.module

jquery_for.module :

<?php
/**
 * @file jquery_force.module
 * TODO: Enter file description here.
 */

/**
 * Implements hook_init().
 */
function jquery_force_init() {
    drupal_add_library('system', 'ui');
}

2

template.phpফাইলে একটি প্রিপ্রসেস হুক যুক্ত করা আমার পক্ষে কার্যকর হয়নি।

আমি সহজভাবে করা drupal_add_library('system', 'ui');মধ্যে template.phpনিজে ফাইল, কাজ করে।

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