Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Хаки » Как реализовать новый тег анологичный {full-story limit="x"}?

Как реализовать новый тег анологичный {full-story limit="x"}?


     03.07.2015    Все вопросы » Хаки    2748

вопрос
Хочу довести отображение материалов на странице до ума путем расстановки текста, картинок, прикрепленных документов, видео по своим новым местам, так как сейчас у меня все это хранится в одной куче и выводится тегом на странице {full-story}.
В связи с этим хочу попросить у вас помощи с реализацией некоторых проблем с которыми я столкнулся. Для завершения того что я задумал осталось только найти выход на отображение только текста и видео.

Вот есть стандартный тег {full-story limit="x"} который выводит только текст полной новости без HTML форматирования, при этом сам текст публикации сокращается до указанного X количества символов. Но вот мне нужно все тоже самое только с учетом HTML форматирования. Это что касается текста.

Для видео хочется реализовать тег по работе похожий на {fullimage-x} - Выводит URL картинки, находящийся в тексте полной новости, где "x" это номер картинки в новости. [fullimage-x] текст [/fullimage-x] - Выводят указанный в них текст, только если картинка с номером "x" присутствует в полной новости.

Раьота будет заключаться в том, что если видео есть у этой новости то будет активная вкладка на странице с видезаписью, а если нет [fullvideo-x] текст [/fullvideo-x] будет скрывать отображение этой вкладки. Вот собственно вроде и все. На сколько возможно такое реализовать. Может кто помочь?




Ответа пока нет


17 комментариев

LazyDev
PHP-developer

LazyDev - 3 июля 2015 12:23 -

Видео как вставляется в новость?

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

bembelby
Юзер

bembelby - 3 июля 2015 12:27 -

Gameer, через обычный тег video

zikwal
Юзер

zikwal - 3 июля 2015 16:15 -

А доп. поля уже не справляются?

bembelby
Юзер

bembelby - 3 июля 2015 17:08 -

zikwal, прекрасно справлялись бы если бы я начал ими пользоваться в далеком 2012 году. На сайте несколько тысяч материалов и рассовывать сейчас что то по дополнительным полям не вариант. Ведь так куда проще.

LazyDev
PHP-developer

LazyDev - 3 июля 2015 17:24 -

bembelby, вам только в полной новости ?

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

bembelby
Юзер

bembelby - 3 июля 2015 17:25 -

Gameer, да

LazyDev
PHP-developer

LazyDev - 3 июля 2015 17:41 -

bembelby,
Открыть /engine/modules/show.full.php найти :
if (stripos ( $tpl->copy_template, "{fullimage-" ) !== false) {
Выше вставить :
if (stripos ( $tpl->copy_template, "{fullvideo-" ) !== false) {
    $video = array();
    preg_match_all('/(video|src)=("|\')[^"\'>]+/i', $row['full_story'], $media);
    $data=preg_replace('/(video|src)("|\'|="|=\')(.*)/i',"$3",$media[0]);
    foreach($data as $url) {
        array_push($video, $url);
    }
    if ( count($video) ) {
        $i=0;
        foreach($video as $url) {
            $i++;
            $tpl->copy_template = str_replace( '{fullvideo-'.$i.'}', $url, $tpl->copy_template );
            $tpl->copy_template = str_replace( '[fullvideo-'.$i.']', "", $tpl->copy_template );
            $tpl->copy_template = str_replace( '[/fullvideo-'.$i.']', "", $tpl->copy_template );
        }
    }
    $tpl->copy_template = preg_replace( "#\[fullvideo-(.+?)\](.+?)\[/fullvideo-(.+?)\]#is", "", $tpl->copy_template );
    $tpl->copy_template = preg_replace( "#\\{fullvideo-(.+?)\\}#i", "{THEME}/dleimages/no_image.jpg", $tpl->copy_template );
}

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

bembelby
Юзер

bembelby - 3 июля 2015 17:44 -

Gameer, спасибо. пойду тестировать
. А как быть с текстом? Там реализация проще чем с видео или нет?

LazyDev
PHP-developer

LazyDev - 3 июля 2015 17:49 -

bembelby, какие html теги нужны для текста ?

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

bembelby
Юзер

bembelby - 3 июля 2015 17:53 -

Gameer, пускай будет такой {full-story-text}
Только текст с учетом существующего html форматирования

LazyDev
PHP-developer

LazyDev - 3 июля 2015 17:58 -

bembelby, ниже я написал что сделать

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

LazyDev
PHP-developer

LazyDev - 3 июля 2015 17:52 -

Для текста найти в том же файле :
$row['full_story'] = strip_tags( $row['full_story'], "<br>" );
Заменить на :
$row['full_story'] = strip_tags( $row['full_story'], "<br><b><i><center><a><h1><h2><h3><h4><h5><h6><ol><li><ul><q><u>" );

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

bembelby
Юзер

bembelby - 3 июля 2015 18:02 -

Цитата: Gameer
Для текста найти в том же файле : $row['full_story'] = strip_tags( $row['full_story'], "<br>" ); Заменить на : $row['full_story'] = strip_tags( $row['full_story'], "<br><b><i><center><a><h1><h2><h3><h4><h5><h6><ol><li><ul><q><u>" );

прости но я что то не понял как работает эта правка и что она вообще делает :(

LazyDev
PHP-developer

LazyDev - 3 июля 2015 18:04 -

bembelby, strip_tags — Удаляет HTML и PHP-теги из строки
string strip_tags ( string $str [, string $allowable_tags ] )
str - Входная строка. allowable_tags - Второй необязательный параметр может быть использован для указания тегов, которые не нужно удалять.

http://php.net/manual/ru/function.strip-tags.php

Правка разрешит все html теги которые указанные в кавычках.

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

bembelby
Юзер

bembelby - 3 июля 2015 18:15 -

Gameer, я совсем запутался. Что и как. Мне просто нужен новый обсолюно тег который в нужном мне месте fullstory.tpl будет выводить только текст с поддержкой html редактирования.
Или просто если есть возможность то внести правки в этот стандартный {full-story limit="x"} который по дефолту выводит обычный текст, и все редактирование типа жирного шрифта, ссылок и тд игнорирует. Тоесть нужно чтобы все html вставки работали

LazyDev
PHP-developer

LazyDev - 3 июля 2015 18:19 -

bembelby, а я что написал ? Откройте /engine/modules/show.full.php файл, найдите :
$row['full_story'] = strip_tags( $row['full_story'], "<br>" );
И замените на :
$row['full_story'] = strip_tags( $row['full_story'], "<br><b><i><center><a><h1><h2><h3><h4><h5><h6><ol><li><ul><q><u>" );

Теперь тег
{full-story limit="x"}
будет с html форматированием (без картинок и видео, только те что относятся к самому тексту)

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

bembelby
Юзер

bembelby - 3 июля 2015 18:22 -

Gameer, ок....спасибо большое. Прошу прощения за мое недопонимание :)

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

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

наверх