Existe-t-il un moyen de définir la visibilité des blocs par programmation sans utiliser le module Filtre PHP?

11

En activant le module principal de filtre PHP, je peux utiliser du code PHP pour définir la visibilité d'un bloc dans la page de configuration de bloc.

Mais je ne veux pas activer le module de filtre PHP pour des mesures de sécurité. Existe -t-il un moyen de le faire dans un module personnalisé ? Je ne trouve pas de crochet pour ça. Et un crochet fermé hook_block_view_alterne peut que changer le contenu du bloc.

gilzero
la source

Réponses:

13

Oui. Définir le contenu des blocs sur false le masquera de l'affichage et masquera la région si aucun autre bloc n'est présent. J'imagine que vous auriez besoin d'une configuration similaire à la suivante:

$block['content'] = _my_module_custom_block();

...

function _my_module_custom_block(){
    if( HIDE_CONDITION )
        return false;
}
Sam152
la source
2
ne montrerait-il pas encore un bloc avec du contenu vide?
gilzero
1
fonctionne très bien. Merci.
gilzero
@gilzero, non, ce ne serait pas le cas.
WM
1

Le module de visibilité du bloc de règles est une autre alternative disponible ... qui ne nécessite pas d'activer le filtre PHP . Voici une citation de sa page de projet:

Le module de visibilité des blocs de règles permet aux composants de règles d'être utilisés pour contrôler la visibilité des blocs. Cela offre aux administrateurs et développeurs Drupal une flexibilité extrême pour contrôler le moment où les blocs doivent être affichés sur leurs sites Web, en plus des options de visibilité par défaut fournies par Drupal.

L'idée générale est que si vous pouvez le faire avec des règles, vous pouvez l'utiliser pour contrôler la visibilité des blocs, donc les possibilités sont illimitées.

Vous devez afficher un bloc uniquement pour les utilisateurs enregistrés il y a plus d'un mois?

Peut-être avez-vous un bloc qui ne doit être affiché qu'entre 8 h et 17 h en semaine?

Qu'en est-il de l'affichage ou du masquage d'un bloc en fonction des conditions météorologiques actuelles?

Tout cela peut être fait en utilisant la visibilité des blocs de règles.

De plus, selon la " si vous pouvez le faire avec des règles, vous pouvez l'utiliser pour contrôler la visibilité des blocs " ci-dessus, vous avez le pouvoir des règles disponibles pour implémenter toutes sortes de logiques personnalisées (cf. la partie "programmation / module personnalisé" de votre question).

Pour une illustration de l'utilisation de ce module, reportez-vous à ma réponse à " Comment empêcher l'affichage d'un bloc de vues aux administrateurs, tel que utilisateur / 1? ".

Pierre.Vriens
la source