From the origins of Drupal, contents are stored in the database to benefit from very advanced toolbox like Views, CTools and Paragraphs.
Xtended Content (or XTC) provides an abstract layer to help Drupal 8 access data that are not stored in the D8 database, and display it directly.
Don't change the code¶
As a start, XTC is helping Drupal developers to easily connect their Drupal projects to a large diversity of sources in a solid way:
- Define a Profile (a Yaml D8 plugin), create a Route, and load Data from a plain
controller to display it through a Drupal
hook_theme()defined destination (or a
- Change the definition of your Profile (4 or 6 lines in your Yaml file), don't touch the code.
- That's it! You've just switched from a Json file to your permanent Guzzle webservice.
Server plugin-manager allows to define as many environments as needed for a given
Server. Just set the name fo the current environment (at server level) in the
Make your own handlers¶
Here are some examples of Data handlers XTC already manages:
- Files and Directories of files: csv, Html, Json, Markdown, Readme, MkDocs, Text, Yaml.
- Webservices through Guzzle
- Metadata parsed from webpages with Micrometa
- Drupal local API
CRUD is not an option¶
We are not only expecting to read, but also to provide CRUD features. To do this,
Profiles plugins are defined by types and verbs:
file_delete can be defined to
code a plugin based on the File handler, and helping to delete... a file.
Cache plugin-manager was created to help define workflow to easily obtain better performance. A simple case:
- Parse a Recipe data from 750g web page and normalize it to display it in a given template.
- Store it in a local page, not to have to connect to 750g website each time you want to make your prefered Apple crumble.
- Test if the local file exists, and fetch only on fail.
- Create a Memcache handler, change cache profile to a memcache definition, and it will be faster. Change it to an Elasticsearch profile, and it will be more fun.
We shouldn't have to change any existing business code for that.