web-dev-qa-db-fra.com

Rendre le bloc personnalisé par nom de bloc

J'ai créé un bloc personnalisé dans le CMS Drupal. Disons qu'il s'appelle "test_block". Existe-t-il un moyen de rendre ce bloc dans un fichier modèle en utilisant le nom du bloc?

Merci,

4
Pratip Ghosh

D7:

<?php
  $block = module_invoke('module_name', 'block_view', 'block_delta');
  print $block['content'];
?>

'module_name' = Le nom de la machine du module (c'est-à-dire le nom du dossier du module). Cela est également vrai pour les modules de base, par exemple, "recherche", "utilisateur" et "commentaire" fonctionneraient tous ici.

'block_delta' = Le nom de la machine du bloc. Vous pouvez déterminer ce que c'est en visitant la page d'administration du bloc et en modifiant le bloc. L'URL pour modifier un bloc de formulaire Web, par exemple, serait quelque chose comme:

Drupal 7: admin/structure/block/manage/ webform / client-block-11 /configurer

Dans cet exemple, 'webform' est le nom du module, 'client-block-11' est le delta du bloc.

Les blocs personnalisés auront le nom de module "bloc" et un numéro pour un delta, que vous pouvez également trouver en modifiant le bloc.

Plus d'informations: http://drupal.org/node/26502

====== OR =============

<?php
//suppose 98 is the id of the block

   $block =block_load('block',98);
   $output = drupal_render(_block_get_renderable_array(_block_render_blocks(array($block))));        
   print $output;
?>
13
Chirag Shah

D8:

$block_entity = Drupal\block_content\Entity\BlockContent::load(BLOCK_ID);// BLOCK_ID
$block_view = \Drupal::entityTypeManager()->getViewBuilder('block_content')->view($block_entity, 'DISPLAY_VIEW_NAME');
$rendered_block = ['#markup' => render($block_view)];

Rendre un bloc personnalisé par programme

3
kxo

Au niveau de votre modèle, vous devriez pouvoir faire quelque chose comme ceci:

<?php
  $test_block = "test_block";
  print views_embed_view($test_block);
?>

Cela affichera votre bloc dans le modèle.

0
itsdarrylnorris

Essaye ça

$block = module_invoke('block', 'block_view', 'test_block');
print render($block['content']);
0
Eugene

Si vous demandez comment utiliser un modèle personnalisé pour ce bloc, la réponse est:

En supposant que le nom de la machine de votre bloc est test_block, puis créez un fichier appelé

 block--block--test_block.tpl.php

Dans votre thème

0
GWPROD