1

我实际上正在研究一个shopify主题,我正在寻找一种方法来在一个地方创建像部分或部分块这样的内容,可以在任何模板液体中调用它以在整个过程中的各种情况下重用创建的块主题。

诸如信息块、横幅或整个部分之类的东西,可以显示在集合中,也可以显示在某些产品中,具体取决于产品价值。

因此可以在所见即所得或部分(-块)编辑器中轻松更改内容,并在整个主题中进行更改。

我通过创建一个单独的博客来管理类似的事情,我用它来创建可以在任何主题文件中调用的全局可访问内容。

Unforenetly 我不满意,因为必须发布文章才能看到,因此当您知道博客网址时可以访问。

是否有类似“cms-block”的功能内置到 shopify 或具有这些功能的应用程序中?

有没有比以下更常见或更好的方法:

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

1 回答 1

1

您将必须创建自定义挂钩并以与@McNab 提到的类似方式使用它们,但不要输入全部内容。

例如,如果我们以您的示例为例,我们可以创建一个名为[article]. 我们将为其添加一个句柄属性,因此它将变为[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 提到的简码的更基本和精简版本。

但这是显示动态部分并进行某种查询的唯一方法之一(除了 Metafields )。

于 2019-02-01T08:59:21.127 回答