Opening Hours plugin
Manage and display opening hours on your website.
Features
This plugins allows you to store opening hours for multiple locations and display them on your website.
It makes use of the great spatie/opening-hours
library. You have direct access to all of the library's features.
- Store opening hours for multiple locations
- Set opening hours for each day of the week
- Add exceptions for specific dates
- Display the opening hours on your website
- Schema.org compatible example markup provided
OpeningHours
component
This plugin provides only a single OpeningHours
component. It can be used to display all opening hours for all locations.
[openingHours] == {# List all locations #} {% for location in openingHours.locations %} {{ dump(location.openingHours.forWeek()) }} {% endfor %} {# If you have only a single location you can access it directly #} {{ dump(openingHours.location.openingHours.forWeek()) }} {# You can also access a specific location by its slug #} {{ dump(openingHours.locationsBySlug['your-location'].openingHours.forWeek()) }}
Access the openingHours
property on any location to have access to the full spatie/opening-hours
featureset as documented in their README.
{{ dump(location.openingHours.forWeek()) }} {{ dump(location.openingHours.forWeekCombined()) }} {{ location.openingHours.asStructuredData() | json_encode }} {{ location.openingHours.forDay('monday') }} {{ location.openingHours.isOpenOn('monday') ? 'open' : 'closed' }} {{ location.openingHours.isClosedOn('monday') ? 'closed' : 'open' }} {{ location.openingHours.forDate(date('2020-01-01')) }} {{ location.openingHours.isOpenAt(date('2020-10-01')) ? 'open' : 'closed' }} {{ location.openingHours.isOpen() ? "We're open!" : "Sorry, we're closed!" }} {{ location.openingHours.isClosed() ? "Sorry, we're closed!" : "We're open!" }} {{ "Open until " ~ location.openingHours.nextClose(date('now')).format('Y-m-d H:i') }} {{ "We'll open again on " ~ location.openingHours.nextOpen(date('now')).format('Y-m-d H:i') }}
Checkout the component's partials for a demo implementation.
Contributing
Bugs and feature requests
If you found a bug or want to request a feature please file a GitHub issue.
Pull requests
PRs are always welcome! Open them against the master
branch.
If you plan a time consuming contribution please open an issue first and describe what changes you have in mind.
-
Tomáš Lipovský
Found the plugin useful on 22 Apr, 2020
This is exactly what I was looking for. Great job!
-
1.0.17 |
Further date exception improvements Nov 30, 2021 |
---|---|
1.0.16 |
Fixed problem with migration Nov 30, 2021 |
1.0.14 |
Fixed installation via Composer Nov 30, 2021 |
1.0.13 |
Fixed table schema for exceptions without special hours on never MySQL versions Nov 30, 2021 |
1.0.12 |
Fixed a timezone problem when using date exceptions Jan 04, 2021 |
1.0.11 |
Added SK translations (thanks to @satezmedia) Jul 20, 2020 |
1.0.10 |
Ignoring Timezones in datepicker widgets Apr 24, 2020 |
1.0.9 |
Fixed active backend menu focus Apr 02, 2020 |
1.0.8 |
Fixed Location sorting Mar 02, 2020 |
1.0.7 |
Optimized handling of empty DateException collections Dec 02, 2019 |
1.0.6 |
Added french translations (thanks to @damsfx) Oct 07, 2019 |
1.0.5 |
Added helpers to correctly sort yearly recurring exceptions to opening hours Sep 04, 2019 |
1.0.4 |
Updated dependencies Aug 30, 2019 |
1.0.3 |
Minor backend form updates Jul 13, 2019 |
1.0.2 |
Added batch creation for opening hours Jul 13, 2019 |
1.0.1 |
Initial release. Jul 12, 2019 |