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

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


     28.06.2022    избранное, хаки, php    Общие вопросы по PHP, Хаки    184

вопрос
Добрый день! Пытаюсь "накалхозить" вывод новостей добавленных в избранное сразу в сайдбаре.

В main.php добавил следующий код
 if( $member_id['favorites'] ) {
		$tpl->set( '{favorite-id}', $member_id['favorites'] );
		$tpl->set( '{favorite-count}', count(explode("," ,$member_id['favorites'])) );
		$tpl->set( '[favorite-count]', "" );
		$tpl->set( '[/favorite-count]', "" );
		$tpl->set_block( "'\\[not-favorite-count\\](.*?)\\[/not-favorite-count\\]'si", "" );
	} else {
		$tpl->set( '{favorite-count}', 0 );
		$tpl->set_block( "'\\[favorite-count\\](.*?)\\[/favorite-count\\]'si", "" );
		$tpl->set( '[not-favorite-count]', "" );
		$tpl->set( '[/not-favorite-count]', "" );
	}


В сайдбаре вставляю:
   [not-favorite-count]
        <p>Пусто...</p>
        [/not-favorite-count]
    [favorite-count]
        {custom id="{favorite-id}" template="aside_favorites" limit="5" order="date" sort="desc" cache="yes"}
                [/favorite-count]


Но новости через кастом не отображаются, в то же время если выводить {favorite-id} просто, не в теге {custom...}, то выводится текст с айди новостей добавленных в избранное. Мб я что-то упустил, или не туда вставил код в main.php... Ткните носом, что поправить, пожалуйста.

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


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

vpainer
Юзер

vpainer - 28 июня 2022 10:34 -


Вот для примера скрин, как это выглядит.
Кастом с {favorite-id} не формируется, но вот айдишники ниже через {favorite-id} показываются.

upd. попробовал сменить {favorite-id} на favorite-id без фигурных скобок - весь этот хлам исчезает, но записей и вовсе нет.

dj-avtosh
PHP-developer

dj-avtosh - 28 июня 2022 11:15 -

Я так думаю, что двойной компиляции тега у вас просто из коробки не происходит.

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

vpainer
Юзер

vpainer - 28 июня 2022 11:19 -


А можно это как-то реализовать? Просто видел на том же appstorrent.ru в сайдбаре реализован вывод избранного. Мне почему-то показалось, что сделано похожим методом.

п.с. я подобным методом реализовал выдачу избранного в профиле пользователя, только кастомизировал favorites.php - в userinfo.tpl все генерируется без проблем, но вот в других шаблонах появляется белиберда из кривого тега...

dj-avtosh
PHP-developer

dj-avtosh - 28 июня 2022 11:33 -

вы даже не написали после каких строк вы вставляли свой код, прежде чем написать вопрос.

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

dj-avtosh
PHP-developer

dj-avtosh - 28 июня 2022 11:34 -

Вы так же можете вывести этот же favorites.php глобально, что вам мешает?

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

dj-avtosh
PHP-developer

dj-avtosh - 28 июня 2022 11:41 -

Что бы подключить favorites.php и еще заюзать свой шаблон - нужно совсем немного переделать этот плагин.

https://dle-faq.ru/modules/26110-plagin-vyvod-statistiki-v-maintpl.html

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

TeraMoune
Эксперт

TeraMoune - 28 июня 2022 12:21 -

Можно поправить функцию custom_print и в регулярке отлова параметров где условие на id сделать проверку значения, если оно равно слову favorites то подменить значение этой переменной на $member_id['favorites'].

dj-avtosh
PHP-developer

dj-avtosh - 28 июня 2022 13:42 -

В /engine/modules/functions.php (именно внутри функции custom_print)

найти:

    if( preg_match( "#id=['"](.+?)['"]#i", $param_str, $match ) ) {

        $temp_array = array();
        $where_id = array();
        $match[1] = explode (',', trim($match[1]));



заменить на:

    if( preg_match( "#id=['"](.+?)['"]#i", $param_str, $match ) ) {

        $temp_array = array();
        $where_id = array();

        '{favorite-id}' == trim($match[1]) && $match[1] = $member_id['favorites'];

        $match[1] = explode (',', trim($match[1]));


ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

vpainer
Юзер

vpainer - 28 июня 2022 14:04 -

Заработало! Огромное спасибо!

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

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

наверх