EventsBundle does the following:
- Displays event requested,
- Provides tools to manage events,
- Provides a carousel of events,
- Provides a link to integrate to calendar (ics),
- Integrates with your web design,
This Bundle relies on the use of TinyMce, jQuery, Bootstrap and Bootstrap DatePicker and requires Twig/Extensions for localizing dates and time.
EventsBundle dedicated web page.
EventsBundle API documentation.
Use Composer to install the library
composer require c975l/evebts-bundle
Then, enable the bundles by adding them to the list of registered bundles in the app/AppKernel.php
file of your project:
<?php
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = [
// ...
new c975L\EventsBundle\c975LEventsBundle(),
];
}
}
Check dependencies for their configuration:
v2.0+ of c975LEventsBundle uses c975L/ConfigBundle to manage configuration parameters. Use the Route "/events/config" with the proper user role to modify them.
Upgrading from v1.x? Check UPGRADE.md.
If you use Git for version control, you need to add the full path web/images/[folderPictures]
in the .gitignore
, otherwise all the content will be altered by Git.
Then, enable the routes by adding them to the app/config/routing.yml
file of your project:
c975_l_events:
resource: "@c975LEventsBundle/Controller/"
type: annotation
prefix: /
#Multilingual website use the following
#prefix: /{_locale}
#defaults: { _locale: '%locale%' }
#requirements:
# _locale: en|fr|es
You can use php bin/console make:migration
to create the migration file as documented in Symfony's Doctrine docs OR use /Resources/sql/events.sql
to create the table events
. The DROP TABLE
is commented to avoid dropping by mistake.
It is strongly recommended to use the Override Templates from Third-Party Bundles feature to integrate fully with your site.
For this, simply, create the following structure app/Resources/c975LEventsBundle/views/
in your app and then duplicate the files layout.html.twig
and tinymceInit.html.twig
in it, to override the existing Bundle files, then apply your needed changes, such as language, etc.
In layout.html.twig
, it will mainly consist to extend your layout and define specific variables, i.e. :
{% extends 'layout.html.twig' %}
{# Defines specific variables #}
{% set title = 'Events (' ~ title ~ ')' %}
{% block content %}
{% block events_content %}
{% endblock %}
{% endblock %}
It is recommended to use Tinymce Cloud version. You will need a free API key. OR you can download and link to your project https://www.tinymce.com/download/.
If you want to keep all the available tools and make no change to Tinymce as it is, you don't need to overwrite tinymceInit.html.twig
. You just need to provide, in config.yml
your tinymceApiKey
, if you use the cloud version and the tinymceLanguage
(+ upload the corresponding file on your server under web/vendor/tinymce/[tinymceLanguage].js
). Or you can overwrite tinymceInit.html.twig
.
In the overridding file setup above, you must add a link to the cloud version (recommended) https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.7.0/js/bootstrap-datepicker.min.js
of Bootstrap DatePicker.
You may also want to setup the specific locales from cdnjs.com.
Initialization is done inside the templates of the Bundle.
The Route to display an event is http://example.com/events/{event}
, the one to edit is http://example.com/events/edit/{event}
.
A toolbar is displayed below the title if user is identified and has the acess rights.
Link to a page, in Twig, can be done by <a href="{{ path('events_display', { 'slug': 'slug' }) }}">Title of the event</a>
.
The different Routes (naming self-explanatory) available are:
- events_display
- events_config
- events_create
- events_modify
- events_duplicate
- events_delete
- events_dashboard
- events_all
- events_ical
- events_slug
- events_help
To include the carousel in a page, simply use {{ events_carousel(number) }}
where you want it to appear and where number
is the number of events to display.
In a console use php bin/console events:createSitemap
to create a sitemap-events.xml
in the web
folder of your project. You can use a crontab to generate it every day.
You can add this file in a sitemap-index.xml
that groups all your sitemaps or directly use it if you have only one.
If this project help you to reduce time to develop, you can sponsor me via the "Sponsor" button at the top :)