SimplePortal

Customization => Custom Coding => Topic started by: Andreas on February 21, 2011, 10:53:26 AM

Title: Hide block from php-code in block
Post by: Andreas on February 21, 2011, 10:53:26 AM
I need to hide a php block entirely (including heading and border) based on the result from a database call inside the block.

It could be done with an extra div around the entire block and a javascript line, but I would prefer not to use javascript and that the html from the block to be hidden was never echoed. Would this be possible to accomplish by modifying some global Simpleportal php variable or perhaps by a return value from the php script inside the block?
Title: Re: Hide block from php-code in block
Post by: AngelinaBelle on February 21, 2011, 12:01:02 PM
The block itself has to be on the page in order to run the code to hide its contents.
 
So you could create a php block that has no HTML.
 
Or, if it needed to hide itself, it could do it with a little javascript, using getElementById to set its display property to none. Then it would be empty and invisible.
 
Every block body has an id like "sp_block_2". Once you create the block, you'll know what its block number is.
Title: Re: Hide block from php-code in block
Post by: Andreas on February 22, 2011, 01:17:03 PM
Thank you for pointing me to the right direction!  :applause:

This is what I did if someone wonders:
1) Php block.
2) Style Options check "No Title" and "No body".
3) When the block is to be displayed, echo the html needed for title and body.

Example:

if (mt_rand(0,1)) echo '<h3 class="catbg">My title</h3><div class="windowbg">My content</div><div>';

(Simple example just to illustrate the principle, the complete html code for fancy corners etc. is easy to figure out if you check the page source.)
Title: Re: Hide block from php-code in block
Post by: AngelinaBelle on February 22, 2011, 03:50:53 PM
Good job.  Glad to help.
SimplePortal 2.3.8 © 2008-2024, SimplePortal