دروبال: إنشاء عنصر قائمة للعرض
-
04-10-2019 - |
سؤال
أقوم بإنشاء نظام حجز صغير. يمكنك إنشاء عقد من النوع يمكن حجزه ، مثل جهاز العرض. لدي عرض تقويم مع العروض العادية. أقوم بإضافة وسيطة لمرجع العقدة ، لكن لدي مشاكل في تحديد رد الاتصال على الصفحة. يمكن للشخص مساعدتي؟
الآن أريد إنشاء عناصر قائمة للعقد المختلفة
function your_module_menu() {
$nodeid //semantic, node is loaded right
$items['reservate/nodeid/$year-w$week'] = array( // semantic, url is built right
'title' => t('Your Module Name'),
'description' => t('Menu's description.'),
'page callback' => 'page_callback_funtion',
'page arguments' => array('page callback arguments'),
'access callback' => 'your_module_access', // the function that validates access based on the user's role(s).
'access arguments' => array(array(role1', 'role2')), // list of roles authorized - note nested array.
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
@تعديل
حسنًا ، ربما لم أشرح جيدًا :). لدي نوع محتوى: الوحدة ، والتي يمكن حجزها. لكل وحدة أقوم بإنشائها ، أريد إنشاء عنصر قائمة (يمكنني القيام بإعادة بناء قائمة على Node Save أو Update). يجب ربط القائمة بعرض ، مع معرف العقدة (الوحدة) كوسيطة في عنوان URL.
المحلول 3
لقد وجدت طريقة بسيطة للغاية للقيام بذلك ، لقد قمت للتو بإنشاء كتلة عرض تنشئ الروابط مع بعض المرشحات.
بسيطة وما أحتاجها بالضبط ، لا يمكن أن أفهم لماذا لم أفكر في ذلك عاجلاً
نصائح أخرى
لست متأكدًا مما تحاول القيام به بالضبط ، ولكن إذا كان هدفك هو إنشاء عنصر قائمة ، وليس صفحة جديدة تحددها في الوحدة النمطية المخصصة ، فيجب عليك استخدام نظام القائمة في Drupal. يمكنك إنشاء عناصر القائمة التي تشير إلى أي عنوان URL الموجود على موقعك.
بالنسبة للعقد ، يكون هذا الأمر سهلاً بشكل خاص ، حيث يمكنك القيام بذلك مباشرة في نموذج تحرير/إنشاء العقدة.
يقوم Drupal بتخزين Menues ، لذلك لا يمكنك إنشاء عناصر القائمة مع أجزاء ديناميكية فيها ، مثل معرف المستخدمين وما إلى ذلك عرض المحتوى بناءً على المستخدم.
تحديث
بدلاً من الاضطرار إلى إعادة بناء نظام القائمة في كل مرة يتم فيها إنشاء عقدة أو حذفها ، والتي لن تكون قابلة للتطوير للغاية ، يمكنك بدلاً من ذلك إنشاء عنصر القائمة الجديد ، مع hook_nodeapi
, ، وحذفه عند حذفه.
- لإنشائها يمكنك استخدامها
menu_link_save
- لحذفه يمكنك استخدامه
menu_link_delete
إذا فهمت بشكل صحيح ، فأنت تحاول إنشاء عنصر قائمة تلقائيًا في كل مرة يتم فيها إضافة عقدة محتوى جديدة من "وحدة". إذا كان ذلك صحيحًا ، أقترح استخدام قواعد الوحدة النمطية ومقتطف صغير من PHP لإنشاء عنصر قائمة مخصص في أحداث النظام المختلفة ، مثل إنشاء المحتوى. قد تجد البرنامج التعليمي الذي كتبته عن هذا الموضوع مفيد:
http://jan.tomka.name/blog/programmally-creating-menu-items-drupal
الفكرة بسيطة: قم بإعداد قاعدة في وحدة القواعد لإجراء إجراء يتم إطلاقه عند إنشاء العقدة أو الحذف واستخدام مكالمات Drupal API التي ذكرتها Googletorp لمعالجة عناصر القائمة بالفعل.