it-swarm.asia

تقسيم حقول المحتوى إلى مناطق مختلفة

موقفي كما يلي: لدي ندوة نوع المحتوى ، مع الحقول A و B و C. لدي مناطق رأس وتذييل ومحتوى وشريط جانبي إلى اليسار. هناك بعض الحقول في الحلقة الدراسية التي أريد عرضها في منطقة المحتوى ، ولكن أيضًا في منطقة الشريط الجانبي الأيسر.

كيف أذهب عن القيام بذلك؟ نعتذر إذا كان هذا قد سبق الرد عليه. أنا مطور ولست مترددًا في الغوص في وظائف ربط ومعالجات ما قبل المعالجة. لديّ وحدة المشاهدات مثبتة ، لكني لم أستخدمها مطلقًا (هذا هو أول موقع Drupal ، إذا لم تتمكن من معرفة: P).

في صحتك.

تحرير: هذا من أجل دروبال 7.

11
Lester Peabody

لا توجد طريقة سهلة لإضافة محتوى العقدة إلى مناطق مختلفة على الصفحة. هناك طرق متعددة لمعالجة هذه المشكلة.

طريقة غير ترميز: طرق عرض وكتل

إنشاء طريقة عرض

  • النوع: بلوك
  • عامل تصفية المحتوى: المحتوى: Nid
    • القيمة الافتراضية: انتزاع من الصفحة الحالية
  • الحقول: أيهما تريد
  • منقي:
    • نوع المحتوى: ندوة

(بالإضافة إلى أي إعدادات إضافية تريدها)

ثم انتقل إلى صفحة حظر المسؤول انقل كتلة العرض المنشأة حديثًا إلى المنطقة التي تريد عرضها فيها. يجب أن تظهر فقط على صفحات عقدة الندوة.

كرر لجميع المناطق

طريقة الترميز مع theme_preprocess_region ():

سيبدو رمز شيء من هذا القبيل

MYTHEME_preprocess_region(&$variables) {
  if (isset($node) && ($node->type == 'seminar' )) {
     //add new variable here.     
  }
}

هذا لـ Drupal 7 فقط. الآن متوفر في منطقتك. tpl.php.

11
iStryker

تتيح لك Display Suite الوحدة النمطية القيام بذلك. ستحتاج إلى تمكين وحدة عرض Suite Suite الإضافية لكشف مناطق السمة كأهداف لمكونات العقدة. يمكن العثور على معلومات حول كيفية القيام بذلك في إضافة حقول إلى كتلة صفحة وثائق Display Suite

7
jhedstrom

لقد واجهت نفس المشكلة. الحل سهل للغاية. يمكنك أن تبني حقيقة أنه في Drupal 7 يمكننا تحديد وضع view_mode الخاص بنا ، وليس فقط FULL و TEASER (كما نعلم من الإصدارات القديمة). لذا ، حدد وضع view_mode آخر للاستخدام في منطقتك: على سبيل المثال LEFTHAND. Drupal FULL view_mode في منطقة المحتوى. لذا ، يجب أن تقول Drupal لعرض LEFTHAND في منطقة الشريط الجانبي الأيسر.

  1. في template_preprocess_page ()

    if ($vars['node']) {
    $vars['page']['sidebar_left'][] = node_view($vars['node'], 'lefthand');
    }

  2. في node.tpl.php ، أضف عرضًا جديدًا لوضع العرض الأيسر

    if ($view_mode == 'lefthand') {
    // render content fields here
    }

5
Patrik Lucan

إذا كان Display Suite يبدو كثيرًا جدًا بالنسبة لاحتياجاتك (فهي وحدة رائعة ، ولكن قد تكون مبالغة إذا كنت تحتاج فقط إلى نقل بعض الحقول) فهناك وحدة لهذا الغرض فقط -> CCK Blocks =.

أعلم أنها تسمى كتل "CCK" ، ولكنها تعمل مع Drupal 7 (الذي جلب وظيفة CCK إلى القلب).

3
Chance G

تغيير طفيف في إجابةPatrik Lucan ، if ($vars['node']) كان يسبب لي مشاكل على الصفحات التي لم تكن عُقدًا ، على سبيل المثال الصفحة الأمامية المخصصة مع كتلة أو صفحة المشاهدات.

تغير إلى:

if (array_key_exists('node', $vars))

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

1
Dominic Woodman

وفي الوقت نفسه هناك وحدة لهذا الغرض. من صفحة الوحدة:

الحقل ككتلة يوفر طريقة سهلة لعرض حقل واحد أو أكثر من العقدة الحالية في كتلة.

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

0
phils