<?php
/**
* Implements AMP_LINK qtag.
*
* Render a link to the amp version of the node.
*
* @param Environment $env
* The Environment.
*
* @param string $target
* The qtag's target.
*
* @param array $attributes
* The qtag's attributes.
*
* @return string
* The rendered qtag.
*/
function qtag_AMP_LINK($env, $target, $attributes) {
$node = NodeFactory::current($env);
return '<link rel="amphtml" href="' . ($env->getBaseUrl() . '/amp/' . $node->getName()) . '">';
}
/**
* Implements CANONICAL_LINK qtag.
*
* Render a link to the amp version of the node.
*
* @param Environment $env
* The Environment.
*
* @param string $target
* The qtag's target.
*
* @param array $attributes
* The qtag's attributes.
*
* @return string
* The rendered qtag.
*/
function qtag_CANONICAL_LINK($env, $target, $attributes) {
$node = NodeFactory::current($env);
return '<link rel="canonical" href="' . ($env->getBaseUrl() . '/' . $node->getName()) . '">';
}
/**
* Implements AMP_CAROUSEL qtag.
*
* Render amp version of the carousel.
*
* @param Environment $env
* The Environment.
*
* @param string $target
* The qtag's target.
*
* @param array $attributes
* The qtag's attributes.
*
* @return string
* The rendered qtag.
*/
function qtag_AMP_CAROUSEL($env, $target, $attributes) {
/** @var Page $page */
$page = $env->getData('page');
$module = isset($attributes['module']) ? $attributes['module'] : 'amp';
if (empty($attributes['carousel-type'])) {
$attributes['carousel-type'] = CAROUSEL_DIRS;
}
/** @var ListObject $list */
switch ($attributes['carousel-type']) {
case CAROUSEL_DIRS:
$tpl = isset($attributes['tpl']) ? $attributes['tpl'] : 'amp-carousel';
$list = new DirList($env, $target, $tpl, array('clean' => true, 'class' => 'amp-carousel') + $attributes, $module);
break;
case CAROUSEL_FILES:
$tpl = isset($attributes['tpl']) ? $attributes['tpl'] : 'amp-file-carousel';
$list = new FileList($env, $target, $tpl, array('clean' => true, 'class' => 'amp-carousel') + $attributes, $module);
break;
default:
break;
}
$carousel_attributes_defaults = array(
// TODO: Extend to all options.
'width' => '400',
'height' => '225', // 400:225 = 16:9
'layout' => 'responsive', // responsive / fixed-height
'type' => 'slides',
'autoplay' => 'false',
'delay' => '3000', // used when autoplay is active
);
$carousel_attributes = array();
foreach ($carousel_attributes_defaults as $k => $attr) {
$carousel_attributes[$k] = (isset($attributes[$k]) ? $attributes[$k] : $attr);
}
$rand_class = rand(0, 99999999);
$html = '<amp-carousel class="amp-' . $rand_class . '"';
$html .= ' width="' . $carousel_attributes['width'] . '"';
$html .= ' height="' . $carousel_attributes['height'] . '"';
$html .= ' layout="' . $carousel_attributes['layout'] . '"';
$html .= ' type="' . $carousel_attributes['type'] . '"';
$html .= ($carousel_attributes['autoplay'] == 'true' ? ' autoplay' : '');
$html .= ' delay="' . $carousel_attributes['delay'] . '"';
$html .= '>' . $list->render() . '</amp-carousel>';
return $html;
}
|