Как добавить ИИ-чат-бот Asyntai в Bagisto
Пошаговое руководство для платформы электронной коммерции Bagisto
Шаг 1: Получите код встраивания
Сначала перейдите на Панель управления Asyntai и прокрутите вниз до раздела «Код для встраивания». Скопируйте уникальный код, который выглядит так:
<script async src="https://asyntai.com/static/js/chat-widget.js" data-asyntai-id="YOUR_WIDGET_ID"></script>
Примечание: Код выше — всего лишь пример. Вы должны скопировать свой уникальный код для встраивания с вашей Панели управления, так как он содержит ваш персональный идентификатор виджета.
Шаг 2: Добавьте в шаблон макета Blade (рекомендуется)
Bagisto использует шаблоны Laravel Blade. Рекомендуемый подход — добавить код вставки непосредственно в файл макета магазина:
- Откройте файл макета магазина:
- Исходник пакета:
packages/Webkul/Shop/src/Resources/views/layouts/master.blade.php - Опубликованная версия:
resources/views/vendor/shop/layouts/master.blade.php(если вы опубликовали представления)
- Исходник пакета:
- Найдите закрывающий тег
</body> - Добавьте код вставки непосредственно перед
</body>, после@stack('scripts'):
@stack('scripts')
<script async src="https://asyntai.com/static/js/chat-widget.js" data-asyntai-id="YOUR_WIDGET_ID"></script>
</body>
Совет: Если вы опубликовали вендорные представления, редактируйте опубликованную версию в resources/views/vendor/shop/. В противном случае сначала опубликуйте их командой php artisan vendor:publish --tag=shop-views, чтобы изменения не потерялись при обновлении пакета.
Альтернативный метод 1: использование @push('scripts') во view
В любом представлении или компоненте Blade вы можете использовать стек scripts для внедрения скрипта чат-бота:
@push('scripts')
<script async src="https://asyntai.com/static/js/chat-widget.js" data-asyntai-id="YOUR_WIDGET_ID"></script>
@endpush
Примечание: Этот метод требует наличия @stack('scripts') в главном файле макета. Он включён по умолчанию в макет Bagisto.
Альтернативный способ 2: Через Service Provider
Вы можете использовать сервис-провайдер, чтобы программно сделать скрипт доступным во всех представлениях. Создайте собственный сервис-провайдер или используйте AppServiceProvider:
public function boot()
{
view()->composer('shop::layouts.master', function ($view) {
// The script will be available in the layout
});
}
Или создайте компонент Blade, который рендерит тег скрипта, и включите его в ваш макет.
Совет: Подход через провайдер сервисов полезен, если вы хотите условно загружать чат-бот на основе значений конфигурации или настроек окружения.
Альтернативный способ 3: Через Bagisto Event System
Bagisto генерирует события представлений в различных точках макета. Вы можете прослушивать bagisto.shop.layout.body.after для внедрения скрипта чат-бота:
Event::listen('bagisto.shop.layout.body.after', function($viewRenderEventManager) {
$viewRenderEventManager->addTemplate('shop::partials.asyntai-widget');
});
Затем создайте шаблон partial по пути packages/Webkul/Shop/src/Resources/views/partials/asyntai-widget.blade.php (или его опубликованный эквивалент) с кодом встраивания:
<script async src="https://asyntai.com/static/js/chat-widget.js" data-asyntai-id="YOUR_WIDGET_ID"></script>
Примечание: Подход с системой событий сохраняет ваши изменения модульными и отдельными от основных файлов макета, что упрощает управление при обновлениях Bagisto.
Шаг 3: Очистка кэша и проверка
После добавления кода вставки очистите кэш приложения, чтобы изменения вступили в силу:
php artisan cache:clear && php artisan view:clear
Откройте магазин Bagisto в новой вкладке браузера или режиме инкогнито. В правом нижнем углу должна появиться кнопка виджета чата. Нажмите на неё, чтобы убедиться, что всё работает корректно.
Виджет не отображается? Убедитесь, что вы выполнили как php artisan cache:clear, так и php artisan view:clear. Также попробуйте очистить кэш браузера или открыть сайт в режиме инкогнито. Если вы редактировали исходник пакета напрямую, убедитесь, что опубликованные шаблоны не перекрывают ваши изменения. Проверьте, что код для вставки расположен правильно — перед закрывающим тегом </body>.
Weebly