it-swarm.asia

كيف أقوم بتخصيص صفحة نتائج البحث؟

لقد قمت بتخصيص عرض الجملة المحفزة لأنواع المحتوى الخاصة بي وعرض الصفحة. أحتاج الآن إلى استخدام عرض الجملة المحفزة لصفحة نتائج البحث. افتراضيًا ، Drupal فوضى مختلطة النص الكامل لكل نتيجة ، أحتاج إلى أن أكون قادرًا على تخصيص مظهر كل واحد لكل نوع محتوى. لا أريد تغيير HOW drupal على النتائج ، فقط كيف يعرضها.

39
J-Fiz

يمكنك تجاوز theme_search_results () أو theme_search_result ().

الأول هو وظيفة السمة التي يتم استدعاؤها لصفحة نتائج البحث ، بينما الثانية هي وظيفة السمة التي يتم استدعاؤها لتقديم نتيجة واحدة. تستخدم كلتا الدالتين سمة ملف ( search-results.tpl.php في الحالة الأولى --- search-result.tpl.php في الحالة الثانية).

search-result.tpl.php ستستخدم $info_split['type'] في Drupal 6 ، الذي يحتوي على نوع العقدة. في أحدث Drupal 7 الإصدار ، $info_split['type'] لم يعد يمر ، ولكن search-result.tpl.php لا يزال يحصل $result['node'] ، في حالة البحث عن العقد ؛ $result['node']->type هو نوع محتوى العقدة.

لاحظ أن Drupal 7 ، وأعلى ، يسمح للوحدات بتنفيذ hook_search_page () ، ولكنه ربط يستخدم من قبل وحدة تتكامل مع وحدة البحث ، ليس من وحدة نمطية تريد تغيير صفحة النتائج للنتائج التي يتم إرجاعها بواسطة وحدة أخرى.
أيضًا ، في Drupal 7 ، تستخدم كل وظيفة سمة وظيفة ما قبل المعالجة ، والتي ستكون في هذه الحالة hook_preprocess_search_results () و hook_preprocess_search_result () . وهي مفيدة في حالة ما إذا كنت تحتاج فقط إلى تحرير قيمة ما تم تمريره إلى ملف القالب.

28
kiamlaluno

في Drupal 7 تستخدمه ...

... للعبث بالمعلومات المعروضة في النتائج.

وأنت تستخدم ...

... لتخصيص ترميز النتائج.

مثال

هذا مثال لكيفية استخدام الجملة المحفزة لنوع المحتوى كنتيجة بحث. المقتطف التالي يذهب في template.php السمة

/**
 * Implements template_preprocess_search_result
 * @param type $vars
 */
function MYTHEME_preprocess_search_result(&$vars) {
  $node = $vars['result']['node'];
  if ($node->nid) { // if the result is a node we can load the teaser
    $vars['teaser'] = node_view($node, 'teaser'); 
  }
}

هذا المقتطف هو ملف search-result.tpl.php:

<article>
  <?php if ($teaser) : // for nodes we can use the teaser as search result ?>
    <?php print drupal_render($teaser); ?>
  <?php else : // for other results we use the default from core search module ?>  
    <?php print render($title_prefix); ?>
    <h3><a href="<?php print $url; ?>"><?php print $title; ?></a></h3>
    <?php print render($title_suffix); ?>
    <?php if ($snippet) : ?>
      <p><?php print $snippet; ?></p>
    <?php endif; ?>
  <?php endif; ?>
  <?php if ($info): ?>
    <footer><?php print $info; ?></footer>
  <?php endif; ?>
</article>
18
batigolix

لقد قضيت مؤخرًا قدرًا كبيرًا من الوقت في العمل مع نتائج البحث على موقع الويب Drupal 7 ، واستقرت على استخدام Display Suite .

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

كما هو الحال دائمًا مع Drupal ، هناك مجموعة متنوعة من الطرق للقيام بنفس الشيء. لقد أحببت هذه الطريقة لأنها أتاحت لي الكشف عن النتائج حسب نوع المحتوى.

9
woop