craftcms/store-hours

此插件为Craft添加了一个新的“商店营业时间”字段类型,用于收集每周每天的商业营业和关闭时间。

安装数量: 90,653

依赖项: 0

建议者: 0

安全: 0

星标: 61

关注者: 8

分支: 15

开放问题: 9

类型:craft-plugin

4.2.0 2024-07-28 17:22 UTC

README

此插件为Craft添加了一个新的“商店营业时间”字段类型,用于收集每周每天组织的营业和关闭时间(或任何其他时间段)。

要求

此插件需要Craft CMS 5.0或更高版本。

安装

您可以从插件商店或使用Composer安装此插件。

从插件商店

转到项目的控制面板中的插件商店,搜索“商店营业时间”。然后在模态窗口中按安装

使用Composer

打开终端并运行以下命令

# go to the project directory
cd /path/to/my-project.test

# tell Composer to load the plugin
composer require craftcms/store-hours

# tell Craft to install the plugin
php craft plugin/install store-hours

自定义时间段

商店营业时间字段有一个名为“时间段”的设置,允许您自定义字段输入中可见的时间列。默认情况下,将有两个时间段,“开门时间”和“关门时间”,但您可以按需自定义这些。

A Time Slots field setting with “Open”, “Close”, “Second Open”, and “Second Close” slots defined

您在这里添加的每一行都会在字段输入中添加一个新列。

A Store Hours field with four custom time slots

模板

您可以通过循环您的商店营业时间字段来访问每周每天的信息(从星期日开始)

<h3>Opening Hours</h3>
<dl>
  {% for day in entry.<FieldHandle> %}
    <dt>{{ day.name }}</dt>
    <dd>
      {% if day.isBlank %}
        Closed
      {% else %}
        {{ day.open|time }} - {{ day.close|time }}
      {% endif %}
    </dd>
  {% endfor %}
</dl>

当使用|time过滤器输出时间时,确切的时间格式取决于当前应用程序的区域设置。有关如何自定义的详细信息,请参阅Craft文档

显示单日时间

您可以使用以下方法获取单日时间

<h3>Today’s Hours</h3>
{% set today = entry.<FieldHandle>.today %}
{% if today.isBlank %}
  <p>Sorry, we’re closed today.</p>
  {% set tomorrow = entry.<FieldHandle>.tomorrow %}
  {% if not tomorrow.isBlank %}
    <p>We’ll be back open tomorrow at {{ tomorrow.open|time }}.</p>
  {% endif %}
{% else %}
  <p>We’re open from {{ today.open|time }} to {{ today.close|time }} today.</p>
{% endif %}

显示自定义日期范围

要仅显示一周中的某些日子(例如,仅星期一至星期五),请使用getRange()字段方法。传递两个整数表示范围的开始和结束天数,使用以下映射

{# Only show Monday-Friday #}
{% set range = entry.<FieldHandle>.getRange(1, 5) %}

{% for day in range %}
    {# ... #}
{% endfor %}

显示分组范围

您可以显示时间段的综合列表,例如

上午11点 – 下午6点 周一 – 周五
上午11点 – 下午5点 周六 – 周日

为此,请使用与getRange()类似,但结果天数按时间段分组的getGroupedRanges()字段方法。

<ul>
  {% for group in entry.<FieldHandle>.getGroupedRanges(1) %}
    {% set first = group|first %}
    {% set last = group|last %}
    {% if first.open and first.close %}
      <li>
        <strong>
          {{ first.open|date('g:sa')|replace(':00', '') }}&hairsp;&hairsp;{{ first.close|date('g:sa')|replace(':00', '') }}
        </strong>
        {% if first != last %}
          {{ first.getName('medium') }}&hairsp;&hairsp;{{ last.getName('medium') }}
        {% else %}
          {{ first.getName('medium') }}
        {% endif %}
      {% endif %}
    </li>  
  {% endfor %}
</ul>

更改周开始日

您可以使用getRange()字段方法返回具有不同周开始日的完整日列表。例如,如果您想将星期一作为一周的第一天,请这样做

{# Show all days with Monday first #}
{% set range = entry.<FieldHandle>.getRange(1, 0) %}

{% for day in range %}
  {# ... #}
{% endfor %}

作为快捷方式,您也可以省略传递结束天,当您想要这样做时

{# Show all days with Monday first #}
{% set range = entry.<FieldHandle>.getRange(1) %}

{% for day in range %}
  {# ... #}
{% endfor %}

确定所有时间段是否为空白

您可以使用getIsBlank()isBlank)字段方法快速确定某一天的所有时间段是否都留空

<h3>Opening Hours</h3>
<dl>
  {% for day in entry.<FieldHandle> %}
    <dt>{{ day.name }}</dt>
    <dd>
      {% if day.isBlank %}
        Closed
      {% else %}
        {{ day.open|time }} - {{ day.close|time }}
      {% endif %}
    </dd>
  {% endfor %}
</dl>