Простой способ создавать блоки программно? [закрыто]
26
Изучение Друпала. Теперь я знаю, что могу создать блок через бэкэнд, но я бы предпочел создавать их программно, если это возможно. На самом деле я уверен, что это возможно. Но какой самый простой способ?
Используйте ловушки hook_block_info и hook_block_view в вашем пользовательском модуле . hook_block_info определяет блок. Это будет отображаться в админ > структура > блоки . * hook_block_view * отображает содержимое. Ниже приведены примеры из Drupal API.
Пример hook_block_info, где определены два блока (под названием «Синдикат» и «Недавнее содержимое»):
<?phpfunction hook_block_info(){// This example comes from node.module.
$blocks['syndicate']= array('info'=> t('Syndicate'),'cache'=> DRUPAL_NO_CACHE,);
$blocks['recent']= array('info'=> t('Recent content'),// DRUPAL_CACHE_PER_ROLE will be assumed.);return $blocks;}?>
Пример hook_block_view:
<?phpfunction hook_block_view($delta =''){// This example is adapted from node.module.
$block = array();switch($delta){case'syndicate':
$block['subject']= t('Syndicate');
$block['content']= array('#theme'=>'feed_icon','#url'=>'rss.xml','#title'=> t('Syndicate'),);break;case'recent':if(user_access('access content')){
$block['subject']= t('Recent content');if($nodes = node_get_recent(variable_get('node_recent_block_count',10))){
$block['content']= array('#theme'=>'node_recent_block','#nodes'=> $nodes,);}else{
$block['content']= t('No content available.');}}break;}return $block;}?>
Обратитесь к странице API Blocks на Drupal.org для получения полного списка хуков. Drupal 6 немного отличается. Нет ловушки hook_block_view; вместо этого используйте hook_block для объявления блоков.
Кажется, что hook_block может использоваться только в отдельном модуле: | Я до сих пор не понимаю, почему эта сложность ... Это обычная практика - иметь модули для всего в Drupal?
Джаярджо
2
Да, модули являются ключевой концепцией Drupal. В большинстве случаев сам Drupal представляет собой набор модулей, и все это делается с помощью хуков модулей.
mpdonadio
3
Возможно, вы искали то, что я искал, и нашли это здесь:
В Drupal 7, взгляните на block_add_block_form_submitв modules/block/block.admin.inc.
Это обычная форма создания блока; Кажется, он просто вставляет записи напрямую, а не вызывает другую функцию. Обратите внимание, что каждая запись в таблице блоков связана с одной темой (вы можете просто использовать активную тему, но безопаснее вставить записи для всех тем).
Ответы:
Для Drupal 7:
Используйте ловушки hook_block_info и hook_block_view в вашем пользовательском модуле . hook_block_info определяет блок. Это будет отображаться в админ > структура > блоки . * hook_block_view * отображает содержимое. Ниже приведены примеры из Drupal API.
Пример hook_block_info, где определены два блока (под названием «Синдикат» и «Недавнее содержимое»):
Пример hook_block_view:
Обратитесь к странице API Blocks на Drupal.org для получения полного списка хуков. Drupal 6 немного отличается. Нет ловушки hook_block_view; вместо этого используйте hook_block для объявления блоков.
источник
Для Drupal 6 краткий ответ заключается в том, что вы создаете пользовательский модуль, реализующий hook_block .
Для Drupal 7 вы используете Block API .
Если это ваш первый опыт разработки модулей, я настоятельно рекомендую Pro Drupal Development или Pro Drupal 7 Development . Здесь есть почти все, что вам нужно знать.
источник
Возможно, вы искали то, что я искал, и нашли это здесь:
Но когда вы посмотрите на эту функцию, вы увидите, что вы можете просто сделать db_update самостоятельно.
источник
В Drupal 7, взгляните на
block_add_block_form_submit
вmodules/block/block.admin.inc
.Это обычная форма создания блока; Кажется, он просто вставляет записи напрямую, а не вызывает другую функцию. Обратите внимание, что каждая запись в таблице блоков связана с одной темой (вы можете просто использовать активную тему, но безопаснее вставить записи для всех тем).
Таблица block_custom содержит содержимое.
источник
Вы можете использовать модуль Features Extra для экспорта блоков.
Или просто создайте записи прямо в таблице блоков.
источник