Вывод разных блоков в одном макете

Когда мы разрабатывали шаблон http://unify.kad.systems/, мы заметили очень инетересную закономерность: все страницы отличаются друг от друга только наличием одного или другого дополнительного блока. И мы подумали, а почему бы не реализовать для всех страниц один универсальный макет. В данном случае это было очень уместно. Обслуживать такой код будет проще, да и сайт не будет захламляться лишними макетами. Кроме того, мы получим интересную возможность включать и выключать нужные блоки на любой странице сайта.

И так, для подобного решения понадобится сделать доп. свойства для структур сайта. Назовем их, например, "Наши клиенты", "Наша команда" и "Правый блок". Тип свойства должен быть флажок.

Теперь в макете помещаем следующий код:

// В переменные помещаем ID допсвойств.
$rightMenuId = 60;
$ourTeamId = 61;
$ourClientsId = 62;

$oStructure = Core_Page::instance()->structure;

// Функция для получения значений допсвойств текущей структуры.
function getPropertyValue($object, $property_id)
{
	$oProperty = Core_Entity::factory('Property', $property_id);		
	$aPropertyValues = $oProperty->getValues($object->id);
	if(isset($aPropertyValues[0]))
	{
		return $aPropertyValues[0];
	}
	else{
		return false;
	}
}
// Значения допсвойств текущей структуры.			
$rightMenu = getPropertyValue($oStructure, $rightMenuId);
$ourTeam = getPropertyValue($oStructure, $ourTeamId);
$ourClients = getPropertyValue($oStructure, $ourClientsId);

А в том месте, где должен выводиться "Правый блок" вставляем следующий код:

if($rightMenu)
{
	echo "Тут html правого блока";
}

Тоже самое делаем для остальных блоков.

Теперь просто включая или выключая флажки в настройках элемента структуры, мы можем создавать уникальный вид каждой структуры. И контент-менеджеру не надо обладать знаниями программирования, чтобы менять внешний вид страниц.

comments powered by Disqus


  • Что-то вы скрыли однако... сделал всё согласно инструкции - эффекта ноль... зря потратил время...

    • Возможно, Борис забыл о чем-то написать, но вроде все описано верно. Были какие-то ошибки?

Следующий "1C-Битрикс" К списку Предыдущий "Только 6x"