devkai/craft-shopify-resource

使用 storefront api 的 shopify-resource 参考字段


README

使用 storefront api 的 shopify-resource 参考字段

使用 shopify storefront api 在 craft 字段中存储 shop storefront id 并使用下拉菜单

在 craft 字段中使用 shopify 产品和收藏,灵感来源于 nmaier95/craft-shopify-product-fetcher,但使用 shopify storefront api,因此 id 与 shopify buy sdk 兼容

  • 向 shopify 发送自定义 GraphQL 查询以获取调整大小后的图像
  • 在 cp 中的异步客户端查询不会因多个产品字段而减慢 cp 渲染

要求

此插件需要 Craft CMS 3.0.0-beta.23 或更高版本。

安装

要安装此插件,请按照以下说明操作。

  1. 打开您的终端并进入您的 Craft 项目

     cd /path/to/project
    
  2. 然后告诉 Composer 加载插件

     composer require toyflish/craft-shopify-resource
    
  3. 在控制面板中,转到设置 → 插件,然后点击 craft-shopify-resource 的“安装”按钮。

craft-shopify-resource 概述

为您的控制面板添加 shopify 资源选择字段

配置 craft-shopify-resource

期望 storefront-api 凭据和区域设置以启用对新的 shopify 多语言 api 的查询

return [
    'accessToken' => getenv('SHOPIFY_ACCESS_TOKEN'),
    'hostname' => getenv('SHOPIFY_HOSTNAME'),
    'hostnameOverwrite' => getenv('SHOPIFY_HOSTNAME_PUBLIC'),
    'locale' => 'en'
];

使用 craft-shopify-resource

您可以使用插件提供的查询(类似于 shopify buy sdks 产品查询)或提交在 twig 中设置的自定义查询

<p>
    <h2>Entry resource field with handle myResource</h2>
    shopify storefront id: {{entry.myResource}}

    <p>use product query provided by plugin</p>
    {%  set myResourceProduct  = craft.storefront.productById(entry.myResource) %}

    {% if myResourceProduct %}
        title : {{ myResourceProduct.title }}
    {% else %}
        myResource product not found
    {% endif %}
</p>

<p>
    <h2>Custom Query: list of products</h2>
    {% set query %}
        query searchProducts($term: String) {
            products(first: 250, query: $term) {
                edges {
                    node {
                        id
                        title
                    }
                }
            }
        }
    {% endset %}
    {% set productsResult = craft.storefront.query(query)['products']['edges'] %}
    {% if productsResult|length %}
        <h3>Product list</h3>
        {% for product in  productsResult|map(product => product.node) %}
            <p>{{ product.title }}</p>
        {% endfor %}
    {% endif %}
</p>

devkai 提供