ชุดนี้มีอินเทอร์เฟซแบบเดียวกันสำหรับการค้นหาข้อความแบบเต็มด้วยเครื่องมือค้นหาต่างๆ และตัวควบคุมที่มีเทมเพลตทวิกเพื่อแสดงแบบฟอร์มการค้นหาและผลลัพธ์
หมายเหตุ: คุณกำลังดูเวอร์ชัน 2 ของบันเดิลนี้ ซึ่งมีการเปลี่ยนแปลงครั้งใหญ่เมื่อเทียบกับเวอร์ชัน 1
ชุดการค้นหานี้ทำให้การเพิ่มการค้นหาในไซต์ของคุณง่ายขึ้น
ให้กับคุณคือ:
ในตอนนี้ การค้นหาไซต์ของ Google ได้รับการสนับสนุนตั้งแต่เริ่มต้น มีการใช้งานอย่างหนึ่งโดยใช้ Google REST API และอีกหนึ่งการใช้งานโดยใช้คุณลักษณะ Custom Search Element ที่โหลดการค้นหาด้วยจาวาสคริปต์เท่านั้นในส่วนหน้า
ยินดีมีส่วนร่วมในการบริการอื่น ๆ
ติดตั้งบันเดิลด้วย 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ทวิก:
{{ 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/templating.html#overriding-bundle-templates
นี่คือข้อมูลอ้างอิงแบบเต็มของสิ่งที่คุณสามารถกำหนดค่าได้ภายใต้คีย์ liip_search
:
search_factory
สตริง ค่าเริ่มต้น: null
ระบุบริการที่กำหนดเองที่ใช้ LiipSearchBundleSearchFactoryInterface
ตัวควบคุมจะใช้บริการนี้เพื่อสร้างอินสแตนซ์ Pagerfanta
เพื่อจัดการการค้นหา
หากคุณกำหนดค่าบริการเครื่องมือค้นหารายการใดรายการหนึ่ง คุณไม่จำเป็นต้องตั้งค่าฟิลด์นี้
search_route
สตริง ค่าเริ่มต้น: liip_search
ชื่อของเส้นทางที่จะจัดการคำขอค้นหาที่ส่งมา
restrict_language
บูลีน ค่าเริ่มต้น: false
เปลี่ยนสิ่งนี้ให้เป็นจริงหากคุณต้องการขอให้บริการค้นหาจำกัดผลลัพธ์เป็นภาษาของคำขอ
การกำหนดค่าตัวเลือกใดๆ เหล่านี้จะเปิดใช้งานบริการเครื่องมือค้นหาของ Google จะอยู่ภายใต้ clients.google_rest
api_key
สตริง จำเป็น
คีย์ Google API ของคุณ
search_key
string|array จำเป็น
กุญแจสำคัญในการระบุ Google Search Engine ของคุณ อาจเป็นรายการคีย์ที่จัดทำดัชนีตามสถานที่เพื่อใช้กลไกที่แตกต่างกันในแต่ละสถานที่ หากคุณควบคุมสถานที่ผ่านเครื่องมือค้นหาที่แยกจากกัน คุณไม่จำเป็นต้องตั้ง restrict_language
ให้เป็นจริง เว้นแต่คุณต้องการให้เครื่องมือค้นหาที่กำหนดเองของคุณได้รับการจำกัดภาษาเพิ่มเติม
api_url
string ค่าเริ่มต้น: https://www.googleapis.com/customsearch/v1
URL ของ Google Search API สำหรับการเรียก REST
restrict_to_site
สตริง ค่าเริ่มต้น: null
หากเว้นว่างไว้ ระบบจะค้นหาไซต์ทั้งหมดที่กำหนดค่าสำหรับเครื่องมือค้นหาของ Google ตั้งค่าเป็นโดเมน aa เพื่อจำกัดเฉพาะโดเมนนั้น
การกำหนดค่าส่วนนี้จะเปิดใช้งานคอนโทรลเลอร์อื่นที่แสดงผลส่วน Javascript เพื่อเปิดใช้งานการค้นหา CSE การกำหนดค่านี้อยู่ภายใต้ clients.google_cse
cse_id
string|array จำเป็น
กุญแจระบุ Google Custom Search Engine ของคุณ อาจเป็นรายการคีย์ที่จัดทำดัชนีตามสถานที่เพื่อใช้กลไกที่แตกต่างกันในแต่ละสถานที่ CSE ไม่ รองรับ restrict_language
ดังนั้นเครื่องมือค้นหาที่แตกต่างกันในแต่ละภาษาจึงเป็นทางเลือกเดียวของคุณในการจำกัดภาษาของผลการค้นหา
หากคุณได้รับ SearchException
แจ้งว่า "ได้รับการตอบสนองที่ว่างเปล่าจาก Google Search Engine API" ให้ลองคัดลอก URL ที่ส่งออกไปยังเบราว์เซอร์ คุณควรได้รับการตอบสนองของ JSON แต่มีแนวโน้มว่าจะมีสถานะข้อผิดพลาด
หากคุณได้รับสถานะ 500 พร้อมข้อความเปล่า คุณอาจต้องต่ออายุเครื่องมือค้นหาในแผงผู้ดูแลระบบของ Google
ใช้ LiipSearchBundleSearchInterface
และกำหนดค่าเป็นบริการ จากนั้นตั้งค่า liip_search.search_client
เป็นชื่อบริการนั้น