Skip to content

OpenEuropa Drupal 8 theme based on the Europa Component Library

License

Notifications You must be signed in to change notification settings

richardcanoe/oe_theme

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenEuropa theme

Build Status

Drupal 8 theme based on the Europa Component Library (ECL).

Table of contents:

Installation

The recommended way of installing the OpenEuropa theme is via a Composer-based workflow.

In your Drupal project"s main composer.json add the following dependency:

{
    "require": { 
        "openeuropa/oe_theme": "^0.3"
    }
} 

And run:

$ composer update

If you are not using Composer then download the release package and install it as described here.

Note: Release archives are built by the continuous integration system and include code coming from third-party libraries, such as ECL templates and other assets. Make sure you use an actual release and not the source code archives.

Enable the theme

In order to enable the theme in your project perform the following steps:

  1. Enable the OpenEuropa Theme Helper module ./vendor/bin/drush en oe_theme_helper
  2. Enable the OpenEuropa Theme and set it as default ./vendor/bin/drush drush config-set system.theme default oe_theme

Step 1. is necessary until the following Drupal core issue is resolved. Alternatively you can patch Drupal core with this patch and enable the theme: the patched core will then enable the required OpenEuropa Theme Helper module.

Development

The OpenEuropa Theme project contains all the necessary code and tools for an effective development process, meaning:

  • All PHP development dependencies (Drupal core included) are required in composer.json
  • All Node.js development dependencies are required in package.json
  • Project setup and installation can be easily handled thanks to the integration with the Task Runner project.
  • All system requirements are containerized using Docker Composer.
  • Every change to the code base will be automatically tested using Drone.

Project setup

Developing the theme requires a local copy of ECL assets, including Twig templates, SASS and JavaScript source files.

In order to fetch the required code you"ll need to have Node.js (>= 8) installed locally.

To install required Node.js dependencies run:

$ npm install

To build the final artifacts run:

$ npm run build

This will compile all SASS and JavaScript files into self-contained assets that are exposed as Drupal libraries.

In order to download all required PHP code run:

$ composer install

This will build a fully functional Drupal site in the ./build directory that can be used to develop and showcase the theme.

Before setting up and installing the site make sure to customize default configuration values by copying runner.yml.dist to ./runner.yml and override relevant properties.

To set up the project run:

$ ./vendor/bin/run drupal:site-setup

This will:

  • Symlink the theme in ./build/themes/custom/oe_theme so that it"s available to the target site
  • Setup Drush and Drupal"s settings using values from ./runner.yml.dist
  • Setup PHPUnit and Behat configuration files using values from ./runner.yml.dist

After a successful setup install the site by running:

$ ./vendor/bin/run drupal:site-install

This will:

  • Install the target site
  • Set the OpenEuropa Theme as the default theme
  • Enable OpenEuropa Theme Demo and Configuration development modules

Using Docker Compose

The setup procedure described above can be sensitively simplified by using Docker Compose.

Requirements:

Run:

$ docker-compose up -d

Then:

$ docker-compose exec -u node node npm install
$ docker-compose exec -u node node npm run build
$ docker-compose exec web composer install
$ docker-compose exec web ./vendor/bin/run drupal:site-setup
$ docker-compose exec web ./vendor/bin/run drupal:site-install

Your test site will be available at http://localhost:8080/build.

Run tests as follows:

$ docker-compose exec web ./vendor/bin/phpunit
$ docker-compose exec web ./vendor/bin/behat

Disable Drupal 8 caching

Manually disabling Drupal 8 caching is a laborious process that is well described here.

Alternatively, you can use the following Drupal Console command to disable/enable Drupal 8 caching:

$ ./vendor/bin/drupal site:mode dev  # Disable all caches.
$ ./vendor/bin/drupal site:mode prod # Enable all caches.

Note: to fully disable Twig caching the following additional manual steps are required:

  1. Open ./build/sites/default/services.yml
  2. Set cache: false in twig.config: property. E.g.:
parameters:
     twig.config:
       cache: false
  1. Rebuild Drupal cache: ./vendor/bin/drush cr

This is due to the following Drupal Console issue.

Working with ECL components

You can use the ECL components in your Twig templates by referencing them using the ECL Twig Loader as shown below:

{% include "@ecl/logos" with {
  "to": "https://ec.europa.eu",
  "title": "European Commission",
} %}

Or:

{% include "@ec-europa/ecl-logos" with {
  "to": "https://ec.europa.eu",
  "title": "European Commission",
} %}

JavaScript components can be accessed by ECL.methodName(), e.g. ECL.accordions().

Important: not all ECL templates are available to the theme for include, whenever you need include a new ECL template remember to add it to the copy section of ecl-builder.config.js and run:

$ npm run build

Update ECL

To update ECL components change the @ec-europa/ecl-preset-full version number in package.json and run:

$ npm install && npm run build

This will update assets such as images and fonts and re-compile CSS. Resulting changes are not meant to be committed to this repository.

Watching and re-compiling Sass and JS changes

To watch for Sass and JS file changes - /sass folder - in order to re-compile them to the destination folder:

$ npm run watch

Resulting changes are not meant to be committed to this repository.

Patching ECL components

ECL components can be patched by using the patch-package NPM project.

To patch a component:

  1. Modify its source files directly in ./node_modules/@ecl/[component-name]
  2. Run:
$ npx patch-package @ecl/[component-name]

Or, when using Docker Compose:

$ docker-compose exec -u node node npx patch-package @ecl/[component-name]

Patches will be generated in ./patches and applied when running npm install.

Demo module

The theme ships with a demo module which provides all necessary configuration and code needed to showcase the theme"s most important features.

The demo module includes:

  • A custom main menu with sub-menu items
  • An overview page for all Drupal-related components called "Style guide"
  • Placeholder blocks like:
  • Language switcher
  • Site switcher
  • Search block
  • Footer

In order to install the OpenEuropa Theme Demo module follow the instruction here or enable it via Drush by running:

$ ./vendor/bin/drush en oe_theme_demo -y

About

OpenEuropa Drupal 8 theme based on the Europa Component Library

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 63.1%
  • HTML 23.2%
  • JavaScript 9.1%
  • Gherkin 3.6%
  • CSS 1.0%