Comment passer des paramètres à un bloc?

8

Est-il possible de transmettre par programmation des paramètres à un bloc?

underq
la source

Réponses:

7

Selon l'autre réponse , les blocs sont «stupides» et n'ont pas la possibilité d'avoir des arguments «passés». Ils peuvent cependant récupérer des arguments du contexte de la page, comme les ID de nœud, l'utilisateur actuel, etc.

Vous avez vraiment deux choix «faciles»:

  • Écrivez votre propre bloc: C'est assez facile, si vous pouvez faire un peu de PHP. Créez un module et implémentez hook_block () . Il existe de nombreux exemples sur Drupal.org .
  • Utilisez le panneau et / ou le module Vues: les panneaux vous permettent de créer des volets pouvant contenir toutes sortes de variables et de contextes, MAIS sans thème spécial, le bloc devra vivre dans la zone de contenu, pas dans une région Drupal; cela dépend donc de votre site et de l'endroit où vous souhaitez bloquer. Les vues peuvent également créer des blocs et recevoir des arguments de l'URL de la page, de l'utilisateur actuel et également du code personnalisé via le module PHP Vues . Les vues et les panneaux fonctionnent très bien ensemble.
Jim Kirkpatrick
la source
1
Généralement aussi avec les panneaux, si votre thème le prend en charge, vous pouvez désactiver tous les autres blocs et afficher d'autres contenus qui seront sensibles au contexte en tant que "pseudo" blocs.
Malks
2

Vous ne pouvez rien transmettre par programme à un bloc AFAIK. Vous pouvez autoriser la configuration d'un bloc (en utilisant hook_block_configure dans D7). Alternativement, vous pouvez créer votre propre fonction de thème et vous pouvez passer des arguments à cela. Qu'est-ce que tu essaies de faire?

Andy
la source
2

Configurez le filtre contextuel choisissez "Fournir la valeur par défaut" type => "code php" et utilisez l'argument que vous voulez. ex: return arg (1);

hasan
la source
2

Pour le cas spécialisé (mais répandu) où votre bloc est un affichage d'une vue, vous pouvez utiliser views_embed_viewpour rendre le bloc avec les paramètres qu'il obtient via les filtres contextuels de la vue (c'est-à-dire, normalement à partir de l'URL).

Par exemple:

print views_embed_view('news', 'panel_pane_1', 'world');

Tous les paramètres après le second seront passés en tant que valeurs de filtre contextuelles au bloc.

Source: Réécrit à partir de cette réponse par David Thomas , licencié CC-BY-SA 3.0

tanius
la source