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

Steve Edwards killshot91 at comcast.net
Fri Jul 17 18:56:04 UTC 2009


What about using a preprocess function in a module to unset the sidebar 
region variable if the condition is met?

Steve

Khalid Baheyeldin wrote:
>
>
> On Fri, Jul 17, 2009 at 2:01 PM, Earnie Boyd 
> <earnie at users.sourceforge.net <mailto:earnie at users.sourceforge.net>> 
> wrote:
>
>     Quoting "Tomá? Fülöpp (vacilando.org <http://vacilando.org>)"
>     <tomi at vacilando.org <mailto: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 <http://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/3f3ca0df/attachment-0001.htm>


More information about the development mailing list