2010-09-10 6 views
1

J'ai une vue configurée pour accepter 2 arguments. L'URL est comme ceci: playlists/video5 /% /%/rss.xml Cela fonctionne bien si je fournis l'URL avec 2 arguments comme playlists/video5/front/coach/rss.xml. J'ai 2 arguments de "Taxonomie: terme"drupal plusieurs arguments de vue avec la validation de code PHP pour les arguments vides

Mais j'ai besoin qu'il fonctionne même si 1 ou aucun argument n'est fourni. Il semble que vous pouvez le faire avec le code PHP sous: Fournir des options d'argument par défaut -> Type d'argument par défaut: -> Code PHP.

J'utilise ceci pour la première:

$arg[0] == 'all'; 
return 'all'; 

J'utilise ceci pour la seconde:

$arg[1] == 'all'; 
return 'all'; 

Il fonctionne très bien dans le aperçu si j'entre 1 , 2 ou aucun argument, mais dans le navigateur il me donne une erreur "Page introuvable" si j'utilise moins de 2 arguments dans l'url.

Il avec ces urls woks: /playlists/video5/gridiron/all/rss.xml /playlists/video5/gridiron/football/rss.xml

Il ne fonctionne pas avec ceci: listes de lecture/VIDÉO5/gridiron/rss.xml

Je veux qu'il revienne toutes les valeurs si aucun argument ne est donné, ou si un seul arg est donnée, il suffit d'utiliser l'un, etc ...

merci

Répondre

3

Je voudrais réorganiser votre URL pour ressembler à ceci: playlists/video5/rss/%/% de sorte que vos arguments viennent toujours en dernier.Ensuite, dans les paramètres de l'argument défini:

Mesures à prendre si l'argument n'est pas présent: Afficher toutes les valeurs

De cette façon, quand vous allez à playlists/video5/rss vous obtiendrez toutes les valeurs. Lorsque vous allez à /playlists/video5/rss/term1, vous obtiendrez toutes les valeurs qui ont term1 en eux. Alors l'astuce pour le deuxième argument est d'inclure le caractère générique pour le premier argument comme ceci: /playlists/video5/rss/all/term2. Je crois que cela inclura seulement les valeurs qui ont le second terme. Alternativement, si ce sont les deux termes de taxonomie, vous pouvez consolider ceux-ci en un seul argument et cochez la case qui dit: Allow multiple terms per argument. Selon la documentation juste en dessous de la case à cocher, il semble que cela devrait vous permettre quelque chose comme playlists/video5/rss/term1+term2 et afficher toutes les valeurs qui ont le premier ou le second terme.

+0

Merci.Je suppose qu'il n'y a aucun moyen d'avoir à remplir les vars vides avec "tous" pour les vides sont là? C'est vraiment ce que je veux, parce que certains de mes éditeurs ne se souviennent peut-être pas qu'ils doivent remplir 5 variables, et il se peut que je doive le changer pour plus tard. – EricP

1

Les vues ne réduisent que le %, pas les barres obliques qui l'entourent. Ainsi, pendant que vous essayez d'utiliser playlists/video5/rss.xml, Views attend playlists/video5///rss.xml.

Pour obtenir ce que vous cherchez, vous devez dupliquer l'affichage de vue que vous utilisez deux fois.

Pour la première copie, utilisez playlists/video5/%/rss.xml comme chemin. Dans vos arguments pour cet affichage, assurez-vous que le premier argument valide pour gridiron ou football.

Pour la deuxième copie, utilisez playlists/video5/rss.xml. Il n'y aura pas d'arguments pour cet affichage de vue. Si vous voulez juste que tous les enregistrements apparaissent, vous ne devriez rien faire de plus. Mais si vous voulez fournir un argument par défaut autre que tous les enregistrements, vous devez remplacer l'affichage de la vue et créer un filtre au lieu d'un argument.

Option

Une autre (moins idéal) est de traiter gridiron/football comme un argument et de valider cette façon.

+0

Merci Mark. Ce que je ne comprends pas, c'est qu'il vous demande de fournir une valeur par défaut dans "Action à prendre si l'argument n'est pas présent:" -> "Fournir argument par défaut", pour "Entrée fixe" je mets "tout". et dans l'aperçu de la vue cela fonctionne. Dans le "Live Preview" il montre cela comme le chemin: "playlist-xml-video/all/all/all/all/all" en me montrant que c'est remplir les valeurs manquantes, parce que je ne mets rien dans la zone de texte Arguments pour l'aperçu. – EricP

Questions connexes