كيف يمكن للمرء حقن المتغيرات في قوالب الصفحة من وحدة دروبال مخصصة؟
-
03-10-2019 - |
سؤال
لقد أنشأنا وحدة مخصصة لتنظيم ونشر محتوى النشرة الإخبارية لدينا.
إن المشكلة التي أواجهها الآن - وأنا جديد على تطوير وحدة Drupal و Drupal ، لذلك يمكن أن تكون مجرد مشكلة معرفة بدلاً من قضية Drupal - هي كيفية وضع كل رسالة إخبارية.
في هذه المرحلة ، سيكون هيكل عنوان URL في النشرة الإخبارية:
/Newsletters/{Newsletter-Name}/{edition-name}/{date-date} مما يعني أنه يمكننا إنشاء ملفات قالب في موضوعنا باستخدام أسماء الملفات مثل page-newsletters- {Newsletter-Name}-{edition-name}. tpl.php ، وهو رائع. المشكلة الوحيدة التي أديرها هي أن جميع المحتوى يأتي في متغير محتوى $ للموضوع. أرغب في الحصول على متغيرات مختلفة (بحيث يمكنني ، داخل السمة ، وضع محتوى معين في مناطق معينة.)
هل هناك طريقة مناسبة للقيام بذلك؟
يحرر: للإجابة على بعض الأسئلة: القضية هي عقدة (هناك مشكلة وإصدار ونشرة إخبارية) ويتم تعيين المسار باستخدام Hook_Menu مع أحرف البدل وجهاز التوجيه.
المحلول
أفضل إجابة يمكن أن أجدها هي إضافة شيك داخل phptemplate_preprocess_page لإرسال VARS إلى الوحدة النمطية وتحديثها.
مثل ذلك:
function phptemplate_preprocess_page(&$vars) {
if (module_exists('test_module')) {
_test_module_injector($vars);
}
}
ثم في ملف test_module.module ، قمت بإنشاء هذه الوظيفة:
function _test_module_injector(&$vars) {
$vars[] = call_to_other_functions_to_load_vars();
}
يبدو أنه يعمل. أتمنى أن تكون هناك طريقة للقيام بذلك دون الحاجة إلى لمس ملف template.php الخاص بالموضوع ، ولكن هذا يعمل بشكل جيد.
نصائح أخرى
إذا كانت هناك وثائق أفضل لوظائف المعالجة المسبقة للمواد ، فستكون Drupal أكثر سهولة - كما هي ، فأنت بحاجة إلى تجميع المعلومات من الكثير من التفسيرات المختلفة. مكان واحد للبدء هنا:
ولكن إذا كنت تأخذ الوقت الكافي للعمل من خلال البرنامج التعليمي أدناه ، فستجد أنه يمكنك القيام بمعظم الأشياء:
هذا منشور قديم ، ويبدو أن مشكلات البروتوكول الاختيارية قد تم حلها.
ومع ذلك ، فقط للآخرين الذين يجدون هذا من خلال Google (أو غير ذلك):
- قم بتثبيت وحدة "Devel": http://drupal.org/project/devel
- أيضا وحدة "devel themer": http://drupal.org/project/devel_themer
استخدم devel thermer للذهاب من خلال متغير محتوى $ وابحث عن ما تحتاجه للانسحاب.
هناك مجموعة من مستندات/turs devel/thers هناك ، لكن استخدامه واضح ومباشر. لاحظ ، رغم ذلك ، أن بعض الأشياء هناك ستحتاج إلى تطهير قبل الطباعة في الموضوع.
يبدو أن الاقتراح لإظهار العقدة كعرض ثم تعديل قوالب العرض ، يبدو مجنونًا ، على الرغم من أنها ستعمل.