Редактор темы

Реклама
Реклама

Аналог {image-x} для дололнительного поля

Ботяра

Забанен
Регистрация
10 Окт 2015
Сообщения
0
Рейтинг реакций
-155
Баллы
0
1/3
Автор темы
Иногда приходилось делать подобное, чтобы оптимизировать загрузку и кастомизировать вывод кадров на фильмах, которые загружены в дополнительное поле.

Итак. для создания тегов аналогичных {image- {fullimage-, но только для доп поля, делаем следующее.

1. В файле show.full.php поред
PHP:
        $category_id = $row['category'];
        $tpl->compile( 'content' );
добавить
PHP:
        if (stripos ( $tpl->copy_template, "{xfimage-" ) !== false || stripos ( $tpl->copy_template, "{xfimageLarge-" ) !== false ) {
            $xfieldsdata = xfieldsdataload( $row['xfields'] );
            $images = array();
            preg_match_all('/(img|src)=("|\')[^"\'>]+/i', $xfieldsdata['screens'], $media);
            $data=preg_replace('/(img|src)("|\'|="|=\')(.*)/i',"$3",$media[0]);
  
            foreach($data as $url) {
                $info = pathinfo($url);
                if (isset($info['extension'])) {
                    if ($info['filename'] == "spoiler-plus" OR $info['filename'] == "spoiler-minus" ) continue;
                    $info['extension'] = strtolower($info['extension']);
                    if (($info['extension'] == 'jpg') || ($info['extension'] == 'jpeg') || ($info['extension'] == 'gif') || ($info['extension'] == 'png')) array_push($images, $url);
                }
            }
  
            if ( count($images) ) {
                $i=0;
                foreach($images as $url) {
                    $i++;
                    $tpl->copy_template = str_replace( '{xfimage-'.$i.'}', $url, $tpl->copy_template );
                    $tpl->copy_template = str_replace( '[xfimage-'.$i.']', "", $tpl->copy_template );
                    $tpl->copy_template = str_replace( '[/xfimage-'.$i.']', "", $tpl->copy_template );
                    $tpl->copy_template = str_replace( '{xfimagelarge-'.$i.'}', str_replace('thumbs/','',$url), $tpl->copy_template );  
                    $tpl->copy_template = str_replace( '[xfimagelarge-'.$i.']', "", $tpl->copy_template );
                    $tpl->copy_template = str_replace( '[/xfimagelarge-'.$i.']', "", $tpl->copy_template );
                }
  
            }
  
            $tpl->copy_template = preg_replace( "#\[xfimage-(.+?)\](.+?)\[/xfimage-(.+?)\]#is", "", $tpl->copy_template );
            $tpl->copy_template = preg_replace( "#\\{xfimage-(.+?)\\}#i", "{THEME}/dleimages/no_image.jpg", $tpl->copy_template );
            $tpl->copy_template = preg_replace( "#\[xfimagelarge-(.+?)\](.+?)\[/xfimagelarge-(.+?)\]#is", "", $tpl->copy_template );
            $tpl->copy_template = preg_replace( "#\\{xfimagelarge-(.+?)\\}#i", "{THEME}/dleimages/no_image.jpg", $tpl->copy_template );
  
        }
где screens меняет на название своего доп поля, где у нас загружены картинки.
2. В шаблоне fullstory.tpl прописываем код аналогичный этому:
HTML:
[xfimage-1]<a href="{xfimagelarge-1}" rel="highslide" class="highslide"><img src="{poster src='{xfimagelarge-1}' width='187' height='143'}" alt='{title}' title='{title}'  /></a>[/xfimage-1][xfimage-2]<a href="{xfimagelarge-2}" rel="highslide" class="highslide"><img src="{poster src='{xfimagelarge-2}' width='187' height='143'}" alt='{title}' title='{title}'  /></a>[/xfimage-2][xfimage-3]<a href="{xfimagelarge-3}" rel="highslide" class="highslide"><img src="{poster src='{xfimagelarge-3}' width='187' height='143'}" alt='{title}' title='{title}' /></a>[/xfimage-3]

Проверено на 11.0-11.3
 
Последнее редактирование:
поставил на локалке отлично все работает.сейчас на хост поставлю
 
Что-то у меня не заработало. В дополнительном поле загружаются фото. А вот в полной новости не выводятся
 
Автор темы
Что-то у меня не заработало. В дополнительном поле загружаются фото. А вот в полной новости не выводятся
версия ДЛЕ какая? Как картинки загружаются в доп поле?
 
Версия 11.2. Создал дополнительное поле "Тип поляЗагружаемая галерея изображений" . Уже при добавлении загружаю в ручную 3 картинки они загружаются. Вставил предложенный код в полную новость но фото ни одного нет
 
не могу найти вот это $category_id = $row['category']; $tpl->compile( 'content' ); на 12.1...
 
byroot да нашел... все вывелось только почему то минипостер суётся и создает тоже копии
может из за того что выше выводится изображение на постер через poster доп поле?
 
Автор темы
Defoz если минипостеру не указывать что сжимать и выводить - он не должен работать (возможно в последней версии что-то изменилось - не проверял!).
 
byroot я думаю тут конфликт какой то... так как делал все по инструкции с данной темы и получается.
Так выводится минипостером картинки которые стоят -
HTML:
<img src="{poster src='{include file="engine/mods/get_src.php?f=[xfvalue_poster]"}' width='220' height='310' q='70' zoom='no' jpg='yes'}" alt="" title="" />
А так выводятся скрины по твоей инструкции
HTML:
[xfimage-1]<a href="{xfimagelarge-1}" rel="highslide" class="highslide"><img src="{poster src='{xfimagelarge-1}' width='220' height='132'}" alt='' title=''  /></a>[/xfimage-1]
 
Иногда приходилось делать подобное, чтобы оптимизировать загрузку и кастомизировать вывод кадров на фильмах, которые загружены в дополнительное поле.

Итак. для создания тегов аналогичных {image- {fullimage-, но только для доп поля, делаем следующее.

1. В файле show.full.php поред
PHP:
        $category_id = $row['category'];
        $tpl->compile( 'content' );
добавить
PHP:
        if (stripos ( $tpl->copy_template, "{xfimage-" ) !== false || stripos ( $tpl->copy_template, "{xfimageLarge-" ) !== false ) {
            $xfieldsdata = xfieldsdataload( $row['xfields'] );
            $images = array();
            preg_match_all('/(img|src)=("|\')[^"\'>]+/i', $xfieldsdata['screens'], $media);
            $data=preg_replace('/(img|src)("|\'|="|=\')(.*)/i',"$3",$media[0]);
 
            foreach($data as $url) {
                $info = pathinfo($url);
                if (isset($info['extension'])) {
                    if ($info['filename'] == "spoiler-plus" OR $info['filename'] == "spoiler-minus" ) continue;
                    $info['extension'] = strtolower($info['extension']);
                    if (($info['extension'] == 'jpg') || ($info['extension'] == 'jpeg') || ($info['extension'] == 'gif') || ($info['extension'] == 'png')) array_push($images, $url);
                }
            }
 
            if ( count($images) ) {
                $i=0;
                foreach($images as $url) {
                    $i++;
                    $tpl->copy_template = str_replace( '{xfimage-'.$i.'}', $url, $tpl->copy_template );
                    $tpl->copy_template = str_replace( '[xfimage-'.$i.']', "", $tpl->copy_template );
                    $tpl->copy_template = str_replace( '[/xfimage-'.$i.']', "", $tpl->copy_template );
                    $tpl->copy_template = str_replace( '{xfimagelarge-'.$i.'}', str_replace('thumbs/','',$url), $tpl->copy_template ); 
                    $tpl->copy_template = str_replace( '[xfimagelarge-'.$i.']', "", $tpl->copy_template );
                    $tpl->copy_template = str_replace( '[/xfimagelarge-'.$i.']', "", $tpl->copy_template );
                }
 
            }
 
            $tpl->copy_template = preg_replace( "#\[xfimage-(.+?)\](.+?)\[/xfimage-(.+?)\]#is", "", $tpl->copy_template );
            $tpl->copy_template = preg_replace( "#\\{xfimage-(.+?)\\}#i", "{THEME}/dleimages/no_image.jpg", $tpl->copy_template );
            $tpl->copy_template = preg_replace( "#\[xfimagelarge-(.+?)\](.+?)\[/xfimagelarge-(.+?)\]#is", "", $tpl->copy_template );
            $tpl->copy_template = preg_replace( "#\\{xfimagelarge-(.+?)\\}#i", "{THEME}/dleimages/no_image.jpg", $tpl->copy_template );
 
        }
где screens меняет на название своего доп поля, где у нас загружены картинки.
2. В шаблоне fullstory.tpl прописываем код аналогичный этому:
HTML:
[xfimage-1]<a href="{xfimagelarge-1}" rel="highslide" class="highslide"><img src="{poster src='{xfimagelarge-1}' width='187' height='143'}" alt='{title}' title='{title}'  /></a>[/xfimage-1][xfimage-2]<a href="{xfimagelarge-2}" rel="highslide" class="highslide"><img src="{poster src='{xfimagelarge-2}' width='187' height='143'}" alt='{title}' title='{title}'  /></a>[/xfimage-2][xfimage-3]<a href="{xfimagelarge-3}" rel="highslide" class="highslide"><img src="{poster src='{xfimagelarge-3}' width='187' height='143'}" alt='{title}' title='{title}' /></a>[/xfimage-3]

Проверено на 11.0-11.3


Вот что выходит( тут
dle 14.1
 
Автор темы
и ещё: {poster... - это минипостер_в_2. Вместо него нужно прописывать ссылку на картинку без него, т.е.
Код:
{poster src='{xfimagelarge-1}' width='187' height='143'}
заменить на
Код:
{xfimagelarge-1}
 
и ещё: {poster... - это минипостер_в_2. Вместо него нужно прописывать ссылку на картинку без него, т.е.
Код:
{poster src='{xfimagelarge-1}' width='187' height='143'}
заменить на
Код:
{xfimagelarge-1}

Код:
    [xfimage-1]<a href="{xfimagelarge-1}" rel="highslide" class="highslide"><img src="{xfimagelarge-1}" alt='{title}' title='{title}'  /></a>[/xfimage-1]
    [xfimage-2]<a href="{xfimagelarge-2}" rel="highslide" class="highslide"><img src="{xfimagelarge-2}" alt='{title}' title='{title}'  /></a>[/xfimage-2]
    [xfimage-3]<a href="{xfimagelarge-3}" rel="highslide" class="highslide"><img src="{xfimagelarge-3}" alt='{title}' title='{title}' /></a>[/xfimage-3]

У меня так
 

Похожие темы Последние темы Популярные темы

Назад
Сверху