Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как ограничить описание категории в шаблоне меню категории?

Как ограничить описание категории в шаблоне меню категории?


     25.03.2024    Все вопросы » Общие вопросы по PHP    108

вопрос
Всем доброго времени суток, подскажите пожалуйста, в шаблоне categorymenu.tpl есть тег {description} который выводит описание категории, как это описание можно сократить на определенное количество символов, то есть что то вроде тега {short-story limit="x"} сделать только под описание категории.

пробовал в файл/engine/classes/templates.class.php после строки (1036)
$template = str_replace( "{description}", $row['fulldescr'], $template );

добавить
if ( preg_match( "#\\{description limit=['\"](.+?)['\"]\\}#i", $tpl->copy_template, $matches ) ) {
			$tpl->set( $matches[0], clear_content($row['fulldescr'], $matches[1]) );
		}

однако это не работает, я правда не силен в PHP, чисто интуитивно это пробовал, подскажите в чем проблема, как это правильно сделать, заранее спасибо

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


3 комментария

TeraMoune
Эксперт

TeraMoune - 25 марта 2024 20:34 -

я правда не силен в PHP, чисто интуитивно это пробовал

Ну пока будите чисто интуитивно то никогда ничего не изменится этом плане.

Код нужно читать - код нужно понимать (Ровно как данный текст который вы читаете и осознаёте)
Вы осмотритесь в радиусе кода функции где вы видите в ней $tpl->copy_template ? $tpl->copy_template это условная переменная в которой содержится какой-то текст или содержимое в котором нужно найти значение описанное в регулярном выражении первого параметра. Но в теле функции вам в глаза бросаться в первую очередь должна переменная $template.
Вы и должны были обратить на это внимание, что
$template = str_replace( "{description}", $row['fulldescr'], $template );


А значит в $tpl->copy_template ничего там нету, и вместо этой переменной нужно использовать ту, из которой собственно и происходит код в котором меняются теги. И это $template.

VGreen
Юзер

VGreen - 25 марта 2024 20:55 -

TeraMoune, вместо $tpl->copy_template поставил $template, появилась ошибка

TeraMoune
Эксперт

TeraMoune - 26 марта 2024 16:41 -

В теле функции в принципе не используется ничего начинающегося с $tpl, так что в ней ничего не должно быть что относится к функциям шаблонизатора.

В функции применяются простые str_replace для замены текста. Вот примерно так и надо делать как это сделано в самой функции.

То есть, вот так:

$template = str_replace( $matches[0], clear_content($row['fulldescr'], $matches[1]), $template );

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

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

наверх