it-swarm.asia

ابحث فقط عن اللغة النشطة حاليًا

كيف يمكنني تقييد النتائج من البحث الافتراضي في Drupal 7 ، لإحضار العقد الموجودة باللغة الحالية فقط؟

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

22
Israel Rodriguez

يمكنك استخدام العالمية $language أن تعرف بأي لغة أنت. في طرق العرض ، يمكنك التصفية باستخدام "content: language -> لغة المستخدم الحالية".

2
Ahmed

هناك طريقة أنيقة حقًا للقيام بذلك باستخدام hook_query_node_access_alter() الذي يبدو أنه غير موثق:

function yourmodule_query_node_access_alter(QueryAlterableInterface $query) {
  $search = FALSE;
  $node = FALSE;

  // Even though we know the node alias is going to be "n", by checking for the
  // search_index table we make sure we're on the search page. Omitting this step will
  // break the default admin/content page.
  foreach ($query->getTables() as $alias => $table) {
    if ($table['table'] == 'search_index') {
      $search = $alias;
    }
    elseif ($table['table'] == 'node') {
      $node = $alias;
    }
  }

  // Make sure we're on the search page.
  if ($node && $search) {
    $db_and = db_and();
    // I guess you *could* use global $language here instead but this is safer.
    $language = i18n_language_interface();
    $lang = $language->language;

    $db_and->condition($node . '.language', $lang, '=');
    $query->condition($db_and);
  }
}

ملحوظة: هذا الكود 100٪ مبني على ممتاز تكوين البحث الوحدة.

لغة المستخدم مقابل المحتوى

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

في هذه الحالة ، ضع في اعتبارك الاستبدال

$language = i18n_language_interface();

مع

$language = i18n_language_content();
25
Alex Weber

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

4
Kojo

يمكنك استخدام وحدة عرض المجموعة حيث يمكنك تحديد خيار عرض الوضع-> اللغة الذي يعطي نتائج البحث باللغة الحالية الموجودة بلغة الموقع الحالية.

0
Akshay Sawant

لست متأكدًا من أن البحث الأساسي يدعمه.

أرى المشروع i18nluceneapi ولكنه لا يدعم الإصدار 7 في الوقت الحالي.

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

0
Sang Le Thanh