Drupal: динамический просмотр с использованием аргументов - PullRequest
0 голосов
/ 04 октября 2010

Для текущего проекта мне нужно настроить конкретный вид для отображения страницы сведений о галерее. Это должно работать так:

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.

Надеюсь, вы поймете, что я имею в виду?!

EDIT

На странице обзора у меня есть несколько кратких сообщений, каждое из которых связано со страницей галереи сведений (jquery galleriffic).

Ответы [ 2 ]

1 голос
/ 05 октября 2010

Если я правильно понимаю вашу проблему, вы должны сделать это.

 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 Используйте отношения, где это необходимо.Если описание не понятно, не стесняйтесь спрашивать.

1 голос
/ 05 октября 2010

Вы можете попробовать что-то вроде этого в пользовательском модуле, который вы делаете (или, возможно, уже есть): где вы устанавливаете путь к странице, которую вы хотите, в меню, и задаете ее как обратный вызов, который вызывает функцию, а затем вы можете отрисовывать все, что хотите, или вызывать как хотите.

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);
}

Просто измените MODULENAME на имя вашего модуля. Возможно, вам придется поработать при вызове views_build_view, но это должно быть начало, вы можете задать еще несколько вопросов, если хотите, и я помогу.

...