Аргументы в панель

Аватар пользователя SYr SYr 9 декабря 2018 в 18:21

Приветствую!

Подскажите пожалуйста как решить задачку и решаема ли она.

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

    $panel=panels_load_display(3);
    // заполняем аргументами ...
    return panels_render_display($panel);

Но застрял на 2ух вопросах:
1. Не получается впихнуть свои контексты в объект $panel что-бы их админ мог юзать в содержимом панели.
2. Как передать контексты аргументом в вьюсы на панели.
Спасибо!

0 Thanks

Лучший ответ

Комментарии

Аватар пользователя gun_dose gun_dose 9 декабря 2018 в 19:04

1. Не понимаю, зачем панель выводить ещё отдельно модулем? Там из коробки всё прекрасно с контекстами.
2. Включите модуль views content, это подмодуль ctools, он позволяет создавать вьюхи как фрагменты панели, тогда во вьюсах появляется возможность указывать, откуда брать контекстные фильтры, есть несколько способов, как их взять из панели.

Аватар пользователя SYr SYr 9 декабря 2018 в 20:13

за views content спасибо.

gun_dose wrote:

1. Не понимаю, зачем панель выводить ещё отдельно модулем? Там из коробки всё прекрасно с контекстами.

количество материал не определенно > 1*10^X. По некой маске пути проверяется логическое наличие контента - если есть - собирается материал, и выводится панелью.

Аватар пользователя Andruxa Andruxa 9 декабря 2018 в 22:16

Вам нужен page_manager - объявляете в нем роут с аргументами: path/%arg1/%arg2/%etc
Там же задаете условия, при которых отображать ту или иную панель, можно подтянуть необходимый контекст, ну и т.д.

Аватар пользователя Orion76 Orion76 9 декабря 2018 в 21:59

И всеравно, как-то все сложно..
Что-то мне подсказывает, можно проще.
Наверное с категоризацией материалов что-то не так..

Аватар пользователя SYr SYr 9 декабря 2018 в 22:20
Orion76 wrote:

Что-то мне подсказывает, можно проще.

Более чем уверен, что при данном объеме информации - согласился бы с Вами и пришел к такому же выводу ! :)

Дело в том, что материалов нет, как таковых...
Попробую отстраненным примером: есть 1 000 терминов = числа.
каждая страница = описание арифметических действий между двумя терминами (327*951, 327/951, 327+951 и 327-951), если надет изображение - то и иллюстрации и т.д.

Можно конечно нарендерить 1 000 000 нод
Но мне кажется заказчик прав - логичнее, практичнее и удобнее генерировать эти страницы с обработкой исключений.

Аватар пользователя SYr SYr 9 декабря 2018 в 22:26
Andruxa wrote:

Вам нужен page_manager - объявляете в нем роут с аргументами: path/%arg1/%arg2/%etc

Там же задаете условия, при которых отображать ту или иную панель, можно подтянуть необходимый контекст, ну и т.д.

В том и загвоздка - в пути не будут присутствовать необходимые аргументы!
по принятым аргументам собирается инфа - и по логике, уже отдается или панель, или свой интерфейс, или просто нода.

Аватар пользователя SYr SYr 9 декабря 2018 в 22:59
Andruxa wrote:

А каким образом передаются аргументы?

В пути присутствуют аргументы. Проверяю данные, Если есть исключение - отдаю ноду, Если комбинация правильная - запрашиваю нужные параметры, скармливаю их панели и отдаю ее, Если все мимо - посылаю в 404

Аватар пользователя SYr SYr 10 декабря 2018 в 2:03
Orion76 wrote:

Вам надо просто пару ctools-плагинчиков написать для панелей и прочих вьюсов.
Вот неплохой обзор: http://drupalace.ru/lesson/pishem-plagin-k-panels-s-pomoshchyu-ctools

Спасибо!
нашел обходной путь, попробую его...
Но возможно пойду Вами предложенным!