Drupal: динамический вид с использованием аргументов
-
27-09-2019 - |
Вопрос
Для текущего проекта мне нужно настроить определенный вид для отображения деталей галереи. Это должно работать так:
1. User clicked a node (costum-post-type: gallery)
2. User received an overview page with linked images
3. User clicked an image
4. User received the gallery page (gallerific view)
Шаг 1-3 выполняется. Но как я могу получить Drupal создать страницу детализации, используя данные об обзоров?
Например что-то вроде этого: http://example.com/gallery-1/detail
или http://example.com/gallery-2/detail
.
/gallery-n
это страница обзора со ссыльными изображениями и detail
это деталь /gallery-n
.
Надеюсь, вы поймете, что я имею в виду?!
РЕДАКТИРОВАТЬ
На странице обзора у меня есть куча майлов, которые каждый из которых связан с страницей детализации галереи (jQuery Gallerificic).
Решение
Если я правильно понимаю вашу проблему, вы должны делать это.
1. Create view1 for page with linked images. It should be page display with http://example.com/images/%nid
where %nid is nid argument of gallery.
2. Create view2 for gallery detailed page. it should be page display with http://example.com/%nid/detail
3. Theme that views as you want.
4. For view1 for image field use override output in field settings to make it links to %nid/detail
PS Используйте отношения, где это необходимо. Если описание не ясно, заполните бесплатное, чтобы спросить.
Другие советы
Вы можете попробовать что-то вроде этого, в пользовательском модуле, который вы делаете (или, возможно, уже есть): где вы устанавливаете путь к странице, которую вы хотите в меню, и установить его в качестве обратного вызова, который вызывает функцию, а затем вы можете сделать все хочу или позвонить тому, что вы хотите.
function MODULENAME_menu() {
$items = array();
$items['gallery/%/detail'] = array(
'title' => 'Gallery Detail',
'page callback' => 'MODULENAME_gallery_detail_page',
'page arguments' => array(1),
'access callback' => TRUE,
'type' => MENU_CALLBACK
);
return $items;
}
function MODULENAME_gallery_detail_page($gallery_id) {
// Here you can render the view as a page, using the gallery
// id which you passed as a parameter to this function.
// So Change MYCUSTOMVIEW to the view you want to render
$view = views_get_view('MYCUSTOMVIEW');
print views_build_view('page', $view, array(), false, false);
}
Просто поменяйте модуль имя с именем вашего модуля. Возможно, вам может потребоваться выполнить некоторую работу при вызове View_build_View, но должно быть начало, вы можете задать несколько вопросов, если хотите, и я помогу, и я помогу.