আমি কীভাবে ডিফল্ট অ্যাপাচি সোলার ইউআরএল পাথটিকে "অনুসন্ধান / অ্যাপাচোলার_সার্চ / শব্দ" থেকে অন্য কিছুতে পরিবর্তন করতে পারি?
আমি কীভাবে ডিফল্ট অ্যাপাচি সোলার ইউআরএল পাথটিকে "অনুসন্ধান / অ্যাপাচোলার_সার্চ / শব্দ" থেকে অন্য কিছুতে পরিবর্তন করতে পারি?
উত্তর:
আমি সাধারণত যেভাবে এটি করেছি তা হুক_মেনু_াল্টার () প্রয়োগ করা। তারপরে আপনি নিজের পছন্দ মতো সঠিকভাবে ইউআরএলটি কাস্টমাইজ করতে পারেন:
/**
* Implements hook_menu_alter().
*/
function example_menu_alter(&$menu) {
// Ensure Apache Solr is the default and that the menu item exists.
if (variable_get('apachesolr_search_make_default', 0) && isset($menu['search/apachesolr/%menu_tail'])) {
$menu['search/%menu_tail'] = $menu['search/apachesolr/%menu_tail'];
unset($menu['search/apachesolr/%menu_tail']);
}
}
আপনি যদি কেবল অ্যাপাচোলার অনুসন্ধান মডিউল ব্যবহার করে থাকেন তবে অনুসন্ধানের পথটি পরিবর্তন করা তুচ্ছ নয়। যেহেতু এটি মূল অনুসন্ধান মডিউলের উপর নির্ভরশীল, তাই পথটি প্রায় হার্ড-কোডড। এটি অনুসন্ধান / {মডিউল} /% মেনু_ টেইলে নির্ভর করে। আপনি যদি অনুসন্ধান_দর্শন () , অনুসন্ধান মডিউলের কলব্যাকের দিকে নজর দেন তবে আপনি দেখতে পাবেন যে এটি অনুসন্ধান_গেট_কেজ () কল করে , যা প্রত্যাশা করে যে অনুসন্ধান কীগুলি কোনও নির্দিষ্ট অংশে রয়েছে। অ্যাপাচাসলার অনুসন্ধান মডিউলটি কীগুলি পেতে এই ফাংশনটিও ব্যবহার করে, তাই একটি সাধারণ হুক_মেনু_াল্টার () প্রয়োগ করে এটি নিজের কাজ করবে না।
এখানে অন্য উত্তরে যেমন উল্লেখ করা হয়েছে, আপনি যদি ভিউজ ৩.০ চালাতে সক্ষম হন তবে আপনার সেরা বেটটি অ্যাপাচাসলারের দর্শন মডিউলটি ব্যবহার করা । এই মডিউলটির সাহায্যে আপনি অনুসন্ধানের ফলাফলের জন্য সহজেই সংখ্যক কাস্টম পাথ নির্ধারণ করতে পারেন।
যদি আপনি ৩.x চালাতে না পারেন তবে ডিফল্ট অনুসন্ধানের পথটি সফলভাবে পরিবর্তন করতে আপনাকে ফর্ম অল্টার (বিশেষত, অনুসন্ধান_ফর্ম) এবং কাস্টম মেনু কলব্যাকের সংমিশ্রণ ব্যবহার করতে হবে।
আপনি এটিকে সেটিংসে রেখে দিলে এটি কাজ করা উচিত ph
function custom_url_rewrite_outbound(&$path, &$options, $original_path) {
// Filter to get only the apache solr links with filters so it doesn't launch it for every link of our website
if ($path == 'search/apachesolr_search/' && strpos($options['query'], 'filters') !== FALSE) {
$new_path = $path.'?'.urldecode($options['query']);
// See if we have a url_alias for our new path
$sql = 'SELECT dst FROM {url_alias} WHERE src="%s"';
$row = db_result(db_query($sql, $new_path));
// If there is a dst url_alia, we change the path to it and erase the query
if ($row) {
$path = $row;
$options['query'] = '';
}
}
}
function custom_url_rewrite_inbound(&$result, $path, $path_language) {
// See if we have a url_alias for our new path
$sql = 'SELECT src FROM {url_alias} WHERE dst="%s"';
$row = db_result(db_query($sql, $path));
if ($row) {
// We found a source path
$parts = preg_split('/[\?\&]/', $row);
if (count($parts) > 1) {
$result = array_shift($parts);
// That's important because on my website, it doesn't work with the / at the end of result
if ($result[strlen($result) - 1] == '/') {
$result = substr($result, 0, strlen($result) - 1);
}
// Create the $_GET with the filter
foreach ($parts as $part) {
list($key, $value) = explode('=', $part);
$_GET[$key] = $value;
// Add this because the pager use the $_REQUEST variable to be set
$_REQUEST[$key] = $value;
}
}
}
}
এবং তারপরে আপনি যখন একটি মেনু এন্ট্রি তৈরি করবেন, আপনি অ্যাপাচি সলারের সাথে লিঙ্কটি রেখেছেন: অনুসন্ধান / অ্যাপাচেসোলার_সার্চ /? ফিল্টার = জোড়: 13
এবং অনুসন্ধানের জন্য একটি ইউআরএল ওরফে তৈরি করুন / অ্যাপাচেসোলার_সার্চ /? ফিল্টারগুলি = টিড: 13 পণ্য / টিভি.html এর মতো
এর মাধ্যমে পাওয়া গেছে: http://drupal.org/node/783836#comment-4136475
আপনি আপনার সাইট অনুসন্ধানের জন্য সোলার দর্শন ব্যবহার করতে পারেন ।
উন্নত ওয়েবের ছেলেরা দ্বারা হুক_মেনুর সাথে কাস্টম অনুসন্ধানের পথ যুক্ত করে দেখুন । তারা কীভাবে তাদের সোলার অনুসন্ধানের জন্য বন্ধুত্বপূর্ণ ইউআরএল তৈরি করতে একটি কাস্টম মডিউল লিখেছিল সে সম্পর্কে এটি আলোচনা করে। আপনার সম্ভবত এটি কিছুটা টুইট করতে হবে, তবে এটি একটি ভাল সূচনার পয়েন্ট।
সেই পথে অ্যাপাচেসোলার রিটার্নের ফলাফলগুলি তৈরি করতে নিম্নলিখিতগুলির মতো একটি নতুন মেনু কলব্যাক তৈরির বিষয়ে কী?
$menu['search']['page callback'] = 'apachesolr_search_view';
অথবা আপনি কেবল এটির জন্য একটি অবদানযুক্ত মডিউলটি সংশোধন করতে পারেন: অ্যাপাচি সোলার কাস্টম পাথ ।
আপনি যদি কেবল অনুসন্ধান / অ্যাপচলসার_সার্চ / অন্য কোনও কিছুতে পরিবর্তন করতে চান, উদাহরণস্বরূপ 'ইনভেন্টরি', আপনি গ্লোবাল রিডাইরেক্ট মডিউলটি চেষ্টা করতে পারেন ।
কৌশলটি হ'ল 2 টি এলিয়াস তৈরি করা - একটি অনুসন্ধান / অ্যাপাচেসোলার_সার্চ / (দিকযুক্ত আইটেমগুলির জন্য) এবং অন্য একটি স্ল্যাশ ছাড়াই (মূল অনুসন্ধান পৃষ্ঠার জন্য) তৈরি করা। গ্লোবাল রিডাইরেক্ট একই গন্তব্যের জন্য 2 টি এলিয়াস তৈরি করতে অস্বীকার করতে পারে তবে আপনি এটি সরাসরি ডিবিতে inোকাতে পারেন।