Frontend\Core\Engine\Page::parsePositions PHP Method

parsePositions() protected method

Parse the positions to the template
protected parsePositions ( )
    protected function parsePositions()
    {
        // init array to store parsed positions data
        $positions = array();
        // fetch variables from main template
        $mainVariables = $this->tpl->getAssignedVariables();
        // loop all positions
        foreach ($this->record['positions'] as $position => $blocks) {
            // loop all blocks in this position
            foreach ($blocks as $i => $block) {
                // check for extras that need to be reparsed
                if (isset($block['extra'])) {
                    $block['extra']->execute();
                    // fetch extra-specific variables
                    if (isset($positions[$position][$i]['variables'])) {
                        $extraVariables = $positions[$position][$i]['variables'];
                    } else {
                        $extraVariables = $block['extra']->getTemplate()->getAssignedVariables();
                    }
                    // assign all main variables
                    $block['extra']->getTemplate()->assignArray($mainVariables);
                    // overwrite with all specific variables
                    $block['extra']->getTemplate()->assignArray($extraVariables);
                    // parse extra
                    $positions[$position][$i] = array('variables' => $block['extra']->getTemplate()->getAssignedVariables(), 'blockIsEditor' => false, 'html' => $block['extra']->getContent());
                    // Maintain backwards compatibility
                    $positions[$position][$i]['blockIsHTML'] = $positions[$position][$i]['blockIsEditor'];
                } else {
                    $positions[$position][$i] = $block;
                    if (array_key_exists('blockContent', $block)) {
                        $positions[$position][$i]['html'] = $block['blockContent'];
                    }
                }
            }
            // assign position to template
            $this->tpl->assign('position' . \SpoonFilter::ucfirst($position), $positions[$position]);
        }
        $this->tpl->assign('positions', $positions);
    }