Comment démarrer les vues à la position% nid (à partir du chemin)?


11

J'ai un portfolio montrant quelques nœuds (vues3 + vues diaporama en utilisant le cycle). Tout fonctionne bien, j'ai un chemin /portfoliod'accès par défaut pour y accéder.

Cependant, j'essaie de définir un chemin pour chaque diapositive. Je voudrais utiliser /portfolio/%nidet utiliser %niddans les vues pour définir par défaut la première diapositive affichée sur cet identifiant de nœud.

Quelqu'un sait comment c'est possible? J'ai essayé avec l'interface utilisateur mais je ne pense pas que ce soit suffisant.

Réponses:


1

Dans jQuery Cycle, il existe une option appelée startingSlide. Par défaut, il est défini sur 0, comme ceci: startingSlide: 0

Si je me souviens bien, il y a un onglet / zone de texte pour les paramètres avancés où vous pouvez ajouter des options à jQuery Cycle à partir de l'interface utilisateur des vues. Je pense que vous pouvez ajouter "startingSlide: 5" par exemple ici.

Vous devrez découvrir quelle est la diapositive de départ (convertir le% nid dans quelle ligne de la vue elle est) et l'ajouter en tant qu'élément HTML. Lorsque cela est en place, nous pouvons le récupérer avec jQuery et l'ajouter en tant qu'option de cycle jQuery. Je ne sais pas quelle est la meilleure façon mais je pense que vous pourriez faire quelque chose comme:

    function MYMODULE_views_pre_render(&$view) {
      if($view->name == "MYVIEW") {
        $view->attachment_after = $startingslide;
      }
    }

Vous devrez bien sûr ajouter plus de code pour y découvrir $ startingslide. Regardez dans $ view-> result et découvrez laquelle des lignes qui est l'argument, ce sera votre $ startingslide. Utilisez dpm () dans la vue pour rechercher dans l'objet.

J'espère que cela vous aidera. Faites-moi savoir ce que vous avez fini par faire :)


0

Vous pouvez ajouter un filtre exposé à votre vue, le configurer pour afficher nids greater thanla valeur fournie et imiter son URL en conséquence.

par exemple / portfolio? nid_is_greater_than = 3

Vous pouvez ensuite masquer votre filtre avec css.


J'utiliserais un argument (filtre contextuel) plutôt qu'un filtre exposé - à moins qu'il y ait déjà des arguments en cours d'utilisation et que celui-ci en plus gâcherait la gestion de ceux-ci.
Alfred Armstrong

Je ne connais aucun moyen de comparer une valeur de champ à une valeur de filtre contextuelle.
magtak

Bon point. Doit être à moitié endormi quand j'ai posté le commentaire précédent, désolé.
Alfred Armstrong

0

Puisque votre problème concerne l'apparence, pas la structure, je suggère de ne pas le résoudre sur le serveur et non dans le chemin URL mais sur le client avec une gestion d'URL: / portfolio # slide- [nid].

Je n'ai pas lu le code javascript des vues diaporama + cycle, mais je suppose qu'il est assez facile d'adopter son comportement pour lire le fragment d'URL lors de l'initialisation du diaporama. Ou peut-être existe-t-il déjà une telle logique implémentée que vous pourriez utiliser ...


0

Que diriez-vous d'utiliser l'option «Réécrire les résultats de sortie» dans la section Champs des vues?

  1. Dans les vues, accédez au champ Configurer (image)> Réécrire les résultats
  2. Cochez la case "Afficher ce champ en tant que lien"
  3. Entrez le chemin du lien (nid /) et d'autres détails
  4. Cliquez sur Appliquer
  5. Enregistrer la vue

J'espère que cela t'aides.


0

Les vues quittent l'affichage node_view()dans ce cas et ne s'impliquent pas avec le balisage de la ligne.

La façon la plus simple de faire ce que vous voulez est d'implémenter hook_preprocess_node(), de rechercher une vue dans le contexte actuel et si le nœud est rendu dans le cadre de cet affichage, vous pouvez apporter quelques modifications.

REGARDE ÇA:

function MYMODULE_preprocess_node(&$vars) {
  if (!empty($vars['view']) && $vars['view']->view_name == 'foo') {
    $nid = $vars['node']->nid;
    $vars['extra_link'] = l('Some text', "node/$nid");
  }
}

Dans votre node.tpl.phpdossier, vous aurez accès à$extra_link.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.