วิธีเพิ่มแชทบอท AI Asyntai ไปยัง Sylius
คู่มือทีละขั้นตอนสำหรับแพลตฟอร์มอีคอมเมิร์ซ Sylius
ขั้นตอนที่ 1: รับโค้ดฝังตัวของคุณ
ก่อนอื่น ไปที่แดชบอร์ด Asyntai ของคุณและเลื่อนลงไปที่ส่วน "Embed Code" คัดลอกโค้ดฝังตัวเฉพาะของคุณซึ่งจะมีลักษณะดังนี้:
<script async src="https://asyntai.com/static/js/chat-widget.js" data-asyntai-id="YOUR_WIDGET_ID"></script>
หมายเหตุ: โค้ดด้านบนเป็นเพียงตัวอย่าง คุณต้องคัดลอกโค้ดฝังตัวเฉพาะของคุณจากแดชบอร์ดเนื่องจากมี widget ID ส่วนตัวของคุณ
ขั้นตอนที่ 2: เพิ่มไปยังเทมเพลต Twig Layout (แนะนำ)
Sylius สร้างบน Symfony และใช้ Twig templating engine วิธีที่แนะนำคือ override เทมเพลต shop layout เพื่อรวมแชทบอทในทุกหน้าร้านค้า
- ในโปรเจกต์ Sylius ของคุณ นำทางไปยังไดเรกทอรี
templates/bundles/SyliusShopBundle/(สร้างหากยังไม่มี) - สร้างหรือแก้ไขไฟล์ layout.html.twig เพื่อ override shop layout เริ่มต้น
- หากไฟล์มีอยู่แล้ว ให้ค้นหา
{% block javascripts %}block - เพิ่มโค้ดฝังตัว Asyntai โดยขยาย javascripts block:
{% block javascripts %} {{ parent() }} <script async src="https://asyntai.com/static/js/chat-widget.js" data-asyntai-id="YOUR_WIDGET_ID"></script> {% endblock %} - แทนที่
YOUR_WIDGET_IDด้วย widget ID จริงของคุณจากแดชบอร์ด - บันทึกไฟล์
เคล็ดลับ: By using {{ parent() }} inside the block, you preserve all existing JavaScript includes from the parent template while appending the chatbot script at the end, ensuring it loads after the page content.
วิธีทางเลือกที่ 1: การใช้ Sylius Template Events
Sylius มีระบบ template event ที่ทรงพลังที่ช่วยให้คุณฉีดเนื้อหาเข้าไปในส่วนเฉพาะของ layout โดยไม่ต้อง override เทมเพลตทั้งหมด คุณสามารถใช้สิ่งนี้เพื่อเพิ่มวิดเจ็ตแชทบอทไปยังพื้นที่ส่วนท้าย
- สร้างไฟล์เทมเพลตใหม่ที่
templates/bundles/SyliusShopBundle/Event/asyntai_widget.html.twigพร้อมเนื้อหาต่อไปนี้:<script async src="https://asyntai.com/static/js/chat-widget.js" data-asyntai-id="YOUR_WIDGET_ID"></script> - ลงทะเบียน template event ในไฟล์การกำหนดค่า
config/packages/sylius_ui.yamlของคุณ:sylius_ui:
events:
sylius.shop.layout.after_body:
blocks:
asyntai_chatbot:
template: "@SyliusShop/Event/asyntai_widget.html.twig"
priority: 0 - แทนที่
YOUR_WIDGET_IDด้วย widget ID จริงของคุณ - ล้างแคช Symfony (ดูขั้นตอนที่ 3 ด้านล่าง)
หมายเหตุ: วิธี template event เป็นวิธีที่ไม่รุกล้ำที่สุด ไม่จำเป็นต้อง override เทมเพลตใดๆ ที่มีอยู่และรวมเข้ากับสถาปัตยกรรมของ Sylius อย่างสะอาด ค่า priority ควบคุมลำดับการแสดงผลหากมี blocks หลายตัวที่ลงทะเบียนสำหรับ event เดียวกัน
วิธีทางเลือกที่ 2: การใช้ Webpack Encore
หากโปรเจกต์ Sylius ของคุณใช้ Webpack Encore สำหรับการจัดการ assets คุณสามารถรวมสคริปต์แชทบอทผ่าน JavaScript build pipeline ของคุณ
- สร้างไฟล์ JavaScript ใหม่ที่
assets/shop/js/asyntai-chatbot.jsพร้อมเนื้อหาต่อไปนี้:(function() {
var script = document.createElement('script');
script.async = true;
script.src = 'https://asyntai.com/static/js/chat-widget.js';
script.setAttribute('data-asyntai-id', 'YOUR_WIDGET_ID');
document.body.appendChild(script);
})(); - import ไฟล์นี้ใน shop entry point ของคุณ (เช่น
assets/shop/entry.jsหรือassets/shop/js/app.js):import './js/asyntai-chatbot'; - สร้าง assets ใหม่โดยรัน:
yarn encore devหรือสำหรับ production:
yarn encore production - แทนที่
YOUR_WIDGET_IDด้วย widget ID จริงของคุณ
เคล็ดลับ: การใช้ Webpack Encore ทำให้สคริปต์แชทบอทถูกรวมกับ assets อื่นๆ และได้ประโยชน์จากการแคชและการปรับปรุงประสิทธิภาพที่จัดหาโดยเครื่องมือ build
วิธีทางเลือกที่ 3: การใช้ Sonata Block Bundle
หากการติดตั้ง Sylius ของคุณใช้ Sonata Block Bundle (รวมมาเป็นค่าเริ่มต้นในการกำหนดค่า Sylius บางแบบ) คุณสามารถสร้าง custom block service เพื่อแสดงผลวิดเจ็ตแชทบอท
- สร้าง block service class ใหม่ในโปรเจกต์ของคุณ ตัวอย่างเช่น
src/Block/AsyntaiChatbotBlockService.php:<?php
namespace App\Block;
use Sonata\BlockBundle\Block\BlockContextInterface;
use Sonata\BlockBundle\Block\Service\AbstractBlockService;
use Symfony\Component\HttpFoundation\Response;
class AsyntaiChatbotBlockService extends AbstractBlockService
{
public function execute(BlockContextInterface $blockContext, Response $response = null): Response
{
return $this->renderResponse('block/asyntai_chatbot.html.twig', [
'block' => $blockContext->getBlock(),
], $response);
}
} - สร้าง block template ที่
templates/block/asyntai_chatbot.html.twig:<script async src="https://asyntai.com/static/js/chat-widget.js" data-asyntai-id="YOUR_WIDGET_ID"></script> - ลงทะเบียน block service ใน
config/services.yamlของคุณ:services:
app.block.asyntai_chatbot:
class: App\Block\AsyntaiChatbotBlockService
arguments:
- '@twig'
tags:
- { name: sonata.block, context: footer } - วาง block ในบริบทส่วนท้ายผ่าน Sonata admin หรือโดยเพิ่มไปยังการกำหนดค่า layout ของคุณ
- แทนที่
YOUR_WIDGET_IDด้วย widget ID จริงของคุณ
สำคัญ: วิธี Sonata Block ต้องการการตั้งค่ามากขึ้นแต่ให้ความยืดหยุ่นในการจัดการ block แชทบอทผ่านอินเทอร์เฟซ admin ตรวจสอบให้แน่ใจว่า Sonata Block Bundle ถูกติดตั้งและกำหนดค่าในโปรเจกต์ Sylius ของคุณก่อนใช้วิธีนี้
ขั้นตอนที่ 3: ล้างแคชและยืนยัน
หลังจากทำการเปลี่ยนแปลงแล้ว คุณต้องล้างแคช Symfony และตรวจสอบการติดตั้ง:
- ล้างแคช Symfony โดยรันคำสั่งต่อไปนี้จากรากของโปรเจกต์:
bin/console cache:clear - หากคุณอยู่ในสภาพแวดล้อม production ให้ warm up แคชด้วย:
bin/console cache:clear --env=prod
bin/console cache:warmup --env=prod - เปิดหน้าร้าน Sylius ของคุณในแท็บเบราว์เซอร์ใหม่หรือหน้าต่างไม่ระบุตัวตน
- คุณควรเห็นปุ่มวิดเจ็ตแชทที่มุมล่างขวา
- คลิกเพื่อให้แน่ใจว่าเปิดและทำงานได้อย่างถูกต้อง
ไม่เห็นวิดเจ็ต? ตรวจสอบให้แน่ใจว่าล้างแคช Symfony ด้วย bin/console cache:clear ตรวจสอบว่า template override อยู่ในไดเรกทอรีที่ถูกต้อง (templates/bundles/SyliusShopBundle/) ลองล้างแคชเบราว์เซอร์หรือดูในหน้าต่างไม่ระบุตัวตน ตรวจสอบคอนโซลนักพัฒนาเบราว์เซอร์สำหรับข้อผิดพลาด JavaScript หากใช้ Webpack Encore ตรวจสอบว่าคุณสร้าง assets ใหม่แล้ว
หมายเหตุเวอร์ชัน Sylius: เส้นทาง template override อาจแตกต่างกันเล็กน้อยระหว่างเวอร์ชัน Sylius ใน Sylius 1.x เทมเพลต shop bundle อยู่ภายใต้ templates/bundles/SyliusShopBundle/ ตรวจสอบเอกสาร Sylius ของคุณสำหรับเส้นทาง override ที่ถูกต้องหากคุณใช้เวอร์ชันอื่น
Weebly