craftcms / store-hours
此插件为Craft添加了一个新的“商店营业时间”字段类型,用于收集每周每天的商业营业和关闭时间。
Requires
- php: ^8.2
- craftcms/cms: ^5.0.0-beta.1
Requires (Dev)
- craftcms/ecs: dev-main
- craftcms/phpstan: dev-main
- craftcms/rector: dev-main
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
自定义时间段
商店营业时间字段有一个名为“时间段”的设置,允许您自定义字段输入中可见的时间列。默认情况下,将有两个时间段,“开门时间”和“关门时间”,但您可以按需自定义这些。
您在这里添加的每一行都会在字段输入中添加一个新列。
模板
您可以通过循环您的商店营业时间字段来访问每周每天的信息(从星期日开始)
<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', '') }} – {{ first.close|date('g:sa')|replace(':00', '') }} </strong> {% if first != last %} {{ first.getName('medium') }} – {{ 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>