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

Как задать шаблон вывода для конкретного перекрестного доп.поля?


     02.11.2022    Все вопросы » Общие вопросы по PHP    415

вопрос
Добрый день.

Есть такой хак.

В engine/modules/show.short.php найти код
else $tpl->load_template( 'shortstory.tpl' );

Заменить его на
elseif ($do == 'xfsearch')$tpl->load_template( 'xfsearch.tpl' );
   else $tpl->load_template( 'shortstory.tpl' );

Для странниц перекрестных ссылок шаблон xfsearch.tpl

Если использовать данный хак, то шаблон поменяется везде где есть гиперссылка.

Что поменять в этом коде чтобы при переходе по гиперссылке использовался конкретный шаблон для конкретного доп поля year ??? А для других полей с перекрестными ссылками использовался стандартный шаблон.



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


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

lutskboy
Эксперт

lutskboy - 2 ноября 2022 19:15 -

$do == 'xfsearch' AND $xfname=='year'

Kentavr
Юзер

Kentavr - 2 ноября 2022 20:05 -

Спасибо, но только не понял куда это и после чего

ravchik
Юзер

ravchik - 2 ноября 2022 22:41 -

elseif ($do == 'xfsearch' AND $xfname=='year') $tpl->load_template( 'year.tpl' );
else $tpl->load_template( 'shortstory.tpl' );

Kentavr
Юзер

Kentavr - 2 ноября 2022 23:29 -

Сделал, но все равно выводит стандартный шаблон. Может быть из за того что у меня в ссылке нет xfsearch ?

Я хак ставил который убирает xfsearch

Ссылка так выглядит у меня http://site1.ru/year/2018/

в htaccess так прописано

RewriteRule ^(year)/([^/]*)(/?)+$ index.php?do=xfsearch&xn=$1&xf=$2 [L]
RewriteRule ^(year)/([^/]*)/page/([0-9]+)(/?)+$ index.php?do=xfsearch&xn=$1&xf=$2&cstart=$3 [L]

Хотя странно хак который я выше написал у меня работает.

TeraMoune
Эксперт

TeraMoune - 3 ноября 2022 00:19 -

Оно есть в index.php?do=xfsearch&xn=
Именно так сервер воспринимает ссылку, а не то, что вы пишите в браузере.

Тестовый репозиторий установки плагинов: teramoune

Kentavr
Юзер

Kentavr - 3 ноября 2022 00:58 -

Почему тогда выводит стандартный шаблон если использую такой код??

elseif ($do == 'xfsearch' AND $xfname=='year') $tpl->load_template( 'year.tpl' );
else $tpl->load_template( 'shortstory.tpl' );

TeraMoune
Эксперт

TeraMoune - 3 ноября 2022 02:24 -

А вот не сразу обратил внимания на &xn=.

Хак действительно причём.

Он не присваивает переменной $xfname значение пуля от сюда переменная пустая, и в вашем случае вместо $xfname нужно использовать $_GET['xn']. Однако xn не родной и раз $xfname пустая то это риск получить еще проблем в будущем связанным с этой переменной.

Возможно даже, что они уже есть и поиск новостей происходит по такой выборке.
WHERE xfields LIKE '%2021%'

А должно быть вот так,
WHERE xf.tagname = 'year' AND xf.tagvalue='2021'

Тестовый репозиторий установки плагинов: teramoune

Kentavr
Юзер

Kentavr - 3 ноября 2022 02:34 -

Ничего не понял. Если не затруднит, просто напишите готовое решение.

TeraMoune
Эксперт

TeraMoune - 3 ноября 2022 04:15 -

В решении представленном, lutskboy и добавленным участком кода другим товарищем, ravchik. Нужно поменять $xfname на $_GET['xn'].

И должно по идее заработать.

Тестовый репозиторий установки плагинов: teramoune

Kentavr
Юзер

Kentavr - 3 ноября 2022 17:44 -


elseif ($do == 'xfsearch' AND $_GET['xn']=='actor') $tpl->load_template( 'actor.tpl' );
else $tpl->load_template( 'shortstory.tpl' );


Это решение рабочее, спасибо за подсказку.

А если нужно для двух доп. полей сделать свой шаблон? Просто продублировать код ниже изменив year на другое доп. поле? Или как о по другому?

TeraMoune
Эксперт

TeraMoune - 3 ноября 2022 18:59 -

Вместо $_GET['xn']=='actor' , пишем in_array( $_GET['xn'], array( 'actor', 'year' ) )
Каждое значение через запятую в скобочках как написано.

Тестовый репозиторий установки плагинов: teramoune

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

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

наверх