Как добавить ИИ-чат-бот Asyntai в Sylius
Пошаговое руководство для платформы электронной коммерции Sylius
Шаг 1: Получите код встраивания
Сначала перейдите на Панель управления Asyntai и прокрутите вниз до раздела «Код для встраивания». Скопируйте уникальный код, который выглядит так:
<script async src="https://asyntai.com/static/js/chat-widget.js" data-asyntai-id="YOUR_WIDGET_ID"></script>
Примечание: Код выше — всего лишь пример. Вы должны скопировать свой уникальный код для встраивания с вашей Панели управления, так как он содержит ваш персональный идентификатор виджета.
Шаг 2: Добавьте в шаблон макета Twig (рекомендуется)
Sylius построен на Symfony и использует шаблонизатор Twig. Рекомендуемый подход — переопределить шаблон макета магазина, чтобы включить чат-бот на всех страницах витрины.
- В вашем проекте Sylius перейдите в директорию
templates/bundles/SyliusShopBundle/(создайте её, если она не существует) - Создайте или отредактируйте файл layout.html.twig, чтобы переопределить стандартный макет магазина
- Если файл уже существует, найдите
{% block javascripts %}блок - Добавьте код вставки Asyntai, расширив блок javascripts:
{% 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на ваш реальный 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
Sylius предоставляет мощную систему событий шаблонов, позволяющую внедрять контент в определённые части макета без переопределения целых шаблонов. Это можно использовать для добавления виджета чат-бота в футер.
- Создайте новый файл шаблона по пути
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> - Зарегистрируйте событие шаблона в файле конфигурации
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на ваш реальный ID виджета - Очистить кэш Symfony (см. Шаг 3 ниже)
Примечание: Подход с событиями шаблона — наименее инвазивный метод. Он не требует переопределения существующих шаблонов и чисто интегрируется с архитектурой Sylius. Значение priority управляет порядком рендеринга, если для одного события зарегистрировано несколько блоков.
Альтернативный способ 2: Через Webpack Encore
Если ваш проект Sylius использует Webpack Encore для управления ресурсами, вы можете интегрировать скрипт чат-бота через конвейер сборки JavaScript.
- Создайте новый 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);
})(); - Импортируйте этот файл в точку входа вашего магазина (например,
assets/shop/entry.jsилиassets/shop/js/app.js):import './js/asyntai-chatbot'; - Пересоберите ресурсы, выполнив:
yarn encore devИли для продакшена:
yarn encore production - Замените
YOUR_WIDGET_IDна ваш реальный ID виджета
Совет: Использование Webpack Encore гарантирует, что скрипт чат-бота будет включён в общий пакет ресурсов и воспользуется кэшированием и оптимизацией инструмента сборки.
Альтернативный способ 3: Через Sonata Block Bundle
Если ваша установка Sylius использует Sonata Block Bundle (входит по умолчанию в некоторые конфигурации Sylius), вы можете создать пользовательский блочный сервис для отображения виджета чат-бота.
- Создайте новый класс блок-сервиса в вашем проекте, например
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);
}
} - Создайте шаблон блока по пути
templates/block/asyntai_chatbot.html.twig:<script async src="https://asyntai.com/static/js/chat-widget.js" data-asyntai-id="YOUR_WIDGET_ID"></script> - Зарегистрируйте сервис блока в
config/services.yaml:services:
app.block.asyntai_chatbot:
class: App\Block\AsyntaiChatbotBlockService
arguments:
- '@twig'
tags:
- { name: sonata.block, context: footer } - Разместите блок в контексте футера через панель администратора Sonata или добавив его в конфигурацию макета
- Замените
YOUR_WIDGET_IDна ваш реальный ID виджета
Важно: Подход с Sonata Block требует более сложной настройки, но обеспечивает гибкость управления блоком чат-бота через административный интерфейс. Перед использованием этого метода убедитесь, что Sonata Block Bundle установлен и настроен в вашем проекте Sylius.
Шаг 3: Очистка кэша и проверка
После внесения изменений необходимо очистить кэш Symfony и проверить установку:
- Очистите кэш Symfony, выполнив следующую команду из корневой директории проекта:
bin/console cache:clear - Если вы в продакшн-среде, также прогрейте кэш:
bin/console cache:clear --env=prod
bin/console cache:warmup --env=prod - Откройте витрину Sylius в новой вкладке браузера или режиме инкогнито
- Кнопка виджета чата должна появиться в правом нижнем углу
- Нажмите на нее, чтобы убедиться, что она открывается и работает корректно
Виджет не отображается? Убедитесь, что вы очистили кэш Symfony с помощью bin/console cache:clear. Проверьте, что переопределение шаблона находится в правильном каталоге (templates/bundles/SyliusShopBundle/). Попробуйте очистить кэш браузера или открыть сайт в режиме инкогнито. Проверьте консоль разработчика браузера на наличие ошибок JavaScript. Если используется Webpack Encore, убедитесь, что активы пересобраны.
Примечание о версии Sylius: Пути переопределения шаблонов могут немного отличаться в зависимости от версии Sylius. В Sylius 1.x шаблоны пакета магазина находятся в templates/bundles/SyliusShopBundle/. Проверьте документацию Sylius для правильного пути переопределения, если вы используете другую версию.
Weebly