it-swarm.asia

كيف يمكنني إنشاء عرض للعقد الفرعية بناءً على علاقة القائمة؟

لنفترض أن لديك الصفحات التالية في شجرة قائمة:

  • المشاريع
    • مشروع واحد
    • المشروع الثاني
    • المشروع الثالث

أنا أبحث عن طريقة لإنشاء طريقة عرض سيتم تضمينها في صفحة المشروع (الأصل) والتي ستعرض صورة وعنوان ونص (ملخص) من الصفحات الفرعية.

يتم تعريف العلاقة بين الوالدين والأطفال في شجرة القائمة.

أعلم أنه يمكنني استخدام مرجع العقدة ، ولكن هذا يعني أنه في كل مرة يقوم فيها شخص ما بإنشاء صفحة ، سيتعين عليه تحديد علاقة القائمة ثم علاقة مرجع العقدة.

أعلم أيضًا أنه يمكنني إنشاء نوع محتوى آخر ولكن أعتقد أن هذا مبالغ فيه حيث تبدو جميع صفحات المحتوى متشابهة.

17
Camsoft

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

4
Adam S

يمكنك القيام بذلك بالضبط باستخدام Menu Node API و Menu Node Views الوحدات النمطية.

أنشئ طريقة عرض بنوع المحتوى المطلوب ، واختر عامل تصفية سياقي لـ "القائمة: معرف ارتباط القائمة" (لا يتوفر هذا إلا مع الوحدات المذكورة أعلاه مثبتة).

ضمن "عندما لا تكون قيمة الفلتر متاحة" ، حدد "تقديم القيمة الافتراضية" واختر "كود PHP".

سيقوم المقتطف التالي بذلك ، ثم تقوم فقط بكشف كتلة من العرض وأنت هناك:

if (function_exists('menu_node_get_links')){  
   $node = node_load(intval(arg(1)));  
   if (isset($node->menu_node_links)){
      foreach($node->menu_node_links as $mlid=>$data){  
         return $mlid;
      }  
   }
}
16
Emile Kott

تسمح Node Hierarchy Module بهذا النوع من العلاقات ، بالإضافة إلى توفير تكامل المشاهدات.

يسمح التسلسل الهرمي للعقد أن تكون العقد تابعة للعقد الأخرى التي تنشئ تسلسلاً هرميًا للمحتوى يشبه الشجرة. تقدم الوحدة:

  • 1-انقر فوق إنشاء قوائم هرمية
  • فتات الخبز الهرمية
  • عناوين url الهرمية التلقائية باستخدام Pathauto (ووحدة الرمز المميز)

    (على سبيل المثال: q = aboutus/history/البداية).

  • إنشاء قوائم هرمية تلقائيًا إذا رغبت في ذلك.
  • تكامل المشاهدات الاختيارية.
  • اختياري Node تكامل الوصول.
4
CCMonkey

ربما تغير هذا بالنسبة إلى D7/طرق العرض 3 ، ولكنك لست بحاجة إلى أي PHP من أجل تحقيق السلوك المطلوب:

  1. تثبيت menu_views ، menu_node و menu_node_views الوحدات النمطية.
  2. إنشاء عرض جديد لنوع "شجرة القائمة"
  3. إضافة حقلين "القائمة: عنوان الرابط" و "القائمة: الوصف"
  4. إضافة عامل تصفية/وسيطة سياقية "القائمة: Node ID"؛ توفير القيمة الافتراضية "Content ID from URL"
  5. إضافة علاقة "القائمة: معرف ارتباط القائمة الرئيسية"

هاهو. إنه لا ينبغي أن يعمل ، ولكنه يعمل.

يعمل بشكل جيد مع العقد فقط ، ولكن ميزة استخدام روابط القائمة عبر التسلسل الهرمي للعقد هي أنك لا تقتصر على بناء التنقل حول العقد. يمكنك حتى تضمين روابط خارجية في وجهة نظرك.

2
aaronbauman

هناك وحدة نمطية جديدة نسبيًا قائمة المشاهدات Node Filter Filter يبدو أنها تفعل ما تريده بالضبط:

تضيف هذه الوحدة مرشحًا سياقيًا إلى طرق العرض التي تقوم باسترداد العقد الفرعية للعقدة وفقًا لبنية القائمة.

2
nwellnhof

إذا كنت تستخدم ترجمة الكيان وترتبط العقدة بقوائم مختلفة ، فإليك تعديل للرمز الذي يرشح اللغة الحالية. أنت بحاجة إلى نسخ هذا كـ PHP لعامل التصفية السياقي (معرف ارتباط القائمة الرئيسية) في طريقة العرض الخاصة بك كما هو موضح في الإجابات الأخرى

 if (function_exists('menu_node_get_links')) {
global $language;
$lang = $language->language;
$node = node_load(intval(arg(1)));
if (isset($node->menu_node_links)) {
  foreach ($node->menu_node_links as $mlid => $data) {  
    if ($lang == $data->language) {
      return($mlid);
    }
  }
}
  }
0
bendev

الجواب من Emile صحيح ، لكن كان علي أن ألصق الرمز المذكور PHP code in a contextual filter من النوع " القائمة: معرف ارتباط القائمة الرئيسية ".

if (function_exists('menu_node_get_links')){  
   $node = node_load(intval(arg(1)));  
   if (isset($node->menu_node_links)){
      foreach($node->menu_node_links as $mlid=>$data){  
         return $mlid;
      }  
   }
}
0
cptstarling

هل فكرت في استخدام مرجع العقدة لهذا الغرض؟

  1. قم بتوفير حقل مرجع العقدة لنوع المحتوى الذي تريد عرضه.
  2. استخدم هذا الحقل كمرشح سياقي في طريقة العرض (القيمة الافتراضية: Content ID من url ).
  3. أضف عرض العرض هذا ككتلة إلى المحتوى. سيتم النظر إلى العقدة التي يتم عرضها فيها على أنها أصل العقد التي تشير إليها على سبيل المثال.

وبالتالي يمكنك تحقيق نتيجة مشابهة ربما تبحث عنها.

0
cptstarling

من قائمة انتظار الإصدار من القائمة Node المشاهدات لدينا هذا الحل الجميل:

  • إضافة عامل تصفية سياقي باستخدام "معرف ارتباط القائمة الرئيسية" ،
  • حدد "تقديم القيمة الافتراضية"
  • حدد "كود php مخصص"
  • أدخل الرمز التالي

    $menu_item = menu_get_active_trail();  
    $current_item = array_pop($menu_item);  
    $menu_item_plid = $current_item['plid'];  
    return $menu_item_plid;  
    
0
tostinni