2010-10-04 62 views
0

对于当前的项目,我需要设置一个特定的视图来显示画廊的详细信息页面。它应该像这样工作:Drupal:使用参数的动态视图

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/detailhttp://example.com/gallery-2/detail

/gallery-n是链接图像的概述页面和detail/gallery-n的详细信息页面。

希望你明白我的意思?!

EDIT

在概述页面我有一堆其中每个都链接到详细廊(jquery的galleriffic)页thumbails的。

+0

我或许可以回答这个问题,但对于您希望这个详细信息视图做些什么的详细信息会有所帮助。我们是否传入了他们点击的图库节点标识,或者他们点击的图像,还是哪些图像? – 2010-10-04 21:56:41

+0

John Fiala谢谢你!请在上面的原始帖子中查看我的更新。如果您还有其他问题,我很高兴听到。 – gearsdigital 2010-10-04 22:41:37

+0

好的 - 您是否设置了图像节点,使得一个图像映射到一个节点,或者您在给定节点上是否有多个图像? – 2010-10-04 23:06:27

回答

1

如果我正确理解你的问题,你应该做这件事情。

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 

P.S.在需要时使用关系。如果描述不清楚,请随时填写。

+0

你确定这有效吗?因为url的第一个参数('http:// example.com /%nid/detail')不能是动态的imho。 – gearsdigital 2010-10-05 18:48:36

+0

当然。为什么它不能?去查看编辑页面,选择要编辑的图像字段,选中输出这个字段作为链接,你会看到用于该链接的文本字段,在该字段下你可以找到参数和热场的占位符。使用它们。 – 2010-10-05 18:55:57

+0

这对我不起作用。 Drupal对我说:“%”不能用于路径的第一部分。 – gearsdigital 2010-10-05 20:00:29

1

你可以尝试这样的事情,一个自定义模块,你做(或者已经)在: ,你的路径设置为页面要在菜单并将其设置为调用一个函数,然后回调你可以渲染任何你想要的,或者打电话给你想要的任何东西

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时做一些工作,但这应该是一个开始,如果您愿意,我会提出更多的问题,我会提供帮助。

+0

我忘记提及,我将路径从/ gallery-N/detail改为gallery/N/detail,以便我可以提取数字,希望这不是太多问题,否则可以在它周围走动 – 2010-10-05 07:57:21

+0

谢谢为您的建议。我会试试:) – gearsdigital 2010-10-05 18:49:18

+0

我不确定我是否正确理解你。我必须建立自己的模块? – gearsdigital 2010-10-05 18:53:36