Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы по PHP Как вывести HIGHSLIDE на главной и в категориях?

Как вывести HIGHSLIDE на главной и в категориях?


     16.01.2016    Общие вопросы по PHP    621

вопрос
Приветствую. Использую для главной и категорий модуль CatFace. В описание добавлено по изображению с thumb. Если кликнуть по изображению, то оно открывается полностью на новой странице и чтобы его закрыть, надо возвращаться на один шаг назад.

Данную проблему можно решить, добавив в категории и на главную строку:
<script type="text/javascript" src="/engine/classes/highslide/highslide.js"></script>

Но получается странная ситуация, по умолчанию данное подключение скрипта не происходит на главной через {headers}, но если вручную в шаблон main.tpl прописать выше упомянутый код, то он также выводится в блоке {headers} и получается, что один скрипт подключается дважды.

Как сделать, чтобы строка
<script type="text/javascript" src="/engine/classes/highslide/highslide.js"></script>

выводилась через {headers} на главной и в категориях?

Если я правильно понял, копать надо в сторону:
if (strpos ( $tpl->result['content'], "hs.expand" ) !== false OR strpos ( $tpl->copy_template, "hs.expand" ) !== false OR strpos ( $tpl->result['content'], "highslide" ) !== false OR strpos ( $tpl->copy_template, "highslide" ) !== false) {

    $js_array[] = "engine/classes/highslide/highslide.js";

    if ($config['thumb_dimming']) $dimming = "hs.dimmingOpacity = 0.60;"; else $dimming = "";

    if ($config['thumb_gallery'] AND ($dle_module == "showfull" OR $dle_module == "static") ) {

    $gallery = "hs.align = 'center'; hs.transitions = ['expand', 'crossfade']; hs.addSlideshow({interval: 4000, repeat: false, useControls: true, fixedControls: 'fit', overlayOptions: { opacity: .75, position: 'bottom center', hideonmouseout: true } });";

    } else $gallery = "";

    switch ( $config['outlinetype'] ) {

        case 1 :
            $type = "hs.wrapperClassName = 'wide-border';";
            break;

        case 2 :
            $type = "hs.wrapperClassName = 'borderless';";
            break;

        case 3 :
            $type = "hs.wrapperClassName = 'less';\nhs.outlineType = null;";
            break;

        default :
            $type = "hs.outlineType = 'rounded-white';";
            break;


    }

Но своими силами не осилил.

Ответил: ПафНутиЙ


Просто добавьте в шаблон код:
<!-- hs.expand -->


Дело в том, что для уменьшения кол-ва скриптов на странице проверяется наличие текста `hs.expand` в скомпилированном контенте и добавляется скрипт highslide.js.

Комментарии пользователей (2)

finik
54 | 5

finik - 16 января 2016 19:36 - Юзер

Проблему дублирования строки решил - установил модуль DLE-Asset и теперь выводится только одна строка.

finik
54 | 5

finik - 22 января 2016 10:03 - Юзер

Павел, спасибо. Но я все же остановился на использование модуля Dle-Asset - код чистый, а вот при вставке <!-- hs.expand --> - данный комментарий остается в исходном коде, а я люблю максимальную чистоту.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы