it-swarm.asia

باستخدام واجهة مستخدم jQuery المضمنة في موضوعي

ستحتاج كل صفحة من موضوعي إلى استخدام واجهة مستخدم jquery. أعلم أنه مدرج مع Drupal 7 ، لكنني لا أستطيع حقًا فك تشفير وثائق طريقة Drupal التقنية للغاية. يبدو أن الطريقة الوحيدة للقيام بذلك هي مع ملف template.php. ولكن لأنني لا أفهم هذا الملف ، أحاول تجنب القيام بذلك بهذه الطريقة.

هل هناك طريقة أخرى ، أم يجب أن أجرب فقط الملف template.php؟

24
Ben

إن إضافة JS إلى الصفحة ليس بهذه الصعوبة ، على الرغم من أنك تحتاج إلى استخدام php.

بالنسبة إلى ملفات JS العادية ، يمكنك فعل شيء كهذا

drupal_add_js($path_to_js)

ومع ذلك ، قام Drupal بتسجيل jQuery UI في المكتبات مما يسهل إضافة كل من ملفات JS و CSS لبعض المكونات الإضافية لـ jQuery UI. يمكن القيام بذلك باستخدام

drupal_add_library($module, $library);

توجد جميع مكونات jQuery UI في وحدة النظام ، لذا يمكنك القيام بذلك

drupal_add_library('system', 'ui');

أو

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

بعض هذه المكونات الإضافية لها تبعيات لأنها تستخدم مكونات إضافية أخرى. Drupal يتعامل مع هذا بذكاء شديد وسيتضمن المكونات المطلوبة.

يمكنك مشاهدة القائمة الكاملة للمكونات الإضافية jQuery هنا . تم تنسيق هذا على أنه صفيف PHP صفيف ، ولكن عادة ما يكون اصطلاح التسمية هو ui.PLUGIN-NAME.

إذا كنت بحاجة إلى إضافة JS في كل صفحة ، يمكنك ببساطة إضافة خطاف صفحة المعالجة المسبقة وإضافتها هناك. سيبدو هذا شيء من هذا القبيل في ملف template.php.

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

هل جربت date_popup الوحدة؟ يعمل بشكل جيد مع API النموذج

4
LSU_JBob
  1. قم بإعادة تشكيل النموذج الذي تم ترميزه بشكل ثابت في ملف .tpl إلى تطبيق Form API. كما قالLSU_JBob ، ليس هناك سبب يدعو إلى إنشاء نموذج دون استخدام FAPI. أنصحك بقراءة نموذج واجهة برمجة التطبيقات السريعة للنموذج ، ووضع إشارة على مرجع نموذج واجهة برمجة التطبيقات الصفحة.
  2. بمجرد إنشاء النموذج الخاص بك وتمكنك من إرسال القيم إليه ومعالجته وما إلى ذلك ، قم بتنزيل الرمز وقراءته في التاريخ وحدة المساهمة. يتم استخدام التاريخ لتوفير نوع التاريخ المنبثق الذي تريد إنشاءه ، ولكن لـ CCK في D6 والحقول الأساسية في D7. على الرغم من أنك لا تبحث عن العمل مع الحقول ، إلا أن وحدة التاريخ تستخدم واجهة مستخدم JQuery لإنجاز ما تحاول القيام به. يجب أن تعطيك هذه الوحدة مثالا قويا.
4
amateur barista

شكرا googletorp للإجابة على هذا.

فقط للإضافة ، إذا كانت الأمور لا تزال غير واضحة جدًا فيما يتعلق بتمكين مكونات واجهة المستخدم.

يرجى ملاحظة أنه عندما ستذكر: drupal_add_library('system', 'ui');
لن يؤدي ذلك إلى تمكين جميع مكونات واجهة المستخدم تلقائيًا.

يمكنك العثور على قائمة بالمكونات الإضافية لواجهة jquery ui في drupal 7 هنا: /misc/ui/

لتمكين مكون إضافي ذي صلة ، على سبيل المثال: jquery.ui.slider.min.js ، تحتاج إلى إضافة هذا السطر:

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

اتمنى ان يكون هذا مفيدا.

3
Sumoanand

لقد واجهت هذه المشكلة مؤخرا. أعطاني شخص ما الوحدة النمطية الخاصة بهم لإجبار JQuery UI على التحميل في كل صفحة. يمكنك إعادة إنشائه ببساطة. أولاً ، قم بتثبيت jquery_update وتأكد من أنه يعمل. ثم قم بإنشاء وتمكين هذه الوحدة:

قم بإنشاء مجلد في المسار/إلى/الوحدات النمطية المسماة "jquery_force".

في الداخل ، أضف ملفين:

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_force.module :

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

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

لم تنفعني إضافة خطاف معالجة مسبقة في ملف template.php.

أنا ببساطة أضع drupal_add_library('system', 'ui'); في ملف template.php بحد ذاته ، يعمل.

2
user17418