2

Currently, we're using Acquia Content Hub to syndicate content across our sites with a spoke and wheel syndication architecture. We essentially use a single site (that content editors use to create/maintain our content) and push out content to all of our subscribing sites.

However, it seems that some of our developers implemented changes on certain sites but not all sites and this is causing differences for each of our site environments (example: All sites would have an article content type but with different fields/naming conventions for fields). These differences then end up preventing our synchronization (especially if there is a field on the main content site and not on a subscribing site) from moving past the item and then requires a clear (and re-queue) of all items to syndicate.

Is there any easy way to set up a PHP script or something to check each site for differences against the main content site for entities?


For example:

If on the main (content) site the article had 3 fields: 
- Article Title
- Article Body
- Article Image 

And on a subscribing site, the article had only 2 fields:
- Article Title
- Article Body

I would expect said magical script to print out some indication that on the main (content) site, there is an "Article Image" field present that's not available on the subscribing site.

Is there any way that I could accomplish this? Any and all assistance would be greatly appreciated, thanks!

2

That's a task for the Features module. Before Drupal 8 and its superb configuration management the Features module was used to track and deploy changes to entities or settings from local to prod or to your coworkers. Nowadays you can use it to track changes and sync features across multiple instances of Drupal.

Let's say you have two Drupal 8 sites or two Drupal 8 multisite instances and both of them have a content type "Foobar". Then there's Features that lets you export the whole content type into a so called Features module. Which is just another module but also holds the whole config for this "Foobar" content type in it. Now you activate this Features module on both sites or instances and both will have the same content type with the same fields in it.

From now on when you change something in this content type on either instance Features will recognize the changes and offers you to recreate the Features module. Do that and the other instance will recognize the Features module had been recreated and offers you to import these changes.

And that's what you can do now. Go to the instance you consider being the master. Use Features to export the content type in a Features module. Enable this module in this instance and also in the other instance which you think got overridden or which you think is missing the changes and use Features to explore the differences and to maybe sync the changes.

The features module enables the capture and management of features in Drupal. A feature is a collection of Drupal entities which taken together satisfy a certain use-case.

Features provides a UI and API for taking different site building components from modules with exportables and bundling them together in a single feature module. A feature module is like any other Drupal module except that it contains additional information in its info file so that configuration can be checked, updated, or reverted programmatically.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.