How to put a block inside an article in Drupal

    User Rating: 5 / 5

    Star ActiveStar ActiveStar ActiveStar ActiveStar Active
     

    As a Joomla developer I usually put a module inside an article using loadposition code. The code is pretty simple: , but I can't find this functionality in Drupal 7, I don't know how to put a block inside an article in Drupal. So I ended adding this code to the page.tpl.php in my template.

    $node = menu_get_object();
    $nid = $node->nid;
    $body = $page['content']['system_main']['nodes'][$nid]['body'];						
    $content = $body['#object']->body['und'][0]['value'];
    $argument_keys=null;
    if (preg_match_all("/{loadposition ([\w-]+)}/", $content, $argument_keys)) {														
    	$region = $argument_keys[1][0];		
    	$region_name = block_get_blocks_by_region($region);																		
    	$added_string = render($region_name); 	 							
    	$newcontent = str_replace($argument_keys[0],$added_string,$content);									
    }
    
    if($newcontent==NULL)				
    	print render($page['content']);												
    else
    	print $newcontent;

    As you can see from this code, it will search for this pattern: from the content of article or basic page, and get the value of position_name. Then it will load the block by region name using function block_get_blocks_by_region and replace this string: with the block content.

    Hope this help someone

    Tags: ,

    Please publish modules in offcanvas position.