<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
* MaxSite CMS
* (c) https://max-3000.com/
*/
/*
Слайдер lightslider в виде шорткода
[html][lightslider 1]
[js]
item: 2,
auto: true,
loop: true,
speed: 400,
[/js]
[slide]
<h3 class="bg-blue pad20 t-center">1</h3>
[/slide]
[slide]
<h3 class="bg-yellow pad20 t-center">2</h3>
[/slide]
[slide]
<h3 class="bg-red t-white pad20 t-center">3</h3>
[/slide]
[slide]
<h3 class="bg-gray800 t-white pad20 t-center">4</h3>
[/slide]
[/lightslider][/html]
Подключать в custom/my-template.php
if ($fn = mso_fe('components/lightslider/lightslider-shortcode.php')) require_once($fn);
*/
function lightslider_shortcode($attr)
{
$slides0 = $attr[2];
if (!$slides0) return ''; // опции не определены - выходим
// замена в тексте
$slides0 = str_replace('TEMPLATE_URL/', getinfo('template_url'), $slides0);
$slides0 = str_replace('SITE_URL/', getinfo('siteurl'), $slides0);
// ищем вхождение [slide] ... [slide]
$slides = mso_section_to_array($slides0, '!\[slide\](.*?)\[\/slide\]!is', [], false, true);
if (!$slides) return ''; // нет секций - выходим
// опции слайдера свои
$options = mso_section_to_array($slides0, '!\[options\](.*?)\[\/options\]!is', []);
if (isset($options[0])) $options = $options[0];
$num = trim($attr[1]);
$options_def = [
'block_start' => '<div class="mar30-tb">',
'block_end' => '</div>',
'element' => '.lightslider' . $num, // элемент для jQuery (с точкой)
'ul_class' => 'lightslider' . $num, // class для ul
];
$options = mso_merge_array($options, $options_def);
// в секции [js] все параметры слайдера в родном js-формате
$js = mso_section_to_array($slides0, '!\[js\](.*?)\[\/js\]!is', array(), false, true);
// данные в первом элементе
$js = (isset($js[0])) ? $js[0] : '';
$out = $options['block_start'] . '<ul class="inline ' . $options['ul_class'] . '">';
foreach ($slides as $slide) {
if (!$slide) continue; // не указан текст
$out .= '<li>' . trim($slide) . '</li>';
}
$out .= '</ul>' . $options['block_end'];
$out .= mso_load_script(getinfo('template_url') . 'components/lightslider/lightslider.js');
$out .= '<script>$(document).ready(function() { $("' . $options["element"] . '").lightSlider({' . $js . '}); });</script>';
return $out;
}
function lightslider_shortcode_css($attr)
{
mso_add_file('components/lightslider/style.css');
return $attr;
}
// включение шорткода
mso_shortcode_add('lightslider', 'lightslider_shortcode');
mso_hook_add('head_css', 'lightslider_shortcode_css');
# end of file