shopify-是否有一种方法可以创建cms块(如“部分”)以从各个站点(产品/馆藏/页面)进行访问

时间:2019-01-31 18:19:46

标签: content-management-system shopify liquid shopify-app shopify-template

我实际上正在研究shopify主题,并且我正在寻找一种在单个位置创建诸如节或节块之类的内容的方法,可以在任何模板-液体中调用它以在各种情况下重用创建的块整个主题之内。

取决于产品价值,可以在集合中以及某些产品中显示的信息块,标语或整节之类的东西。

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

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

毫无疑问,我不满意,因为必须发布文章以使其可见,并且当您知道博客URL时可以访问这些文章。

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

是否有比以下更好或更通用的方法?

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

1 个答案:

答案 0 :(得分: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提到的简短代码的更基本且更精简的版本。

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