2010-10-04 4 views
0

Pour un projet en cours, je dois configurer une vue spécifique pour afficher une page de détails de la galerie. Cela devrait fonctionner comme ceci:Drupal: affichage dynamique à l'aide d'arguments

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) 

Les étapes 1 à 3 sont terminées. Mais comment puis-je demander à Drupal de construire une page de détail en utilisant les données de la page d'aperçu? Par exemple quelque chose comme ceci: http://example.com/gallery-1/detail ou http://example.com/gallery-2/detail.

/gallery-n est la page d'aperçu avec des images liées et detail est la page détaillée de /gallery-n.

J'espère que vous comprendrez ce que je veux dire ?!

EDIT

Sur la page de présentation que j'ai un tas de thumbails dont chacun sont liés à la galerie de détail (jquery galleriffic) page.

+0

Je pourrais probablement répondre à cela, mais il serait utile d'avoir un peu plus de détails sur ce que vous voulez que cette vue détaillée fasse. Passons-nous dans l'identifiant du nœud de la galerie sur lequel ils ont cliqué, ou sur l'image sur laquelle ils ont cliqué, ou laquelle? –

+0

John Fiala merci! S'il vous plaît voir ma mise à jour dans le message original ci-dessus. Si vous avez d'autres questions, je suis heureux d'entendre. – gearsdigital

+0

OK - configurez-vous des nœuds d'image de sorte qu'une image soit mappée à un nœud ou avez-vous plusieurs images sur un nœud donné? –

Répondre

1

Si je comprends bien votre problème, vous devriez faire ceci.

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. Utilisez les relations si nécessaire. Si la description n'est pas claire, remplissez gratuitement pour demander.

+0

Etes-vous sûr que cela fonctionne? Parce que le premier argument ('http: // exemple.com /% nid/detail') d'une URL ne peut pas être un imho dynamique. – gearsdigital

+0

Bien sûr. pourquoi ça ne peut pas être? allez voir la page d'édition, sélectionnez le champ d'image à éditer, cochez Sortie ce champ comme un lien et vous verrez les champs de texte utilisés pour ce lien, sous ces champs vous pouvez trouver des espaces réservés d'arguments et d'autres champs. Utilise les. –

+0

Ça ne marche pas pour moi. Drupal me dit: "%" ne peut pas être utilisé pour le premier segment d'un chemin. – gearsdigital

1

Vous pouvez essayer quelque chose comme ceci, dans un module personnalisé que vous créez (ou peut-être déjà): où vous définissez le chemin d'accès à la page que vous voulez dans le menu et définissez comme un rappel qui appelle une fonction puis vous pouvez rendre ce que vous voulez, ou appeler ce que vous voulez.

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

Modifiez simplement MODULENAME avec le nom de votre module. Vous devrez peut-être faire un peu de travail en appelant views_build_view, mais cela devrait être un début, vous pouvez poser d'autres questions si vous le souhaitez et je vous aiderai.

+0

J'ai oublié de mentionner que j'ai changé le chemin un peu de/galerie-N/détail à la galerie/N/détail afin que je puisse extraire le nombre, espérons que ce n'est pas trop un problème, sinon marcher autour –

+0

pour votre suggestion. Je vais l'essayer :) – gearsdigital

+0

Je ne suis pas sûr si je te comprends correctement. Je dois construire mon propre module? – gearsdigital

Questions connexes