কেবলমাত্র বর্তমানে সক্রিয় ভাষার জন্য অনুসন্ধান করুন


23

বর্তমান ভাষায় কেবলমাত্র নোডগুলি আনতে আমি কীভাবে দ্রুপাল 7-এ ডিফল্ট অনুসন্ধান থেকে ফলাফলগুলিকে সীমাবদ্ধ রাখতে পারি?

আমার ওয়েবসাইটে একটি তিনটি ভাষা পরিবর্তনকারী রয়েছে; ব্যবহারকারী সাইটটি দেখার সময় কোন ভাষাটি ব্যবহার করতে চান তা চয়ন করে। তিনি যদি কিছু অনুসন্ধান করেন, ফলাফল পৃষ্ঠাটি অন্য ভাষা থেকে ফলাফল নিয়ে আসে। আজ আমার কাছে কেবল 3 টি সক্রিয় ভাষা রয়েছে তবে আমরা এটিকে 6 বা তার বেশি প্রসারিত করার পরিকল্পনা করছি plan

উত্তর:


2

আপনি $languageকোন ভাষায় আছেন তা জানতে আপনি বৈশ্বিক ব্যবহার করতে পারেন । দর্শনে, আপনি "সামগ্রী: ভাষা -> বর্তমান ব্যবহারকারীর ভাষা" ব্যবহার করে ফিল্টার করতে পারেন।


3
কিভাবে এই সাহায্য করে? আপনি কি অনুসন্ধানের পৃষ্ঠাটি নোডের সাথে প্রতিস্থাপন করতে পারেন? এর কি কোনও ত্রুটি আছে?
জাম্পার

25

আপাতদৃষ্টিতে অনির্ধারিত ব্যবহার করে এটি করার একটি সত্যই মার্জিত উপায় রয়েছে 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 বা সামগ্রী সামগ্রীর উপর ভিত্তি করে দেখানো হয় shown

সেক্ষেত্রে প্রতিস্থাপন বিবেচনা করুন

$language = i18n_language_interface();

সঙ্গে

$language = i18n_language_content();

নিখুঁতভাবে কাজ করে, তবে এটি কি সাইটের কোনও প্রশ্নের উপর প্রভাব ফেলবে যেমন ভিউ মডিউল থেকে উত্পন্ন উত্স, বা ডিফল্ট "অনুসন্ধান / নোড /%" এর পরিবর্তে কোনও ভিত্তিক ড্রুপাল কোয়েরি?
মোহাম্মদ সালাম

@ মোমাদসালাম এটি নোড অ্যাক্সেসকে প্রভাবিত করে এমন সমস্ত অনুসন্ধানের প্রশ্নের উপর প্রভাব ফেলবে; অন্য কথায়, বেশিরভাগ ভিউয়ের প্রশ্নগুলি প্রভাবিত করা উচিত যদি না আপনি উন্নত সেটিংসে নোড অ্যাক্সেস চেকগুলি সুনির্দিষ্টভাবে অক্ষম করেন (আমার মাথার উপরের অংশ এবং অবিশ্বস্ত)।
অ্যালেক্স ওয়েবার

এটি কোনও অনিবন্ধিত হুক নয় - এটি আসলে হুক_উইকি_এইচএজি_এলটার () হুক, যেখানে ট্যাগটি 'নোড_অ্যাক্সেস'। আমার নিজের কোডটি জিজ্ঞাসায় ইতিমধ্যে কোনও ভাষার শর্ত নেই বলে তা পরীক্ষা করে দেখেছে, তবে অন্যথায় বেশ অনুরূপ।
জন ফিয়ালা

4

আমার একই প্রয়োজনীয়তা ছিল এবং আমি কাস্টম অনুসন্ধান মডিউলটি ব্যবহার করেছি , যার মধ্যে কাস্টম অনুসন্ধান আন্তর্জাতিকীকরণ নামে একটি সাবমডিউল রয়েছে : " কেবলমাত্র সমস্ত বা বর্তমান ভাষা থেকে সামগ্রী অনুসন্ধান করুন এবং সমস্ত লেবেল এবং নির্বাচক অনুবাদ হ্যান্ডলিং " (নোট এই মডিউলটি আরও বেশ কয়েকটি সহায়ক সরবরাহ করে কাস্টম অনুসন্ধান ব্লকগুলির মতো বৈশিষ্ট্য)। পুরোপুরি কাজ করে।


0

আমি নিশ্চিত না যে অনুসন্ধান কোর এটি সমর্থন করে।

আমি i18nluceneapi প্রকল্পটি দেখতে পাচ্ছি তবে এই মুহুর্তে এটি 7 সংস্করণ সমর্থন করে না।

আমি সন্ধানচি ব্যবহার করছি এবং ভাষা তৈরি করবো :)। এটি আপনার কেসটির জন্য ব্যবহার করতে পারে, অনুসন্ধান পৃষ্ঠায় ফেসবুকে এবং ডিফল্ট ফিল্টার তৈরি করতে পারে।


0

আপনি প্রদর্শন স্যুট মডিউলটি ব্যবহার করতে পারেন যেখানে আপনি ভিউ মোড-> ভাষা নির্বাচন করতে পারেন যা বর্তমান সাইটের ভাষাতে বর্তমান ভাষার সন্ধানের ফলাফল দেয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.