تصویر مجید جعفری

وقتی در یک سایت دروپالی ، میخواهید لیستی از موجودیت های خود را نمایش دهید اولین راه حلی که به ذهن شما خطور میکند استفاده از Views می باشد . اما وقتی سایت شما از محدوده سایت های کوچک بیرون می آید استفاده از Search API و بهره گیری از Facet APIگزینه بهتر و معقول به نظر می رسد.
این موضوع به این دلیل مورد توجه قرار میگیرد که میزان درخواست های دروپال به دیتابیس کاهش می یابد و در واقع به جای آنکه در هر بار جستجو کل جداول مربوط به آن موجودیت مورد بررسی قرار گیرد ، همه اطلاعات مورد نیازجهت لیست نمودن و جستجو بر روی آن موجودیت  را بر روی یک جدول ذخیره میکنیم .

همچنین با کمک Facet API می توان به کاربران این امکان را واگذار کرد که به راحتی دامنه جستجوی خود را ازبین نتایج حاصل محدود کنند و به کاربر در رسیدن به مقصود اصلی خود از جستجو کمک نماییم.
 

مراحل نصب و تنظیم Facet API در دروپال:

ابتدا ماژول های Search API ، Search database و Facet API را نصب و فعال می نماییم . همچنین جهت ادغام Search API و Facet API باید Search Facets را نیز فعال نماییم.(پیش نیاز ماژول های فوق ماژول Entiyty می باشد).

بعد از فعال سازی این افزونه ها مراحل زیر را انجام می دهیم.

1- تعریف سرور
به مسیر admin/config/search/search_api در سایت دروپالی خود رفته و بر روی Add server کلیک می نماییم.

Add server

در صفحه باز شده و در قسمت Server name نام سرور جدید را وارد می نماییم (به طور مثال Facet server را وارد نمایید ).
همچنین در Service class گزینه Database service را انتخاب می نماییم.
در Minimum word length می توان تعیین کرد که حداقل طول کاراکترهایی که نیاز به فهرست نمودن داریم را تعیین میکنیم.
تنظیمات سرور
در انتها بر روی Create server کلیک میکنیم.

2- تعریف Index 

دوباره به مسیر admin/config/search/search_api باز میگردیم و این بار بر وی Add index کلیک میکنیم.
ایجاد index

در این صفحه نام فهرست کننده را وارد میکنیم.
در قسمت Item type نوع محتوایی را که فصد داریم Search API دروپال فهرست ( index ) کند را انتخاب میکنیم.
در قسمت Server نام سروری را که در مرحله قبل تعریف کردیم انتخاب می نماییم.
از آنجا که اطلاعات جدید بعد از هربار اجرای Cron فهرست می شوند ، در صورتی که تمایل دارید ، اطلاعات جدید ثبت شده و یا اطلاعاتی که به روز رسانی می شوند بلافاصله بعد از ثبت و یا تغییر index گردند ، گزینه Index items immediately را فعال می کنیم.البته فعال کردن این گزینه ممکن است مشکلات جدی در کارایی سایت به وجود آورد و برای وب سایت های بزرگ توصیه نمی شود.
در بخش Cron batch size می توانید تعداد گزینه هایی که در هر بار اجرای Cron می بایست فهرست شوند را تنظیم نمایید . اگر تصمیم دارید هیچ گزینه ای فهرست نشود عدد 0 و اگر میخواهید بعد از اجرای هر Cron همه Item ها فهرست شوند -1 را وارد نمایید.
تنظیمات index دروپالبر روی Create index کلیک میکنیم.

3- تنظیم فیلد هایی که نیاز به فهرست آن ها داریم

بعد از تعریف سرور و Index به صفحه تنظیمات Index تعریف شده رفته و در تب FIELDS ، فیلد های مورد نظر خود را فعال می نماییم . ( برای این مثال ما فیلد های Title  و برچسب را انتخاب میکنیم ) .
همچنین می توان از بخش ADD RELKATED FIELDS ، موجودیت هایی که با این موجودیت در ارتباط هستند را اضافه نماییم ، به طور مثال اطلاعات مربوط به نویسنده .
انتخاب فیلدها جهت index

4- محدود کردن دامنه Index

در تب FILTERS می توان دامنه فهرست خود را تعیین کنیم (مثلا نوع محتوا ) و اعمالی را که برای قبل و بعد از پردازش نیازمندیم را معین کنیم.
به طور مثال  Bundle filter را انتخاب نمایید. در بخش Data alteration processing order (همین صفحه ) گزینه Bundle filter نمایان می شود . و در Callback settings می توانید تعیین کنید که کدام نوع از محتوا ایندکس شود و یا نشود .
تعیین دامنه فهرستو بر روی Save configuration کلیک کنید.

5- تنظیم Facet

در تب Facet انتخاب میکنیم که از کدام یک از فیلدهای فهرست شده ، بلوک ساخته شود تا در صفحه جستجو و برای محدود نمودن نتایج مورد استفاده قرار گیرند . برای مثال ما از فیلد "برچسب"  یک بلوک تهیه میکنیم.
ایجاد بلوک Facetبعد از اینکه بر روی Save configuration کلیک کردید ، بلوک مورد نظر ایجاد می شود و میتوانید تنظیمات آن بلوک شامل نحوه نمایش ، وابستگی به شرط خاص ، محدود کردن نتایج را انجام داده و یا از بلوک Facet خود export تهیه کنیم .
    در این مثال نحوه نمایش نتایج بلوک خود را به صورت لینک و check box تغییر می دهیم .
بر روی configure display (روبروی فیلد برچسب )‌کلیک کنید .
در Display widget گزینه "Links with checkbozes" را انتخاب نمایید.

تنظیم نحوه نمایش بلوک Facet
همچنین می توانید در Soft limit تعداد آیتم هایی را که میخواهید در بلوک نمایش دهید را تعیین کنید.

6- فهرست نمودن محتوا

دوباره به admin/config/search/search_api باز گردید و در روبروی Index تعریف شده ، بر روی Edit کلیک نمایید.
به تب VIEW رفته . دراین صفحه بر روی Index کلیک نمایید .
اگر تمام مراحل را به درستی انجام داده باشین ، پیغام "Successfully indexed n items." ( حرف "n" عددی می باشد که شما در مرحله2 تعیین نموده اید) نمایان می شود که بیانگر این است که تنظیمات Search API را در دروپال به درستی انجام داده اید مرحله فهرست نمودن تکمیل گردیده است .

نمایش پیغام ایندکس شدن صحیح

7-نمایش نتایج جستجو در views

برای اینکه نتایج حاصل از Index که توسط Search API ایجاد کردیم را نمایش دهیم از قدرت views در دروپال بهره می بریم . البته برای اینکار ابتدا باید ماژول views search را فعال نمایید .
سپس در مسیر admin/structure/views/add ، بعد از وارد کردن نام برای "نما" در قسمت Show گزینه ای را که بیانگر نام تعریف شده برای Index ( مرحله 2) می باشد را انتخاب نمایید.
انتخاب ایندکسبعد از ذخیره نما به صفحه تنظیمات آن رفته و فیلد های مورد نظر جهت نمایش را مشخص میکنیم.

حال به صفحه نمای ایجاد شده رفته و فیلد های مورد انتخاب خود را مشاهده میکنیم.

صفحه جستجوی دروپال

8- تعیین ناحیه نمایش بلوک ایجاد شده توسط Facet API

در مسیر admin/structure/block می توانید بلوک یا بلوک های Facet که در مرحله 5 ایجاد کردید را مشاهده و ناحیه مورد نظر جهت نمایش آن ها را مشخص نمایید.
بعد از انجام تنظیم ناحیه نمایش ببلوک  دوباره به صفحه ایجاد شده توسط views باز گردید. در این صفحه بلوک Facet را مشاهده می نمایید که با فعال نمودن تیک مربوط به هر برچسب محتواهای نمایش داده شده محدود به همان گزینه می شوند (لازم به ذکر است که این بلوک فقط در صفحه views ایجاد شده از آن Index نمایش داده می شود).
نمایش بلوک Facet در صفحه views

دیدگاه‌ها

تصویر منم

منم (تایید نشده)

کارتون درسه

تصویر هادی ملائی

هادی ملائی (تایید نشده)

آقای جعفری سلام
می خواستم امروز یک متنی توضیحی درباره Search api در سایتم بگذارم. اومدم این مطلب رو خوندم پشیمون شدم. خیلی عالی شد. لینک بهش می دم.

افزودن نظر جدید