Khalid B wrote:
On 5/15/06, Khalid B <kb@2bits.com> wrote:
On 5/15/06, Bèr Kessels <ber@webschuur.com> wrote:
Hello list,
One thing that has bothered me for a long time, is how to get/find/parse blocks in a simple way.
Problems are: * you need to read the code to find the "delta". Modules like views require you to hover the admin/blocks/edit links in order to find the delta. * a block returned by hook_block('view') needs casting and remodelling before I can be passed to theme_block.
I addressed the last point with a helper function get_block.
But that function still has the first problem above: You need to know a) the module that makes the block and b) the delta.
Does anyone know a trick for this? Or did I miss an API function? Is someone working on code for this?
NOTE: I am not particularly interested in a discussion to revise the core block architecture. Eventhough that might be an interesting project, I am looking for an intermediate function/api-set right now :)
Initially, I used flexiblock to get the blocks I wanted where I want them (e.g. adsense blocks),
Later, I decided that less dependancies is better, and to do it directly from core.
In 4.7, there is the block regions stuff, which should work great (more on that below).
Like Ber and Merlin, I find myself using the delta too. In template.php, I find myself doing this:
function phptemplate_get_block($block_id) { $block = block_block('view', $block_id); return $block['content']; }
Then in node/page.tpl.php I do:
<?php print phptemplate_get_block(6); ?>
Not pretty, and has hard coded block deltas, but it works.
The reason is, I don't want the block title to be displayed. I know that this can be handled with CSS, but prefer not to have it altogether.
So on my to do list, there is a task to make it an option to turn off the display of a block's title.
Now that block regions can be anywhere, they can be in all sorts of crazy places.
In such situations, the display of the title should be turned off for the region.
I forgot to say that this goes well with the regions and the theme.
In template.php there would be:
function mytheme_regions() { return array( 'ad_top' => t('ad top'), 'ad_links' => t('ad links'), 'ad_bottom' => t('ad bottom'), 'right' => t('right sidebar'), 'left' => t('left sidebar'), 'content' => t('content'), 'header' => t('header'), 'footer' => t('footer') ); }
And then in node/page.tpl.php there would only be:
<?php print $ad_top ?>
And the placement would be via the admin/block interface.
Nice and simple ... The one downside to this is that, at the moment, a block can only live in one region per theme unless I add the blocks to a particular region myself.