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

brendan, fresh-off.com hello at fresh-off.com
Tue Nov 10 00:09:16 UTC 2009


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

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 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
which is a view showing a list of blogs.  How can I do both? 

 


----

 

brendan, fresh-off.com

Creative Direction & Consultation: Web | Print | Brand

 

http://fresh-off.com

hello at fresh-off.com

206.328.1067

 


--
[ Drupal support list | http://lists.drupal.org/ ]

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.drupal.org/pipermail/support/attachments/20091109/6fe63318/attachment-0001.html 


More information about the support mailing list