كيف يمكن للمرء حقن المتغيرات في قوالب الصفحة من وحدة دروبال مخصصة؟

StackOverflow https://stackoverflow.com/questions/2776820

سؤال

لقد أنشأنا وحدة مخصصة لتنظيم ونشر محتوى النشرة الإخبارية لدينا.

إن المشكلة التي أواجهها الآن - وأنا جديد على تطوير وحدة 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 أكثر سهولة - كما هي ، فأنت بحاجة إلى تجميع المعلومات من الكثير من التفسيرات المختلفة. مكان واحد للبدء هنا:

http://drupal.org/node/223430

ولكن إذا كنت تأخذ الوقت الكافي للعمل من خلال البرنامج التعليمي أدناه ، فستجد أنه يمكنك القيام بمعظم الأشياء:

http://11heavens.com/theming-the-contact-form-in-drupal-6

هذا منشور قديم ، ويبدو أن مشكلات البروتوكول الاختيارية قد تم حلها.

ومع ذلك ، فقط للآخرين الذين يجدون هذا من خلال Google (أو غير ذلك):

  1. قم بتثبيت وحدة "Devel": http://drupal.org/project/devel
  2. أيضا وحدة "devel themer": http://drupal.org/project/devel_themer

استخدم devel thermer للذهاب من خلال متغير محتوى $ وابحث عن ما تحتاجه للانسحاب.

هناك مجموعة من مستندات/turs devel/thers هناك ، لكن استخدامه واضح ومباشر. لاحظ ، رغم ذلك ، أن بعض الأشياء هناك ستحتاج إلى تطهير قبل الطباعة في الموضوع.

يبدو أن الاقتراح لإظهار العقدة كعرض ثم تعديل قوالب العرض ، يبدو مجنونًا ، على الرغم من أنها ستعمل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top