4. Moduł Cookiec
Cookiec służy do wyświetlania
informacji o używaniu ciasteczek na
naszej stronie www.
Live: www.droptica.pl
5. Jak działa?
DRUPAL
Dodaj cookie.js
Pobierz ustawienia
REQUEST
Ciasteczko?
Response
Cache
NIE
Dodaj style CSS
+ render HTML
TAK
Po stronie przeglądarki
JS
Wyświetlam info
Nie wyświetlam
6. Co zrobimy?
● Zmigrujemy podstawowe pliki modułu. ( .info .module)
● Zmigrujemy hook_menu na routing.yml
● Stworzymy klasę Controllera
● Zmigrujemy hook_permissions
● Utworzymy formularz oraz stronę do konfiguracji
modułu
● Zmigrujemy hook_init na EventSubscriber
7. Co zrobimy?
● Dodamy pliki JS oraz CSS
● Utworzymy formularz configuracyjny
● Stworzymy templatki TWIG
8. Wymagania
● Drupal w wersji 8.
● Program do edycji plikow PHP Storm, Netbeas, Notepad++ itd.
● Opcjonalnie debbuger, modul devel, drush
● Gotowy Moduł do pobrania https://github.com/droptica/cookiec/
● Szczegółowy tutorial na
http://www.droptica.pl/blog/port-modulu-z-drupala-7-na-8-na-
przykladzie-modulu-cookiec
9. Tworzymy moduł
plik cookiec.info.yml
● name: CookieC
● type: module
● core: 8.x
● version: 8.x-1.0
● description: This module aims at making the
website compliant with the new EU cookie
regulation
● configure: cookiec.settings
10. Tworzymy moduł
plik cookiec.info.yml
W Drupalu 8, aby moduł „działał” potrzebujemy
tylko plik info.yml.
Moduł powinien być już widoczny przez Drupala
Odpalamy moduł w /admin/modules
11. Tworzymy pierwszy contoller
Utworzymy "Hello Word", stworzymy zatem plik
Cookiec.php w katalogu cookiec/src/Contoller:
namespace DrupalcookiecController;
use DrupalCoreControllerControllerBase;
class Cookiec extends ControllerBase {
function renderPage(){
return array(
'#title' => '',
'#markup' => 'hello word!',
);
}
}
12. Routing cookiec.routing.yml
cookiec.render_cookiec:
path: '/cookiec'
defaults:
_controller: 'DrupalcookiecControllerCookiec::renderPage'
_title: ''
requirements:
_permission: 'access content'
Po wejściu na strone /cookiec odpalamy controler cookiec I
wykonujemy motodę renderPage, czyli narazie wyświetlamy hello
word, dodatkowo user musi mieć dostęp do „access content”
13. Permissions + formularz
konfiguracyjny
W pliku
cookiec.permissions.yml dodajemy:
administer cookiec:
title: 'Administer cookiec administration message module'
description: 'Perform administration tasks for cookiec'
administer cookiec – będziemy od teraz mogli przypisac do roli w
ustawieniach permission
Musimy jeszcze dodac w routingu:
cookiec.settings:
path: '/admin/config/content/cookiec-settings'
defaults:
_form: 'DrupalcookiecFormsCookiecSettingsForm'
_title: 'cookiec configuration'
requirements:
_permission: 'administer cookiec'
Aby ten formularz wyświetlił nam się pod ikonką konfigruacji modułu
Dodajemy w info configure: cookiec.settings (nazwa routingu)
14. Formularz do ustawień modułu
W pliku
src/Forms/CookiecSettingsForm.php
Dodajemy formularz oraz metody do jego obsługi submit, validation
itp..
Nazwa naszej klasy formularza musi pokrywac się z metodą w
routingu:
defaults:
_form: 'DrupalcookiecFormsCookiecSettingsForm'
class CookiecSettingsForm extends ConfigFormBase {
}
15. Defaultowe ustawienia modulu
Wszystkie nasze ustawienia zapisywane są w configach. Możemy
stworzyć config instalacyjny, który przy instalacji doda nam domyślne
wartości.
W pliku
/config/install/cookiec.settings.yml np.:
popup_enabled: 1
popup_agreed_enabled: 0
popup_hide_agreed: 1
popup_width: 100%
popup_delay: '1'
en_popup_link: /cookiec
pl_popup_link: /cookiec
en_popup_title: 'Cookie policy'
en_popup_info: 'This website uses cookies. By remaining on this website you agree to our <a
href="/cookiec">cookie policy</a>'
pl_popup_title: 'Polityka cookie'
pl_popup_info: 'Powiadomienie o plikach cookie. Ta strona korzysta z plików cookie. Pozostając na tej
stronie, wyrażasz zgodę na korzystanie z plików cookie. <a href="/cookiec">Dowiedz się więcej</a>'
pl_popup_agreed: 'Zgadzam się'
en_popup_link: /cookiec
pl_popup_link: /cookiec
Domyślnie informacja włączona, opożnienie 1s, szerokośc 100%, link do wersji polskiej, angielskiej,
domyślne teksty itp…
Jeżeli nasz moduł jest już włączony musimy go odinstalowac i zainstlować ponownie.
16. hook_init → event subsriber
nasz Event jest servicem więc musimy go zdefiniować
w pliku services.yml
services:
popup_message_event_subscriber:
class: DrupalcookiecEventSubscriberCookiecSubscriber
tags:
- {name: event_subscriber}
Teraz dodamy nasz event w src/EventSubscriber/CookiecSubscriber.php
class CookiecSubscriber implements EventSubscriberInterface {
public static function getSubscribedEvents() {
$events[KernelEvents::RESPONSE][] = array('showPopupMessage', 20);
return $events;
}
}
17. Dodawnie JS oraz CSS
Aby łatwiej zarządzać plikami JS i CSS tworzymy „bibloteki”
W pliku cookiec.libraries.yml
cookiec_library:
version: 1.x
css:
theme:
css/cookiec.css: {}
js:
js/cookiec.js: {preprocess: false}
dependencies:
● - core/jquery
Do naszej strony dodajmy
$attachments = $response->getAttachments();
$attachments['library'][] = 'cookiec/cookiec_library';
$attachments['drupalSettings']['cookiec'] = $variables;
$response->setAttachments($attachments);