web-dev-qa-db-fra.com

Afficher le nœud en superposition en utilisant drupal 7 module de superposition

Est-il possible d'ouvrir une superposition avec un contenu de nœud en utilisant drupal? Si je pouvais réutiliser au moins le code javascript, je serais déjà heureux =)

6
Luiz Guilherme

Le moyen le plus rapide consiste à implémenter hook_admin_paths_alter () dans un module pour redéfinir quels éléments de menu définis dans hook_menu() par d'autres modules sont des chemins administratifs. La valeur renvoyée par les implémentations de hook_admin_paths () , qui sont ensuite modifiées à partir des implémentations de hook_admin_paths_alter(), sont utilisées à partir du module Overlay pour décider quelles pages seront rendues en superposition. Comme d'autres modules pourraient utiliser les mêmes informations pour rendre les pages en utilisant un thème différent, le module devrait nécessiter le module Overlay comme dépendance, pour être sûr que les pages supplémentaires sont effectivement rendues en superposition.

function mymodule_admin_paths_alter(&$paths) {
  $paths['node/*/view'] = TRUE;
}

Si vous remarquez que cette implémentation ne fonctionne pas lorsque les utilisateurs visualisent, par exemple, example.com/node/1, mais uniquement lorsqu'ils visualisent example.com/node/1/view, alors j'implémenterai le hook en utilisant le code suivant. La première implémentation que j'ai fournie devrait fonctionner, car l'onglet "Affichage" est celui par défaut, et lorsque les utilisateurs consultent example.com/node/1, Drupal montre vraiment example.com/node/1/vue.

function mymodule_admin_paths_alter(&$paths) {
  $paths['node/*'] = TRUE;
  $paths['node/*/view'] = TRUE;
}

Comme la première ligne pouvait attraper toutes les pages de noeud (je n'ai pas vérifié cela), je vérifierais s'il y a d'autres pages sous ce chemin qui ne devraient pas être rendues; dans ce cas, l'implémentation peut être modifiée comme suit ("node/*/backlinks" n'est qu'un exemple):

function mymodule_admin_paths_alter(&$paths) {
  $paths['node/*'] = TRUE;
  $paths['node/*/view'] = TRUE;
  $paths['node/*/backlinks'] = FALSE;
}
  • Normalement, les modules implémentent hook_admin_paths() pour signaler lesquels de leurs éléments de menu sont des pages administratives; cela signifie que si une page n'est pas une page administrative, une entrée pour cette page n'est pas ajoutée au tableau renvoyé.
  • hook_admin_paths() est implémenté pour les éléments de menu définis dans votre propre module; pour redéfinir lorsque les éléments de menu définis à partir d'autres modules sont des pages administratives, vous devez implémenter hook_admin_paths_alter().
  • Aux pages définies comme pages administratives n'est pas automatiquement appliqué un contrôle d'accès; cela signifie que le module définissant les éléments de menu qui sont signalés comme étant des pages administratives doit toujours utiliser "rappel d'accès" et "arguments d'accès" pour définir quels utilisateurs peuvent accéder aux éléments de menu associés aux pages administratives. Les pages définies comme pages administratives ne sont rendues différemment que s'il existe un module qui le fait.
  • Le module de nœud définit les pages d'édition de nœud comme page administrative uniquement lorsqu'une case à cocher dans une page administrative est sélectionnée; ces pages sont déjà gérées.
6
kiamlaluno

Vous pouvez également utiliser le module Overlay Paths . Il s'agit d'un module simple qui permet aux administrateurs d'utiliser la superposition intégrée pour les pages non administratives. Cela signifie que vous pouvez utiliser la superposition pour faire des popups sans ajouter encore plus de bibliothèques javascript à votre site.

6
user842

J'ai fini par utiliser le module Overlay Paths avec Panels pour pouvoir montrer notre formulaire d'inscription à la newsletter. Le formulaire est apparu, mais il comprenait également tout le reste de la page (en-tête, pied de page, barres latérales, etc.). Il affichait la page d'inscription à la newsletter via le modèle de site par défaut.

La solution la plus délicate a donc été de créer une variante sur le modèle de site par défaut sous Panneaux. Le Variant a été sélectionné uniquement si le Node: Type était un Webform. Ensuite, j'ai supprimé le contenu excédentaire et fait que la variante n'affiche que le contenu principal.

Presto! La page d'inscription à la newsletter est apparue dans une superposition simplement comme un formulaire que je pouvais styliser au contenu de mon cœur CSS!

1
silentkrange