Bigcommerce 的 Handlebars 中的开发环境条件

Conditional for development environment in Bigcommerce's Handlebars

使用 Stencil 中的 Cornerstone 主题,我希望能够根据我是在本地 NPM 环境还是在生产站点上做不同的事情。

查看当前的 URL 是不够的,因为页面必须已经加载。当生成标记时,我想在模板中使用带把手的条件语句。类似于:

{{#if developEnvironment '===' 'true'}}
  <p>I'm local</p>
{{else}}
  <p>I'm remote</p>
{{/if}}

我在 theme_settings 变量中看不到任何有用的东西。

有什么想法吗?

您可以添加自己的自定义 theme_settings 值。

首先,导航到 ./config.json 文件。在此文件中查找 variations 数组。 它应该看起来像这样:

  "variations": [
    {
      "name": "Light",
      "id": "light",
      "meta": {...},
      "images": {...},
      "settings": {
          "developEnvironment": true,
...

在设置对象下,您可以添加自己的自定义 theme_settings 值,就像我在上面所做的那样:"developEnvironment": true,。现在在你的主题文件中你可以做这样的事情:

    {{#if theme_settings.developEnvironment}}
        <!-- Do something -->
    {{/if}}

您可以尝试使用这个条件语句:

{{#if settings.maintenance.secure_path '==' 'http://localhost:undefined'}}
  You are running on development.
{{else}}
  You are running on production.
{{/if}}

BigCommerce 提供实际的 key/value 对来确定是否在开发中。

我使用的是 stencil CLI v2.1.0,所以旧版本可能不是这样。

{{#if in_development}}
 In Development
{{else}}
 In Production
{{/if}}