General developer forum

Check active blocks on page

Picture of Rajendra Kumar
Check active blocks on page

Is there any way to list all available or assigned block on any page like landing page, course view page etc.

Average of ratings: -
Tim at Lone Pine Koala Sanctuary
Re: Check active blocks on page
Core developersDocumentation writersParticularly helpful MoodlersPlugin developers

For the current page, use $PAGE->blocks.

To see what is on other pages, you need code like this:

$page = new \moodle_page();
$page->set_url('/course/view.php', array('id' => $this->course->id));

$context = \context_course::instance($this->course->id);

$blockmanager = $page->blocks;


$missingblocks = self::$BLOCKS_TO_ENSURE_EXIST;
$desiredblockpositions = self::$BLOCK_ORDER;
$targetblockpositions = array();
foreach ($blockmanager->get_regions() as $region) {
foreach ($blockmanager->get_blocks_for_region($region) as $block) {
$instance = $block->instance;

if ($instance->parentcontextid == $context->id && in_array($instance->blockname, self::$BLOCKS_TO_REMOVE)) {
$this->log_action('blockremoved', $this->block_type_name($instance->blockname));

if (isset($missingblocks[$instance->blockname])) {
} else {
if (isset($desiredblockpositions[$instance->blockname])) {
$tempname = $instance->blockname;
} else {
$tempname = 'OTHER';
$targetblockpositions[$instance->id] =
array($instance, $desiredblockpositions[$tempname]);
$desiredblockpositions[$tempname] += 1;

Average of ratings: -