[support] getting block to show up for specific pages and specific node type

sebastian inforazor at gmail.com
Thu Nov 12 08:40:15 UTC 2009


BTW you should also consider the module: Context, for conditional 
blocks, and more.

brendan, fresh-off.com wrote:
> *Shai*
> thanks a lot for your input, it was _VERY_ helpful!  after some messing 
> about with it, here’s what seems to work when I have the “PHP Mode” 
> checked in “Page specific visibility settings” for configuring the block:
> 
> 
> <?php
> 
> // makes block appear if content type = blog
> 
> if ((arg(0) == 'node') && is_numeric(arg(1)) && !(arg(2))) {
> 
>   $thenode = node_load(arg(1));
> 
>   if ($thenode->type == 'blog') {
> 
>     return TRUE;
> 
>   }
> 
> }
> 
>  
> 
> //makes block appear if "blog" is in the URL
> 
> $url = request_uri();
> 
> if (strpos($url, "blog")) {
> 
> return TRUE;
> 
> }
> 
> ?>
> 
>  
> 
>  
> 
>  
> 
> ----
> 
>  
> 
> *brendan, fresh-off.com*
> 
> Creative Direction & Consultation: Web | Print | Brand
> 
>  
> 
> http://fresh-off.com
> 
> hello at fresh-off.com <mailto:hello at fresh-off.com>
> 
> 206.328.1067
> 
>  
> 
>  
> 
> *From:* support-bounces at drupal.org [mailto:support-bounces at drupal.org] 
> *On Behalf Of *Shai Gluskin
> *Sent:* Monday, November 09, 2009 8:53 AM
> *To:* support at drupal.org
> *Subject:* Re: [support] getting block to show up for specific pages and 
> specific node type
> 
>  
> 
> He Brendan,
> 
> You are on the right track. You just have to add some more php to do 
> another test. A slight change in the structure is that you need to make 
> a variable for the display status and then return it only at the end of 
> the whole snippet. When there is only one test, you can just set the 
> status "True" or "False" directly with a return statement that is in the 
> chunk of code as the test itself (that was how your original snippet did 
> it).
> 
> Note that I did NOT test the code, so there definitely could be a type 
> in there.
> 
> I posted it to a pastebin: http://pastebin.ca/1663597
> 
> Shai
> 
>     *Hello, *
> 
>     I found a code snippet on drupal.org <http://drupal.org> that allows
>     a block to be shown only on specific node types when 'Show if the
>     following PHP code returns TRUE' is checked on the Configure Blocks
>     page:
> 
>      
> 
>     -----
> 
>     <?php
>     if ((arg(0) == 'node') && is_numeric(arg(1)) && !(arg(2))) {
>       $thenode = node_load(arg(1));’
>       if ($thenode->type == 'blog') {
>         return TRUE;
>       }
>     }
>     ?>
> 
>     -----
> 
> 
>     this works great, except for that I’d like the block to show for
>     nodes of type “blog” *_AND_* also on specific pages – in my case
>     www.mysite.com/blog <http://www.mysite.com/blog> which is a view
>     showing a list of blogs.  How can I do both?
> 
>      
> 
> 
>     ----
> 
>      
> 
>     *brendan, fresh-off.com <http://fresh-off.com>*
> 
>     Creative Direction & Consultation: Web | Print | Brand
> 
>      
> 
>     http://fresh-off.com
> 
>     hello at fresh-off.com <mailto:hello at fresh-off.com>
> 
>     206.328.1067
> 
>      
> 
> 
>     --
>     [ Drupal support list | http://lists.drupal.org/ ]
> 
>  
> 


More information about the support mailing list