Блог
Вывод разных блоков в одном макете
Когда мы разрабатывали шаблон 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 правого блока"; }
Тоже самое делаем для остальных блоков.
Теперь просто включая или выключая флажки в настройках элемента структуры, мы можем создавать уникальный вид каждой структуры. И контент-менеджеру не надо обладать знаниями программирования, чтобы менять внешний вид страниц.
-
-
Что-то вы скрыли однако... сделал всё согласно инструкции - эффекта ноль... зря потратил время...
-
-
Возможно, Борис забыл о чем-то написать, но вроде все описано верно. Были какие-то ошибки?
-