shopify - есть ли способ создать cms-блок наподобие "разделов" для доступа с разных сайтов (товар / коллекция / страница)

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

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

таким образом, содержимое можно легко изменить в редакторе wysiwyg- или section(-block) и изменить в рамках всей темы.

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

Неудовлетворительно я не удовлетворен, потому что articels должны быть опубликованы, чтобы быть видимыми и поэтому доступны, когда вы знаете URL-адрес блога.

Существует ли функция, похожая на cms-block, в shopify или приложение, которое имеет эти функции?

Есть ли общий или лучший способ, чем:

   {% if condition==true %}
      <div class="blog-insert-class">
        {% assign article = articles['BlogName/ArticleName'] %}
              {{ article.content }}
      </div>
   {% endif %}

1 ответ

Вам придется создавать собственные хуки и использовать их так же, как упомянуто @McNab, но не вводить весь контент.

Например, если мы возьмем ваш пример, мы можем создать шорткод, который называется [article], Мы добавим к нему атрибут handle, чтобы он стал [article handle="some-handle"],

Вам нужно будет где-то ввести вышеуказанный шорткод в свой контент. Затем вы можете использовать предоставленный шорткод, упомянутый @McNab, или написать собственный.

Для пользовательского вам нужно будет создать фрагмент:

article-shortcode.liquid со следующим кодом:

<div class="blog-insert-class">
  {% assign article = articles[article-shortcode] %}
        {{ article.content }}
</div>

После этого вам нужно будет получить свой контент и изменить его, чтобы проверить, присутствует ли там короткий код.

Так что-то вроде этого:

{%- assign content = page.content -%}
{%- assign content_arr = content | split: '[article handle="' -%}

{%- if page.content contains '[article handle="' -%}
  {% comment %}Get the handle{% endcomment %}
  {%- assign article_handle = content_arr | last | split: '"]' | first -%}

  {% comment %}get the content after the shortcode{% endcomment %}
  {%- assign right_content = content_arr | last | split: '"]' | last -%} 

  {% comment %}save the content without the shortcode{% endcomment %}
  {%- assign content = content_arr | first | append: right_content -%} 
{%- endif -%}

{{ content }}

{% comment %}Call this where ever you like on the page{% endcomment %}
{%- if article_handle.size > 0 -%}
  {%- include 'article-shortcode' with article_handle -%}
{%- endif -%}

Это более простая и урезанная версия шорткода, упомянутая @McNab.

Но это один из немногих способов (кроме метаполей) показать динамический раздел и иметь какой-то запрос.

Другие вопросы по тегам