BEE Bookable Entities Everywhere

A booking and availability management module based on BAT that enables any node type to become bookable with daily or hourly reservation capabilities.

bee
257 sites
68
drupal.org

概要

Bookable Entities Everywhere(BEE)は、BAT(Booking and Availability Tools)フレームワークを拡張し、任意のコンテンツタイプに予約・空き状況管理機能を提供する強力なDrupalモジュールです。カスタム開発なしで、サイト構築者が任意のNodeタイプを予約可能にできます。

BEEは2つの予約粒度モードをサポートしています:1日単位の予約(バケーションレンタル、機材レンタルに最適)と、柔軟な時間単位の予約(会議室、アポイントメントに最適)です。各予約可能なNodeは、同一リソースを扱うための単一または複数のユニットを持つことができます(例:同じ機材の複数のコピー、複数の座席など)。

このモジュールは、有効化された各Nodeに表示される空き状況カレンダー、包括的な予約フォーム、時間単位予約タイプの営業時間設定機能を提供します。Drupal Commerceと統合すると、BEEは日単位または時間/分単位の設定可能な価格で予約の決済処理が可能になります。

BEEは日次、週次、月次の頻度での繰り返し予約もサポートしており、定期的なイベントやリソース割り当てに適しています。

Features

  • カスタムコード不要で、コンテンツタイプ設定から任意のNodeタイプを予約可能に設定
  • 日単位予約(終日)と柔軟な時間単位予約(任意の長さ)の両方をサポート
  • 同一リソースを扱うためのNode単位の複数ユニット(例:10室の同一会議室)
  • 各予約可能Nodeに対するFullCalendarを使用したビジュアル空き状況カレンダー
  • Office Hoursフィールドを使用した時間単位予約タイプの営業時間設定
  • 日/時間/分単位の設定可能な価格によるCommerce統合決済処理
  • 日次、週次、月次の頻度での繰り返し予約サポート
  • ユニットの空き状況ステータスを更新する空き状況管理フォーム
  • 空き状況管理のためのコンテンツタイプごとの動的パーミッション
  • 定期的な予約のためのイベントシリーズサポート
  • Node作成時のBATユニット自動作成
  • カスタム価格ロジックのための価格変更フック

Use Cases

Meeting Room Booking System

Configure a 'Meeting Room' content type with hourly bookings. Each room node gets an availability calendar. Users can book rooms for specific time slots. Set open hours (e.g., 8 AM - 6 PM weekdays) to restrict booking times. Multiple identical rooms can be handled with multiple units per node.

Vacation Rental Property

Create a 'Property' content type with daily bookings set to 'generally available'. Each property has one unit by default. Enable Commerce payments to charge per night. Property owners with 'manage availability for own property nodes' permission can mark dates as unavailable for maintenance.

Equipment Rental Service

Set up an 'Equipment' content type with daily bookings. For items with multiple copies (e.g., 5 identical laptops), add additional units through the node edit form. The calendar shows availability across all units and automatically assigns an available unit to each reservation.

Appointment Scheduling

Create a 'Service' content type with hourly flexible bookings. Configure open hours per service node. Integrate with Commerce for paid appointments. Use repeating bookings for regular appointments (e.g., weekly therapy sessions).

Tour or Event Booking

Use 'periodically available' mode for a 'Tour' content type. Tours are unavailable by default and only made available for specific dates/times through the availability management form. Enable capacity to allow multiple participants per tour slot.

Webform-based Reservations

Use the bee_webform submodule to embed reservation forms in webforms. Users select dates and see available nodes, then submit the form to create bookings. Useful for complex booking workflows requiring additional data collection.

Tips

  • Use 'generally available' mode for resources that are typically available (meeting rooms, equipment) and 'periodically available' for resources that need explicit availability windows (tours, special events)
  • Add multiple units to a node when you have identical resources - the system automatically assigns available units to reservations
  • The booking length setting (daily vs hourly) cannot be changed after initial configuration, so plan accordingly
  • Use the hook_bee_reservation_price_alter hook to implement dynamic pricing based on seasons, duration, or other factors
  • For complex booking workflows requiring additional data, consider using the bee_webform submodule to create custom booking forms
  • The capacity field on reservations allows booking multiple units at once, useful for group bookings or multi-resource reservations

Technical Details

Admin Pages 3
Content Type BEE Settings /admin/structure/types/manage/{node_type}

Configure BEE booking settings for a specific content type. This is where you enable bookability and configure booking parameters for the content type.

Availability Management /node/{node}/availability

Manage the availability of a bookable node's units. View and update availability states through a calendar interface.

Add Reservation /node/{node}/add-reservation

Create a new reservation/booking for a bookable node.

権限 6
Administer bee settings

Allows users to configure BEE settings on content types

Create bee reservation

Allows users to create reservations on bookable nodes

View calendar data for any availability_daily event

Allows viewing daily availability calendar data

View calendar data for any availability_hourly event

Allows viewing hourly availability calendar data

Manage availability for all {bundle} nodes

Dynamically generated per content type - allows managing availability for all nodes of this type

Manage availability for own {bundle} nodes

Dynamically generated per content type - allows managing availability only for nodes owned by the user

Hooks 3
hook_bee_reservation_price_alter

Allows modules to alter the calculated price for a BEE reservation

hook_form_node_type_edit_form_alter

BEE adds settings to the node type edit form through this hook

hook_bat_api_events_index_calendar_alter

BEE alters BAT calendar events to customize display colors and labels based on availability states

Troubleshooting 6
Availability calendar not displaying on node

Ensure the content type has BEE enabled in its settings. Check that the 'field_availability_daily' or 'field_availability_hourly' field is configured to display in the node's view display settings with the appropriate calendar view mode.

Cannot enable payment option for bookings

Commerce checkout and payment modules must be installed and enabled. Additionally, at least one Commerce Store must be configured before payments can be enabled.

Reservations not being created after checkout

Ensure the commerce_order.place.pre_transition event is being triggered. Check that the BEE order item type exists and the booking entity reference field is properly configured.

Users cannot access the Add Reservation form

Users need the 'create bee reservation' permission. Verify the permission is assigned to the appropriate roles.

Availability tab not showing on nodes

Users need either 'manage availability for all {type} nodes' or 'manage availability for own {type} nodes' permission for the specific content type.

Open hours not being respected

For hourly bookable types, ensure the 'Set Open Hours' checkbox is enabled on the node edit form and that the Open Hours field has values configured.

Security Notes 4
  • BEE implements per-content-type permissions allowing granular access control for availability management
  • The 'manage availability for own nodes' permission restricts users to only their own content, providing multi-tenant capability
  • Commerce integration follows standard Drupal Commerce security practices for payment processing
  • Access to reservation forms is controlled by the 'create bee reservation' permission