[development] How to disable any block or sidebar from module

Khalid Baheyeldin kb at 2bits.com
Fri Jul 17 18:47:13 UTC 2009


On Fri, Jul 17, 2009 at 2:01 PM, Earnie Boyd
<earnie at users.sourceforge.net>wrote:

> Quoting "Tomá? Fülöpp (vacilando.org)" <tomi at vacilando.org>:
>
>  Hi,
>>
>> I cannot find a generic way how to disable a sidebar programmatically.
>>
>> In my module, if some conditions are met, I would like to make sure that
>> the
>> whole sidebar (or any blocks in it) are not rendered at all, regardless of
>> the theme.
>>
>> Could somebody advise, please? Sorry if it's obvious..
>>
>>
> I think you want to use hook_block()[1].
>
> [1] http://api.drupal.org/api/function/hook_block
>

He is talking about the whole sidebar, hence a region, not a block.
hook_block() will not help here.

In the past we have done it by setting the visibility PHP code for each
block
in a given region, and that would make the entire sidebar invisible if the
conditions are met. It is a pain if you have more than a few blocks in that
region (right side bar for example).

You said you don't want it in the theme, but it would be a simple change in
page.tpl.php

      <?php if ($right): ?>
        <?php if (*!custom_visibility_function*()) ?>
          <div id="sidebar-right" class="sidebar">
            <?php print $right ?>
          </div>
        <?php endif; ?>
      <?php endif; ?>

The other option is to use preprocess_block(). Perhaps something like this
in
template.php

<?php
function phptemplate_preprocess_block(&$variables) {
  if ($variables['block']->region = 'right') {
    if (!custom_visibility_function()) {
      unset($variables['block'];
    }
  }
}
?>

Still in the theme though.

>
>
> --
> Earnie
> -- http://r-feed.com/           -- http://for-my-kids.com/
> -- http://www.4offer.biz/       -- http://give-me-an-offer.com/
>
>


-- 
Khalid M. Baheyeldin
2bits.com, Inc.
http://2bits.com
Drupal optimization, development, customization and consulting.
Simplicity is prerequisite for reliability. --  Edsger W.Dijkstra
Simplicity is the ultimate sophistication. --   Leonardo da Vinci
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.drupal.org/pipermail/development/attachments/20090717/33fbb45d/attachment.htm>


More information about the development mailing list