Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Ламерские вопросы Как тегу test установить limit?

Как тегу test установить limit?


     20.07.2014    Ламерские вопросы    1170

вопрос
Добрый день.
Пытаюсь реализовать на сайте вывод тега (test) с возможной установкой лимита.
В таблице dle_post есть строка test, в ней находится текст который хочу выводить на сайте, в короткой новости.
Пробовал сделать так, в show.short.php добавить:
$tpl->set( '{test}', $row['test'] );
            
            if ( preg_match( "#\\{test limit=['\"](.+?)['\"]\\}#i", $tpl->copy_template, $matches ) ) {
                $count= intval($matches[1]);
    
                $row['test'] = str_replace( "</p><p>", " ", $row['test'] );
                $row['test'] = strip_tags( $row['test'], "<br>" );
                $row['test'] = trim(str_replace( "<br>", " ", str_replace( "<br />", " ", str_replace( "\n", " ", str_replace( "\r", "", $row['test'] ) ) ) ));
    
                if( $count AND dle_strlen( $row['test'], $config['charset'] ) > $count ) {
                        
                    $row['test'] = dle_substr( $row['test'], 0, $count, $config['charset'] );
                        
                    if( ($temp_dmax = dle_strrpos( $row['test'], ' ', $config['charset'] )) ) $row['test'] = dle_substr( $row['test'], 0, $temp_dmax, $config['charset'] );
                    
                }
    
                $tpl->set( $matches[0], $row['test'] );
    
            }


Не сработало. Подскажите, в каких файлах (файле) нужно вносить правки? Или может есть у кого готовое решение?

Ответил: oo22maxi


Спасибо за подсказку FastFud.

В show.short.php найти:

$tpl->set( '{full-story}', $row['full_story'] );


Ниже добавить:

$db->query ( "SELECT test FROM " . PREFIX . "_post WHERE news_id='{$row['id']}'" );
$tpl->set( '{test}', $row['test'] );
            
            if ( preg_match( "#\\{test limit=['\"](.+?)['\"]\\}#i", $tpl->copy_template, $matches ) ) {
                $count= intval($matches[1]);
    
                $row['test'] = str_replace( "</p><p>", " ", $row['test'] );
                $row['test'] = strip_tags( $row['test'], "<br>" );
                $row['test'] = trim(str_replace( "<br>", " ", str_replace( "<br />", " ", str_replace( "\n", " ", str_replace( "\r", "", $row['test'] ) ) ) ));
    
                if( $count AND dle_strlen( $row['test'], $config['charset'] ) > $count ) {
                        
                    $row['test'] = dle_substr( $row['test'], 0, $count, $config['charset'] );
                        
                    if( ($temp_dmax = dle_strrpos( $row['test'], ' ', $config['charset'] )) ) $row['test'] = dle_substr( $row['test'], 0, $temp_dmax, $config['charset'] );
                    
                }
    
                $tpl->set( $matches[0], $row['test'] );
    
            }


Ну и как сказал vitnet:
В engine.php добавить в запросы - p.test

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

FastFud
50

1599 | 588

FastFud - 20 июля 2014 14:38 - Юзер

А вы запрос наверное забыли написать ))

oo22maxi
1

38 | 16

oo22maxi - 20 июля 2014 15:13 - Юзер

Ну да, запрос к бд я не писал не какой =) Сейчас просмотрел файл show.short.php, там есть запрос на обновление favorites ну и все вроде. Его делать надо в файле show.short.php хоть? Можете пример привести?

FastFud
50

1599 | 588

FastFud - 20 июля 2014 15:23 - Юзер

Могу ошибаться )
$db->query ( "SELECT test FROM " . PREFIX . "_post WHERE news_id='{$row['id']}'" );
ставить перед вашим кодом.

vitnet
218

2172 | 930

vitnet - 20 июля 2014 17:05 - Эксперт

engine.php добавьте в запросы p.test,

D0Gmatist
225

794 | 281

D0Gmatist - 20 июля 2014 20:37 - Местный

vitnet, не только p.test но и просто test (вроде в 3-х местах)

Каждый программист знает - в правильном софте все должно быть прекрасно:
и пользовательский интерфейс, и программные решения, и гениальные ошибки!
Болтовня ничего не стоит. Покажите мне код.

oo22maxi
1

38 | 16

oo22maxi - 20 июля 2014 20:58 - Юзер

Да, и просто test я тоже проставлял, забыл в ответе указать...

lutskboy
3

550 | 103

lutskboy - 20 июля 2014 17:54 - Юзер

В таблице dle_post есть строка test
только не строка а поле ну или в худшем случае столбец

oo22maxi
1

38 | 16

oo22maxi - 20 июля 2014 19:37 - Юзер

FastFud, принцип понял, спасибо, думаю сейчас разберусь.

vitnet, да, это я уже знаю, спасибо =)

lutskboy, я забыл как его называют правильно, вот и назвал строкой )

oo22maxi
1

38 | 16

oo22maxi - 20 июля 2014 20:35 - Юзер

Все работает, спасибо всем. Ответ добавил...

vitnet
218

2172 | 930

vitnet - 20 июля 2014 21:44 - Эксперт

Вот это здесь лишнее, на каждый пост по лишнему запросу. 10+
$db->query ( "SELECT test FROM " . PREFIX . "_post WHERE news_id='{$row['id']}'" );

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

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