рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ

рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг

Asyntai рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реАрдЦреЗрдВ

рд╢реБрд░реВ рдХрд░рдирд╛
рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдЬреНрдЮрд╛рди рдЖрдзрд╛рд░ AI рдЖрдкрдХреА рд╕рд╛рдордЧреНрд░реА рддрдХ рдХреИрд╕реЗ рдкрд╣реБрдБрдЪрддрд╛ рд╣реИ рдЕрдкрдиреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдЕрдкрдирд╛ AI рдЯреЗрд╕реНрдЯ рдХрд░реЗрдВ рд╡реЗрдмрд╕рд╛рдЗрдЯреЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВ
Customization
рдЪреИрдЯ рдмрдЯрди рдбрд┐рдЬрд╝рд╛рдЗрди рдЪреИрдЯ рдмрдЯрди рдЖрдЗрдХрди рд╡рд┐рдЬреЗрдЯ рд░рдВрдЧ AI рд╕рд╣рд╛рдпрдХ рдирд╛рдо рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдВрджреЗрд╢ рд╡рд┐рдЬреЗрдЯ рд╕реНрдерд┐рддрд┐ рдСрдЯреЛ-рдЯреНрд░рд┐рдЧрд░ рдЕрднрд┐рд╡рд╛рджрди рдмрдмрд▓ рдЕрдкрдард┐рдд рдмреИрдЬ рдирд┐рд░реНрджреЗрд╢ рдореЛрдб рдкреНрд░рд╢реНрди рдкреВрдЫреЗрдВ рдЗрдореЛрдЬреА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рднрд╛рд╖рд╛рдУрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ рдИрдореЗрд▓ рдПрдХрддреНрд░ рдХрд░реЗрдВ рдлрд╝реЛрди рдирдВрдмрд░ рдПрдХрддреНрд░ рдХрд░реЗрдВ рд╕реНрдорд╛рд░реНрдЯ рд▓реАрдб рдХреИрдкреНрдЪрд░ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдмреНрд░рд╛рдВрдбрд┐рдВрдЧ рдЫреБрдкрд╛рдПрдВ рдЧреЛрдкрдиреАрдпрддрд╛ рд▓рд┐рдВрдХ рдХрд╕реНрдЯрдо рдиреЛрдЯрд┐рд╕ рд▓рд┐рдВрдХ рдЙрд╕реА рдЯреИрдм рдореЗрдВ рдЦреЛрд▓реЗрдВ рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдирдИ рдмрд╛рддрдЪреАрдд рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк рдЗрддрд┐рд╣рд╛рд╕ рдЯреИрдЧрд▓рд╛рдЗрди рдФрд░ рд╕реНрдерд┐рддрд┐ рдмрд┐рдВрджреБ рд╕реНрдкреАрдЪ рдЯреВ рдЯреЗрдХреНрд╕реНрдЯ рдЪреИрдЯ рдЖрдЗрдХрди рдХрдВрдкрдиреА рд▓реЛрдЧреЛ рд╡рд░реНрдг рд╕реАрдорд╛ рддрд╛рдкрдорд╛рди
AI рдирд┐рд░реНрджреЗрд╢ рд╕реБрдЭрд╛рд╡ рджреВрд╕рд░реЗ рдЪреИрдЯрдмреЙрдЯ рд╕реЗ рдмрджрд▓рд╛рд╡ рдкреНрд▓рд╛рди рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ
рд╕реБрд╡рд┐рдзрд╛рдПрдВ
Ask AI рдмрд╛рд░ AI рд╕рд░реНрдЪ рдмрд╛рд░ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреНрд░реЙрд▓ рдЬреНрдЮрд╛рди рдЕрдВрддрд░рд╛рд▓ рдЙрддреНрдкрд╛рдж рдХрд╛рд░реНрдб рдЧрддрд┐рд╢реАрд▓ рдЙрддреНрдкрд╛рдж рдХрд╛рд░реНрдб рдЧрддрд┐рд╢реАрд▓ рдЫрд╡рд┐рдпрд╛рдБ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрджрд░реНрдн рдХрд╕реНрдЯрдо рдЯреВрд▓ рд▓рд┐рдВрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╕рдХреНрд░рд┐рдп рд╕рдВрджреЗрд╢ рд▓рд╛рдЗрд╡ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдорд╛рдирд╡ рдЯреЗрдХрдУрд╡рд░ рдПрд╕реНрдХреЗрд▓реЗрд╢рди AI рд╕реВрдЪрдирд╛рдПрдБ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реВрдЪрдирд╛рдПрдБ рджреИрдирд┐рдХ рд░рд┐рдкреЛрд░реНрдЯ рд░рд┐рдпрд▓-рдЯрд╛рдЗрдо рдбреЗрдЯрд╛ рдлрд╝реАрдб рд░рд┐рдпрд▓-рдЯрд╛рдЗрдо рдбреЗрдЯрд╛ рдлрд╝реАрдб рдореИрдХреНрд╕ рдЯреАрдо рд╕рджрд╕реНрдп Single Sign-On рджреНрд╡рд┐-рдХрд╛рд░рдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЗрдореЗрдЬ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ рдЗрдореЗрдЬ рд╡рд┐рдЬрд╝рди рдЕрдиреБрд╡рд╛рдж рд╡рд┐рдЬреЗрдЯ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг AI рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рд▓реАрдбреНрд╕ рд╕реНрдорд╛рд░реНрдЯ рд▓реАрдб рдХреИрдкреНрдЪрд░ рд╕рдкреЛрд░реНрдЯ рдЯрд┐рдХрдЯ рдЪреИрдЯ рд╢реНрд░реЗрдгрд┐рдпрд╛рдБ рдмреБрдХрд┐рдВрдЧ рд╡реЙрдЗрд╕ рдПрдЬреЗрдВрдЯ рдПрдореНрдмреЗрдб рдкреЗрдЬ рдмрд╛рд╣рд░ рд░рдЦреЗрдВ рдмреНрд▓реЙрдХ рдХрд┐рдП рдЧрдП IP рдбреЗрдЯрд╛ рдкреНрд░рддрд┐рдзрд╛рд░рдг рдиреАрддрд┐ рд╢реВрдиреНрдп рд╕рдВрдЧреНрд░рд╣рдг рдореЛрдб PII рдорд╛рд╕реНрдХрд┐рдВрдЧ рдЙрддреНрддрд░ рд╡рд░реНрдЧреАрдХрд░рдгрдХрд░реНрддрд╛ Access Tags рд╡рд┐рдЬреЗрдЯ рд╕рдВрд╕реНрдХрд░рдг рдкрд┐рдирд┐рдВрдЧ рдСрдбрд┐рдЯ рд▓реЙрдЧ рдЙрддреНрддрд░ рд╕реБрдЭрд╛рд╡ рдлрд╝реЙрд▓реЛ-рдЕрдк рд╕рдВрджреЗрд╢ рд╕реНрдкреАрдЪ рдЯреВ рдЯреЗрдХреНрд╕реНрдЯ рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдПрдореНрдмреЗрдбреЗрдб рдЪреИрдЯ iframe рд╕реЗ рдПрдореНрдмреЗрдб

Sylius рдореЗрдВ Asyntai AI рдЪреИрдЯрдмреЙрдЯ рдХреИрд╕реЗ рдЬреЛрдбрд╝реЗрдВ

Sylius рдИ-рдХреЙрдорд░реНрд╕ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдЪрд░рдг-рджрд░-рдЪрд░рдг рдЧрд╛рдЗрдб

рдПрдореНрдмреЗрдб рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

рдЪрд░рдг 1: рдЕрдкрдирд╛ рдПрдореНрдмреЗрдб рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЕрдкрдиреЗ Asyntai рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рдЬрд╛рдПрдБ рдФрд░ рдиреАрдЪреЗ "Embed Code" рдЕрдиреБрднрд╛рдЧ рддрдХ рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдВред рдЕрдкрдирд╛ рдпреВрдирд┐рдХ рдПрдореНрдмреЗрдб рдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВ, рдЬреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

<script>(function(){var l=function(){var s=document.createElement("script");s.src="https://widget.asyntai.com/static/js/chat-widget.js";s.async=true;s.setAttribute("data-asyntai-id","YOUR_WIDGET_ID");document.head.appendChild(s)};if(document.readyState==="complete"){l()}else{window.addEventListener("load",l)}})();</script>

рдиреЛрдЯ: рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рдХреЗрд╡рд▓ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдбреИрд╢рдмреЛрд░реНрдб рд╕реЗ рдЕрдкрдирд╛ рдЕрджреНрд╡рд┐рддреАрдп рдПрдореНрдмреЗрдб рдХреЛрдб рдХреЙрдкреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЖрдкрдХреА рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд┐рдЬреЗрдЯ ID рд╣реЛрддреА рд╣реИред

рдЪрд░рдг 2: Twig рд▓реЗрдЖрдЙрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ (рдЕрдиреБрд╢рдВрд╕рд┐рдд)

Sylius Symfony рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ Twig рдЯреЗрдореНрдкрд▓реЗрдЯрд┐рдВрдЧ рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЕрдиреБрд╢рдВрд╕рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рднреА рд╕реНрдЯреЛрд░рдлреНрд░рдВрдЯ рдкреЗрдЬреЛрдВ рдкрд░ рдЪреИрдЯрдмреЙрдЯ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реЙрдк рд▓реЗрдЖрдЙрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рд╣реИред

  1. рдЕрдкрдиреЗ Sylius рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ, templates/bundles/SyliusShopBundle/ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдкрд░ рдЬрд╛рдПрдВ (рдпрджрд┐ рдпрд╣ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рддреЛ рдЗрд╕реЗ рдмрдирд╛рдПрдВ)
  2. рдбрд┐рдлреЙрд▓реНрдЯ рд╢реЙрдк рд▓реЗрдЖрдЙрдЯ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП layout.html.twig рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдпрд╛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ
  3. рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдЦреЛрдЬреЗрдВ {% block javascripts %} рдмреНрд▓реЙрдХ
  4. javascripts рдмреНрд▓реЙрдХ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдХреЗ Asyntai рдПрдореНрдмреЗрдб рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
    {% block javascripts %} {{ parent() }} <script>(function(){var l=function(){var s=document.createElement("script");s.src="https://widget.asyntai.com/static/js/chat-widget.js";s.async=true;s.setAttribute("data-asyntai-id","YOUR_WIDGET_ID");document.head.appendChild(s)};if(document.readyState==="complete"){l()}else{window.addEventListener("load",l)}})();</script> {% endblock %}
  5. YOUR_WIDGET_ID рдХреЛ рдбреИрд╢рдмреЛрд░реНрдб рд╕реЗ рдЕрдкрдиреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рдЬреЗрдЯ ID рд╕реЗ рдмрджрд▓реЗрдВ
  6. рдлрд╝рд╛рдЗрд▓ рд╕рд╣реЗрдЬреЗрдВ

рд╕реБрдЭрд╛рд╡: 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 рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрд╡реЗрдВрдЯ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╕рдВрдкреВрд░реНрдг рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдП рдмрд┐рдирд╛ рд▓реЗрдЖрдЙрдЯ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдлреБрдЯрд░ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЪреИрдЯрдмреЙрдЯ рд╡рд┐рдЬреЗрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

  1. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде templates/bundles/SyliusShopBundle/Event/asyntai_widget.html.twig рдкрд░ рдПрдХ рдирдИ рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ:
    <script>(function(){var l=function(){var s=document.createElement("script");s.src="https://widget.asyntai.com/static/js/chat-widget.js";s.async=true;s.setAttribute("data-asyntai-id","YOUR_WIDGET_ID");document.head.appendChild(s)};if(document.readyState==="complete"){l()}else{window.addEventListener("load",l)}})();</script>
  2. рдЕрдкрдиреА 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
  3. YOUR_WIDGET_ID рдХреЛ рдЕрдкрдиреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рдЬреЗрдЯ ID рд╕реЗ рдмрджрд▓реЗрдВ
  4. Symfony рдХреИрд╢ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ (рдиреАрдЪреЗ рдЪрд░рдг 3 рджреЗрдЦреЗрдВ)

рдиреЛрдЯ: рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрд╡реЗрдВрдЯ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рдмрд╕реЗ рдХрдо рд╣рд╕реНрддрдХреНрд╖реЗрдк рд╡рд╛рд▓рд╛ рддрд░реАрдХрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдХрд┐рд╕реА рднреА рдореМрдЬреВрджрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдФрд░ рдпрд╣ Sylius рдХреЗ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд╕рд╛рде рд╕рдлрд╛рдИ рд╕реЗ рдПрдХреАрдХреГрдд рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдПрдХ рд╣реА рдЗрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдХрдИ рдмреНрд▓реЙрдХ рдкрдВрдЬреАрдХреГрдд рд╣реИрдВ, рддреЛ priority рдорд╛рди рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреНрд░рдо рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдзрд┐ 2: Webpack Encore рдХрд╛ рдЙрдкрдпреЛрдЧ

рдпрджрд┐ рдЖрдкрдХрд╛ Sylius рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдПрд╕реЗрдЯ рдореИрдиреЗрдЬрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП Webpack Encore рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЕрдкрдиреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд┐рд▓реНрдб рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪреИрдЯрдмреЙрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

  1. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде 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);
    })();
  2. рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдиреЗ рд╢реЙрдк рдПрдВрдЯреНрд░реА рдкреЙрдЗрдВрдЯ (рдЬреИрд╕реЗ, assets/shop/entry.js рдпрд╛ assets/shop/js/app.js) рдореЗрдВ рдЗрдореНрдкреЛрд░реНрдЯ рдХрд░реЗрдВ:
    import './js/asyntai-chatbot';
  3. рдЪрд▓рд╛рдХрд░ рдЕрдкрдиреА рдПрд╕реЗрдЯреНрд╕ рдкреБрдирд░реНрдирд┐рд░реНрдорд┐рдд рдХрд░реЗрдВ:
    yarn encore dev

    рдпрд╛ рдкреНрд░реЛрдбрдХреНрд╢рди рдХреЗ рд▓рд┐рдП:

    yarn encore production
  4. YOUR_WIDGET_ID рдХреЛ рдЕрдкрдиреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рдЬреЗрдЯ ID рд╕реЗ рдмрджрд▓реЗрдВ

рд╕реБрдЭрд╛рд╡: Webpack Encore рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЪреИрдЯрдмреЙрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдкрдХреЗ рдЕрдиреНрдп рдПрд╕реЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдмрдВрдбрд▓ рдХреА рдЧрдИ рд╣реИ рдФрд░ рдмрд┐рд▓реНрдб рдЯреВрд▓ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдХреИрд╢рд┐рдВрдЧ рдФрд░ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рд╕реЗ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛрддреА рд╣реИред

рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдзрд┐ 3: Sonata Block Bundle рдХрд╛ рдЙрдкрдпреЛрдЧ

рдпрджрд┐ рдЖрдкрдХрд╛ Sylius рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди Sonata Block Bundle рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рдХреБрдЫ Sylius рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╢рд╛рдорд┐рд▓), рддреЛ рдЖрдк рдЪреИрдЯрдмреЙрдЯ рд╡рд┐рдЬреЗрдЯ рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рдмреНрд▓реЙрдХ рд╕рд░реНрд╡рд┐рд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

  1. рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдирдИ рдмреНрд▓реЙрдХ рд╕рд░реНрд╡рд┐рд╕ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдПрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 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);
        }
    }
  2. templates/block/asyntai_chatbot.html.twig рдкрд░ рдмреНрд▓реЙрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдПрдВ:
    <script>(function(){var l=function(){var s=document.createElement("script");s.src="https://widget.asyntai.com/static/js/chat-widget.js";s.async=true;s.setAttribute("data-asyntai-id","YOUR_WIDGET_ID");document.head.appendChild(s)};if(document.readyState==="complete"){l()}else{window.addEventListener("load",l)}})();</script>
  3. рдЕрдкрдиреЗ config/services.yaml рдореЗрдВ рдмреНрд▓реЙрдХ рд╕рд░реНрд╡рд┐рд╕ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░реЗрдВ:
    services:
        app.block.asyntai_chatbot:
            class: App\Block\AsyntaiChatbotBlockService
            arguments:
                - '@twig'
            tags:
                - { name: sonata.block, context: footer }
  4. Sonata рдПрдбрдорд┐рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рдЕрдкрдиреЗ рд▓реЗрдЖрдЙрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЬреЛрдбрд╝рдХрд░ рдмреНрд▓реЙрдХ рдХреЛ рдЕрдкрдиреЗ рдлреБрдЯрд░ рд╕рдВрджрд░реНрдн рдореЗрдВ рд░рдЦреЗрдВ
  5. YOUR_WIDGET_ID рдХреЛ рдЕрдкрдиреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рдЬреЗрдЯ ID рд╕реЗ рдмрджрд▓реЗрдВ

рдорд╣рддреНрд╡рдкреВрд░реНрдг: Sonata Block рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реЗрдЯрдЕрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдПрдбрдорд┐рди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪреИрдЯрдмреЙрдЯ рдмреНрд▓реЙрдХ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЪреАрд▓рд╛рдкрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ Sylius рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ Sonata Block Bundle рдЗрдВрд╕реНрдЯреЙрд▓ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЪрд░рдг 3: рдХреИрд╢ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ рдФрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ

рдЕрдкрдиреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ Symfony рдХреИрд╢ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

  1. рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░реВрдЯ рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рдХрд░ Symfony рдХреИрд╢ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ:
    bin/console cache:clear
  2. рдпрджрд┐ рдЖрдк рдкреНрд░реЛрдбрдХреНрд╢рди рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╣реИрдВ, рддреЛ рдХреИрд╢ рдХреЛ рднреА рд╡рд╛рд░реНрдо рдЕрдк рдХрд░реЗрдВ:
    bin/console cache:clear --env=prod
    bin/console cache:warmup --env=prod
  3. рдирдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЯреИрдм рдпрд╛ рдЗрдирдХреЙрдЧреНрдирд┐рдЯреЛ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЕрдкрдиреЗ Sylius рд╕реНрдЯреЛрд░рдлреНрд░рдВрдЯ рдкрд░ рдЬрд╛рдПрдБ
  4. рдЖрдкрдХреЛ рдиреАрдЪреЗ рджрд╛рдПрдБ рдХреЛрдиреЗ рдореЗрдВ рдЪреИрдЯ рд╡рд┐рдЬреЗрдЯ рдмрдЯрди рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП
  5. рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЦреБрд▓рддрд╛ рдФрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рд╡рд┐рдЬреЗрдЯ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛? рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдиреЗ bin/console cache:clear рдХреЗ рд╕рд╛рде Symfony рдХреИрд╢ рд╕рд╛рдлрд╝ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ рдУрд╡рд░рд░рд╛рдЗрдб рд╕рд╣реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ (templates/bundles/SyliusShopBundle/) рдореЗрдВ рд╣реИред рдЕрдкрдирд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреИрд╢ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдпрд╛ рдЗрдирдХреЙрдЧреНрдирд┐рдЯреЛ рд╡рд┐рдВрдбреЛ рдореЗрдВ рджреЗрдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдХрд┐рд╕реА рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдбреЗрд╡рд▓рдкрд░ рдХрдВрд╕реЛрд▓ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдпрджрд┐ Webpack Encore рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдиреЗ рдПрд╕реЗрдЯреНрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рд╣реИред

Sylius рд╕рдВрд╕реНрдХрд░рдг рдиреЛрдЯ: Sylius рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдЯреЗрдореНрдкрд▓реЗрдЯ рдУрд╡рд░рд░рд╛рдЗрдб рдкрде рдереЛрдбрд╝рд╛ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред Sylius 1.x рдореЗрдВ, рд╢реЙрдк рдмрдВрдбрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ templates/bundles/SyliusShopBundle/ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рд╕реНрдерд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рд╕рд╣реА рдУрд╡рд░рд░рд╛рдЗрдб рдкрде рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ Sylius рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦреЗрдВред