Drupal is a registered trademark of Dries Buytaert

smart_content_cdn

6 sites No security coverage
View on drupal.org

Extends the Smart Content Drupal module to support Pantheon Edge Integrations and personalization features.

Features

  • Leverage Pantheon Edge Integrations to deliver personalized content to users directly from the CDN
  • Segment content based on Taxonomy interest
  • Segment content based on user geography

Installation

We recommend using Composer to install this module. In your project root, run:

composer require drupal/smart_content_cdn

This will install the Smart Content module, Smart Content CDN and pantheon-systems/pantheon-edge-integrations -- a PHP library that is required by Smart Content CDN. Smart Content CDN will not function properly without the pantheon-edge-integrations library.

Post-Installation

  1. Navigate to the Configuration > System > Smart Content CDN Configuration page at /admin/config/system/smart-content-cdn.
  2. Enable the Vary Header toggle.
  3. Set default Geo value to a 2-letter country code in all uppercase (e.g. US). This should match the default segment in Step 8 of the Geolocation section.
  4. Save the configuration.

For detailed instructions on how to install and set up Smart Content CDN, see the Edge Integration Guide.

API

It is possible to retrieve header information using Smart Content CDN within your own custom module. This can be used in any class context or procedural context in any hook.

  1. Include the library with the use statement.
    use Pantheon\EI\HeaderData;
    
  2. Use the snippet below to obtain the header data object
     // Get header data.
     $smart_content_cdn = new HeaderData();
     $p_obj = $smart_content_cdn->returnPersonalizationObject();
    

Drupal Event Subscriber Vary Header

It is possible to set a Vary header within a Drupal Event Subscriber, giving the possibility of customizing content on a per-user basis.

/**
 * This method is called when the kernel.response is dispatched.
 *
 * @param \Symfony\Component\HttpKernel\Event\FilterResponseEvent $event
 *   The dispatched event.
 */
public function onRespond(FilterResponseEvent $event) {
  $config = \Drupal::configFactory()->get('smart_content_cdn.config');

  // Check if Vary Header should be set.
  if ($config->get('set_vary') ?? TRUE) {
    $response = $event->getResponse();

    // Header keys to add to Vary header.
    $vary_headers = ['Audience', 'Interest', 'Role'];

    // Retrieve and set vary header.
    $smart_content_cdn = new HeaderData();
    $response_vary_header = $smart_content_cdn->returnVaryHeader($vary_headers);
    $response->headers->add($response_vary_header);
  }
}

There are a few different ways to extend the capabilities of the Smart Content CDN module.

Smart Content Preview

Use the Smart Content Preview to allow previewing different segments that you have set up.

Smart Content SSR

The Smart Content SSR module adds a server-side rendering Decision block, based on the Decision block that the Smart Content module provides. Use this if you're looking to improve speed on the site, along with consistency.

Community Documentation

Activity

Total releases
1
First release
Jun 2025
Latest release
8 months ago
Release cadence
Stability
100% stable

Releases

Version Type Release date
1.1.1 Stable Jun 10, 2025