توفر هذه الحزمة واجهة موحدة للبحث عن النص الكامل مع محركات بحث مختلفة ووحدة تحكم مع قوالب فرعية لعرض نماذج البحث ونتائجه.
ملاحظة: أنت تنظر إلى الإصدار 2 من هذه الحزمة، والذي شهد تغييرات كبيرة مقارنة بالإصدار 1.
تعمل حزمة البحث هذه على تبسيط عملية إضافة البحث إلى موقعك.
المقدمة لك هي:
في الوقت الحالي، يتم دعم بحث موقع Google بشكل جاهز. يوجد تنفيذ واحد باستخدام Google REST API وتنفيذ واحد باستخدام ميزة عنصر البحث المخصص التي تقوم بتحميل البحث باستخدام جافا سكريبت فقط في الواجهة الأمامية.
المساهمات في الخدمات الأخرى هي موضع ترحيب.
تثبيت الحزمة مع composer require liip/search-bundle
.
قم بتضمين الحزمة في app/Kernel.php.
أضف محرك البحث المفضل لديك في app/config/config.yml:
liip_search :
clients :
google_rest :
api_key : ' %google.api_key% '
search_key : ' %google.search_key% '
أو إذا كنت تستخدم محرك البحث المخصص جافا سكريبت Google:
liip_search :
clients :
google_cse :
cse_id : ' %google.search_key% '
يمكنك عرض مربع بحث في أي مكان على الصفحة باستخدام وظيفة liip_search_box twig:
{{ liip_search_box(query, 'query-field-id', 'css-class') }}
يمكنك تخصيص مربع البحث باستخدام هذه المعلمات:
<form>
.قم بإنشاء مسار لإجراء البحث. الأسهل هو استخدام routing.xml المقدم من routing.xml لمشروعك الرئيسي:
liip_search:
resource: "@LiipSearchBundle/Resources/config/routing.xml"
يتم تعيينه افتراضيًا على عنوان URL /search
. إذا كنت تريد مسارًا مختلفًا، فاستخدم خيار prefix
عند تضمين المسار أو قم بتكوين المسار الخاص بك باستخدام %liip_search.controller.search_action%
كقيمة افتراضية لـ _controller
.
تعمل قوالب نتائج البحث التي توفرها هذه الحزمة على توسيع قالب LiipSearchBundle::layout.html.twig
. للتكامل مع بقية موقعك، لديك خياران:
app/Resources/LiipSearchBundle/views/layout.html.twig
واجعله يوسع تخطيطك الأساسي، مع وضع كتلة liip_search_content
حيث تريد نتائج البحث.app/Resources/LiipSearchBundle/views/Search/search.html.twig
وأنشئ بنية القوالب الخاصة بك - يجب أن تكون قادرًا على use
قالب search_results.twig.html
للحصول على كتلة liip_search_content
.بالطبع يمكنك أيضًا تجاوز أي من القوالب لتخصيص ما يجب عليهم فعله. راجع http://symfony.com/doc/master/book/templates.html#overriding-bundle-templates
هذا هو المرجع الكامل لما يمكنك تهيئته ضمن مفتاح liip_search
:
search_factory
السلسلة ، القيمة الافتراضية: فارغة
حدد خدمة مخصصة تقوم بتنفيذ LiipSearchBundleSearchFactoryInterface
. سيتم استخدام هذه الخدمة بواسطة وحدة التحكم لإنشاء مثيلات Pagerfanta
للتعامل مع البحث.
إذا قمت بتكوين إحدى خدمات محرك البحث، فلن تحتاج إلى تعيين هذا الحقل.
search_route
السلسلة ، القيمة الافتراضية: liip_search
اسم المسار الذي سيتعامل مع طلبات البحث المقدمة.
restrict_language
منطقية ، القيمة الافتراضية: خطأ
قم بتغيير هذا إلى صحيح إذا كنت تريد أن تطلب من خدمة البحث تقييد النتائج على لغة الطلب.
يؤدي تكوين أي من هذه الخيارات إلى تمكين خدمة محرك بحث جوجل. وهي موجودة ضمن clients.google_rest
.
api_key
سلسلة ، مطلوبة
مفتاح Google API الخاص بك
search_key
سلسلة|مصفوفة ، مطلوبة
المفتاح الذي يحدد محرك بحث Google الخاص بك. قد تكون قائمة المفاتيح مفهرسة حسب اللغة لاستخدام محركات مختلفة لكل لغة. إذا كنت تتحكم في اللغات المحلية من خلال محركات بحث منفصلة، فلن تحتاج إلى تعيين restrict_language
على true إلا إذا كنت تريد أن تتلقى محركات البحث المخصصة لديك قيودًا على اللغة بالإضافة إلى ذلك.
api_url
السلسلة ، القيمة الافتراضية: https://www.googleapis.com/customsearch/v1
عنوان URL لواجهة برمجة تطبيقات بحث Google لاستدعاءات REST
restrict_to_site
السلسلة ، القيمة الافتراضية: فارغة
إذا تركت فارغة، فسيتم البحث في جميع المواقع التي تم تكوينها لمحركات بحث Google. اضبط على مجال aa ليقتصر على هذا المجال.
يؤدي تكوين هذا القسم إلى تنشيط وحدة تحكم مختلفة تعرض جزء Javascript لتمكين بحث CSE. يقع هذا التكوين ضمن clients.google_cse
.
cse_id
سلسلة|مصفوفة ، مطلوبة
المفتاح الذي يحدد محرك بحث Google المخصص الخاص بك. قد تكون قائمة المفاتيح مفهرسة حسب اللغة لاستخدام محركات مختلفة لكل لغة. لا يدعم محرك البحث المخصص (CSE) restrict_language
، لذا فإن محركات البحث المختلفة لكل لغة هي خيارك الوحيد لتقييد لغة نتائج البحث.
إذا حصلت على SearchException
يقول "تم استلام استجابة فارغة من Google Search Engine API"، فحاول نسخ عنوان URL الذي تم إخراجه إلى المتصفح. من المفترض أن تحصل على استجابة JSON، ولكن من المحتمل أن تكون بها حالة خطأ.
إذا حصلت على الحالة 500 برسالة فارغة، فمن المحتمل أنك بحاجة إلى تجديد محرك البحث في لوحة إدارة Google.
قم بتنفيذ LiipSearchBundleSearchInterface
وقم بتكوينه كخدمة. ثم قم بتعيين liip_search.search_client
على اسم الخدمة هذا.