Para esas soluciones que nunca recuerdas
Posts tagged functions
Joomla: function to get template positions
0We needed a function to get available template positions. Didn’t found lot of info out there so we created our own function.
/** * Parse templateDetails.xml and get available positions * @author Jiden - Digital Disseny, S.L. * @version 04/04/2012 * * @param string $tplPath - path of the current theme * @param boolean $nameAsKey - set position name as output array key? * * @return array of positions */ function getTplPositions($tplPath, $nameAsKey = false) { $outputArray = array(); $templateXML = $tplPath.'/templateDetails.xml'; // try to load positions from template XML file $xml = JFactory::getXML($templateXML); if (is_object($xml)) { $positions = $xml->xpath('positions/position'); if ($positions) { foreach ($positions as $position) { $name = (string)$position->data(); // clean name $name = preg_replace("/(\-a|\-b|\-c|\-d|\-e|\-f)$/i", "", $name); // do not add duplicates if(!in_array($name, $outputArray)) { // use position name as array key? if($nameAsKey) $outputArray[$name] = $name; else $outputArray[] = $name; } } } } return $outputArray; }
Now you can use the function as:
$tplPath = JPATH_SITE . '/templates/' . $this->template; $positions = getTplPositions(); print_r($positions);
That will return something like:
Array ( [0] => debug [1] => header-top [2] => header [3] => header-bottom [4] => topmenu [5] => rsidebar-top [6] => rsidebar [7] => rsidebar-bottom [8] => lsidebar-top [9] => lsidebar [10] => lsidebar-bottom [11] => main-top [12] => main [13] => main-bottom [14] => component-top [15] => component [16] => component-bottom [17] => footer-top [18] => footer [19] => footer-bottom