Редактор тем Shopify Vue3.x: как передать новое значение настройки раздела в приложение Vue?

#shopify #vuejs3 #shopify-template

#shopify #vuejs3 #Shopify-шаблон

Вопрос:

Я пытаюсь интегрировать Vue3.x с редактором тем Shopify. Теперь я могу заставить приложение Vue работать в редакторе тем. Однако, когда я пытаюсь изменить цвет кнопки «Добавить в пакет» в разделе, цвет кнопки не может быть обновлен немедленно.

Поэтому я пытаюсь прослушать событие Shopify: раздел: выбор. Но функция remountVueApp() всегда показывает старое значение {{ section.settings.button_color }}. Поэтому я не знаю, как передать обновленное значение из section.settings в приложение Vue. Как это можно сделать?

Когда я нажимаю кнопку сохранения, настройка раздела может быть сохранена, и отображается новый цвет кнопки.

На скриншоте отображается сообщение об отладке после изменения цвета кнопки в редакторе тем

Редактор тем Shopify

 <!-- This will only render in the theme editor -->
<script src="https://unpkg.com/vue@next"></script>
<script src="https://unpkg.com/mitt/dist/mitt.umd.js"></script>
<script>
  function remountVueApp() {
    console.log('listen to shopify theme editor re-render. Render app to respond to DOM update');
    vueApp = createMyApp();
    console.log('button_color 2 = {{ section.settings.button_color }}');
    buttonColor = '{{ section.settings.button_color }}';
             
    vueApp.component('product-card', productCard) 
    vm = vueApp.mount('#byobApp') 
  }

  const emitter = window.mitt();
  emitter.on('shopify:section:select', remountVueApp);

  const themeEventHandler = (event) => {
    console.log(event.detail.load)
    if (event.detail.load) {
      // emit a generic version
      console.log('button_color 1 = {{ section.settings.button_color }}');
      emitter.emit(`${event.type}`, event);
    }
  };

  // these are custom events emitted by the Shopify section editor
  // we are hooking them up to our Vue event dispatcher
  document.addEventListener('shopify:section:select', themeEventHandler);  
</script>
 

Комментарии:

1. он считает, что вам не нужно добавлять какой-либо жидкий код в файл JS, используйте его в разделах в жидком коде, он автоматически изменится, как только вы обновите какое-либо значение внутри разделов.

2. Да, я пытался определить тестовый класс в теге <style> . Класс включает в себя настройки раздела. Теперь это работает. Спасибо

3. рад знать, что это работает для вас.