Fenom - редирект на первый дочерний ресурс?
Друзья, подскажите пожалуйста аналог решения сниппета FirstChildRedirect на FENOM?
Нужно сделать редирект на первый дочерний ресурс при заходе на родителя с помощью Fenom, как это сделать?
Нужно сделать редирект на первый дочерний ресурс при заходе на родителя с помощью Fenom, как это сделать?
Комментарии: 30
Fenom это шаблонизатор, FirstChildRedirect сниппет. Что есть аналог то?)
{'FirstChildRedirect ' | snippet}
:))) та нет, так я могу сделать, не совсем деревянный, я про то, может какие методы по умолчанию у FENOM есть свои для этого без сторонних сниппетов.
Может как то в foreach получать id и как то на первую итерацию делать make url
Может как то в foreach получать id и как то на первую итерацию делать make url
Делать это лучше в плагине.
Не подойдет, слишком громоздко решение с плагином будет, это нужно всего для пару папок — родителей.
Как раз в плагине будет проще. Ибо запрос заворачивается на входе. А феном уж тут совсем не пришей рукав. Логика пишется на php. Причем здесь феном???
Просто в плагине написать ограничение только для этой пары папок. А если уже есть готовый каталог, то проще и быстрее сделать переадресацию на web сервере.
Просто в плагине написать ограничение только для этой пары папок. А если уже есть готовый каталог, то проще и быстрее сделать переадресацию на web сервере.
та мне нужно вставить на страницу в поле контент сниппет, что бы с этой страницы был редирект на первого ребенка, вот и все. Без плагинов. И решение на FENOM, FirstChildRedirect не вариант.
плагин используй, не выноси мозг, вот реально. Такие вещи делаются ПЛАГИНАМИ
Откуда тогда есть FirstChildRedirect? Если такие вещи делаются плагином.
ну так используй этот сниппет, в чем проблема то?
Проблема в том, что я не хочу устанавливать сниппет, а повторить его работу на FENOM. Вопрос поэтому такой и задал сюда. Мне не нужен плагин, и не нужен FirstChildRedirect. Мне нужно сниппет на fenom, который делает тоже самое что и FirstChildRedirect. Есть мысли какие какая логика должна быть?
используй готовое решение, либо используй плагин. На феном не напишешь. Или даже после этого ты будешь требовать решения на феном?
например, есть {$_modx->getChildIds(54, 1) | print} выводит массивом все дочерние доки id родителя с id 54, уровень вложенности 1.
Я так понимаю дальше пройду foreach и для первого ключа сделаю make redirect, так?
Вы Fenom знаете или нет?
Я так понимаю дальше пройду foreach и для первого ключа сделаю make redirect, так?
Вы Fenom знаете или нет?
А ты языки программирования знаешь? Для того чтобы получить доступ к первому элементу массива разве нужно обязательно использовать цикл?
нет не знаю, так хорошо как вы, поэтому и спрашиваю тут, есди вы еще не поняли.
капец. Ты сначала отрендеришь всю страницу, а только потом сделаешь ей редирект. Серьезно? АНе проще в плагине, ДО рендера страницы отредиректить куда надо?
какое ваше решение?
Ладно ладно @Михаил человек задал вопрос, попинали и хватит) Тем более 3 варианта решения подсказали, даже тот который его устраивает, а то в холиваре жертв будет много
но FirstChildRedirect так же и работает, сначала рендерит страницу, потом делает редирект
Я выше написал, я тоже могу написать компонент getGryobaniyPerviyChild и в нем отрендерить js скрипт который через 5 нахождения на странице будет редиректить на мой сайт, но это не значит, что компонент хороший
мне достаточно на уровне сниппета это решить, если уж для вас FirstChildRedirect не хороший, мне достаточно этого.
Сниппеты не делятся на MODX и на феном, у феном есть модификаторы, если речь об этом, то погугли модификаторы феном, прямо на этом форуме найдешь. А на счет сниппета FirstChildRedirect, то это компонент который создан человеком, а человек свойственен ошибаться, я не критикую Марка (автора компонента), но в реализации переадресации на этапе парсинга контента где и отрабатывает сниппета слишком поздно — это действительно нужно по-хорошему делать через плагин на какое нибудь раннее событие.
Вторая часть ответа: если хочется сделать силами феном, то нужно обратить внимание на класс micromodx где есть методы которые вызывают родные методы самого MODX. В твоём случае обрати свой взор на методы getChildIds и sendRedirect
Вторая часть ответа: если хочется сделать силами феном, то нужно обратить внимание на класс micromodx где есть методы которые вызывают родные методы самого MODX. В твоём случае обрати свой взор на методы getChildIds и sendRedirect
уже что то, спасибо, но уже сам нашел getChildIds, делаю дальше.
Подумал и пришел к выводу, что и getChildIds не нужен, делай как предлагает @Евгений Webinmd
да, разбираюсь с этим, но непонимаю почему не работает parent если указать жестко номер id 'parent' => '54'
Видимо, это какой-то квест. Другого объяснения нет. Человек задал вопрос, ему несколько человек ответили, а он — вы неправильно отвечаете. Мне нужен другой ответ.
Все выдохнули. Пусть носит круглое и катает квадратное. Это его решение.
Все выдохнули. Пусть носит круглое и катает квадратное. Это его решение.
нет никакого квеста, есть решение, но оно не работает, обьясните, помогите лучше, а не ерничайте
есть структура
-главная(1)
-категория(2)
-категория(3)
-категория(54)
— страница
— страница
— страница
На странице с id 54 пишу
Что не так, где ошибся?
есть структура
-главная(1)
-категория(2)
-категория(3)
-категория(54)
— страница
— страница
— страница
На странице с id 54 пишу
{set $resource = $_modx->getResources(
['published' => 1, 'deleted' => 0],
['sortby' => 'id', 'sortdir' => 'ASC', 'limit' => 1, 'parent' => 54]
)}
{foreach $resource as $child}
<div>
{$child.id}
</div>
{/foreach}
выводит в результате 1Что не так, где ошибся?
{set $resource = $_modx->getResources(
['published' => 1, 'deleted' => 0],
['sortby' => 'id', 'sortdir' => 'ASC', 'limit' => 1, 'parent' => $_modx->resource.id]
)}
{if $resource}
{$_modx->sendRedirect( $_modx->makeUrl($resource) )}
{/if}
Все примеры есть в документации.Играйся с 'sortdir' => 'ASC' мож надо заменить на DESC
Спасибо, если указываю 'parent' => '54' не работает почему то
parents вместо parent
и в итоге
и в итоге
{$resource.0.id}
Спасибо, но нет, что то не то
-главная(1)
-категория(2)
-категория(3)
-категория(54)
— страница(55)
— страница(56)
— страница(57)
— страница(58)
На странице с id 54 пишу
-главная(1)
-категория(2)
-категория(3)
-категория(54)
— страница(55)
— страница(56)
— страница(57)
— страница(58)
На странице с id 54 пишу
{set $resource = $_modx->getResources(
['published' => 1, 'deleted' => 0],
['sortby' => 'id', 'sortdir' => 'ASC', 'limit' => 1, 'parents' => 54]
)}
{if $resource}
{$_modx->sendRedirect( $_modx->makeUrl($resource.0.id) )}
{/if}
редирект делает но почему то на страница(57), вместо первой страница(55)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.