it-swarm.asia

Drupal 7 - منع إخراج العقد في صفحات التصنيف

هل هناك طريقة لقمع إخراج العقد على صفحات التصنيف ، دون الحاجة إلى تثبيت وحدة نمطية (أي فقط في template.php)؟

العقد التي تم تمييزها بمصطلح تصنيف تظهر في "صفحة فهرس التصنيف" (مثل yoursite.com/taxonomy/term/ [معرف]).

الجديد في Drupal 7 ، يمكن أن تحتوي صفحات مؤشر التصنيف على حقول مرتبطة بها. ومع ذلك ، إذا حاولت تجاوز صفحة التصنيف مع عرض (للتحكم في كيفية عرض العقد) ، لن تظهر الحقول في صفحات فهرس التصنيف.

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

ولهذا السبب ، لا تزال صفحة التصنيف تُخرج عُقدها. يمكنني إخفاؤها عن طريق تعيين الجملة المحفزة للعُقد المخفية ، لكنها لا تزال تُحمّل العقد (وبالتالي أي CSS/Jquery متصل بالعقد على الرغم من عدم عرض العقد). كيف يمكنني منع ظهور العقد ، من الناحية المثالية من داخل template.php؟

10
big_smile

أعلم أن هذا يريد حلاً بدون وحدة نمطية ، ولكن في Drupal 7 ، هناك وحدة نمطية تفعل ما تريده بالضبط: Disable Term Node Listings

يتيح لك الاختيار لكل مفردات ، إذا كنت ترغب في تعطيل إخراج قائمة المصطلحات.

5
Martin Schlagnitweit

الحل من http://www.wardontheweb.com/remove-node-lists-from-taxonomy-pages-in-drupal-7/ يعمل جيدًا بالنسبة لي:

function THEMENAME_preprocess_page(&$vars){
   if (arg(0) == 'taxonomy' && arg(1) == 'term' && is_numeric(arg(2))){
     unset($vars['page']['content']['system_main']['nodes']);
     unset($vars['page']['content']['system_main']['pager']);
     unset($vars['page']['content']['system_main']['no_content']);
   }
}

ملاحظة: يجب عليك إعادة تعيين ذاكرة التخزين المؤقت لموقعك.

8
Peter Lozovitskiy

يجب عليك إزالة العقد من متغير $ page.

في template.php يمكنك القيام بذلك على النحو التالي:

function MY_THEME_preprocess_page(&$variables) {
  if(arg(0) == "taxonomy" && arg(1) == "term") {
    $variables['page']['content']['system_main']['nodes'] = null;
  }
}

في page.tpl.php استخدم هذا الكود:

if(arg(0) == "taxonomy" && arg(1) == "term"){
  $page['content']['system_main']['nodes'] = null;
}

هذا يزيل العقد من جميع المفردات والمصطلحات. إذا كنت تريد إزالتها فقط بشروط معينة أو جميع المصطلحات من استخدام المفردات arg(2) التي تحتوي على tid لتحميل المصطلح ثم تحديث العبارة if.

2
Martin Schlagnitweit

كنت أستخدم CSS لإخفاء عناصر التصنيف ، ولكن ضبط عرضها على التخصيص والقطع يبدو خيارًا أفضل.

0
Joseph Coco

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

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

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

0
marcvangend