Integration

Templating

Image variants

Image variants are used to define the image rendering taking into account different screen width. The available space might be further modified by templates, layouts, partials and content elements. The resulting variants when rendering a content element can be obtained with the pp:structure.variants view helper:

{pp:structure.variants(as: 'variants')}

Hint

The pp:structure.variants view helper can be used with the attribute initialVariants to define the base variants to apply the variantsModifiers upon. For more details have a look to the StructureVariantsUtility class.

For debugging purposes the pp:structure.variantsModifierStack view helper might be used:

<f:if condition="{data.uid} === 6">
   {pp:structure.variantsModifierStack(as: '_stack')}
   <f:debug>{_stack}</f:debug>
</f:if>

Structure elements

When creating templates structures dividing the available width might be defined (e.g. columns). By providing the system with information regarding the available space within the structures the content rendering can be optimized. A typical scenario is to render images in columns. For this purpose the following view helpers are available:

pp:render.bootstrap.column

<pp:render.bootstrap.column class="col col-md-8 col-xl-6" count="2" gutter="40" correction="2">
   <div class="content-from-column">
      <v:content.render contentUids="{0: item.data.uid}" />
   </div>
</pp:render.bootstrap.column>

The above code results in:

<div class="col col-md-8 col-xl-6">
   <div class="content-from-column">
      <v:content.render contentUids="{0: item.data.uid}" />
   </div>
</div>

Note

The count-attribute is used when the width from the column isn’t specified by the classes (e.g. when using col)

pp:structure.wrap.column

<pp:structure.wrap.column class="col col-md-8 col-xl-6" count="2" gutter="40" correction="2">
   <div class="col col-md-8 col-xl-6">
      <div class="content-from-column">
         <v:content.render contentUids="{0: item.data.uid}" />
      </div>
   </div>
</pp:structure.wrap.column>

The above code results in:

<div class="col col-md-8 col-xl-6">
   <div class="content-from-column">
      <v:content.render contentUids="{0: item.data.uid}" />
   </div>
</div>

pp:structure.multiplier.getForColumn

<div class="pp-tile-col col-xl-4"><a id="c348"></a>
   {pp:structure.multiplier.getForColumn(class: 'col-xl-4', count: 2, as: '_colMultiplier')}
   <div class="pp-tile-row row no-gutters">
      {pp:structure.multiplier.getForColumn(multiplier: _colMultiplier, class: 'col-md-6 col-xl-12', count: 2, as: '_colMultiplier')}
      {bk2k:data.imageVariants(as:'_colVariants', variants: variants, multiplier: _colMultiplier)}
      <div class="pp-tile-col col-md-6 col-xl-12">
         <f:render partial="Media/Rendering/Image" arguments="{
            file: _secondaryMedia.files.0,
            data: _secondaryMedia.data,
            settings: settings,
            variants: _colVariants}" />
      </div>
   </div>
</div>

SCSS-Mixins

The extensions provides mixins to assist in customizing a web site. Following the most used ones are listed.

Mixin Description
pp-make-rainbow-background($start_color, $end_color, $count: 10) Used to create a background with two overlapping rainbows starting from each bottom corner.
pp-make-spaces($properties, $value, $valueBreakpoint: xl, $scaling: $pp-space-scaling) Used to create any kind of responsive space (padding or margin). Usage: pp-make-spaces(margin-top, 1.5rem)
pp-make-frame-spaces($value, $valueBreakpoint: xl, $sibling: '.frame', $scaling: $pp-space-scaling) Used to create responsive frame spaces with a space of @value at $valueBreakpoint. The space is controlled by the padding and collapsing is taken into account.
pp-make-text-shadow-outline($thickness: 3px, $color: black, $blur-radius: 5px) Used to create text with a shadowed outline