<div id="main" class="<?php if (($mod_count['sidebar']) { ?>grid_8<?php { if($mod_count['sidebar_new']){ ?>grid_22<?php }else { ?>grid_16<?php }}} ?>">
#1
24 декабря 2013 в 08:33
Здравствуйте.Помогите, пожалуйста правильно условие составить.Стандартный шаблон.Хочу sidebar вывести на другой ( от главной ) странице с другим классом.При этом меняется и класс компонента.И что то с логикой туго.Пробую как то так:
, но не выходит.
Lora, я делал в шаблоне компонента смену класса по определению типа записи (УК), это смарти
У вас, мне кажется, нужно определить не главная ли страница, если не главная выводим другой класс.
Поэтому мне кажется что вы можете не в template.php правку делать, а в модуле который выводите в сайдбар. Для определенной страницы и если там этот модуль в единственном варианте.
Первый вариант вроде ваш)
<div class="{if $cat.view_type=='list2'}catalog_list_zag{else}catalog_list_item{/if}">
Поэтому мне кажется что вы можете не в template.php правку делать, а в модуле который выводите в сайдбар. Для определенной страницы и если там этот модуль в единственном варианте.
Первый вариант вроде ваш)
http://instantcms.ru/forum/thread16460.html#152122
Для php
== если равно то — не показываем модуль
<?php if ($mod_count['sidebar_right2'] && $_SERVER['REQUEST_URI'] != '/novosti') { ?> <div class="col-right" id="sidebar-right2"><?php $inPage->printModules('sidebar_right2'); ?> </div> <?php } ?>
!= если не равно — то показываем
http://instantcms.ru/forum/thread16523.html#153044
Для tpl
== если равно то — не показываем модуль
{if $smarty.server.REQUEST_URI == "/stati/marketing"} МОДУЛЬ {/if} {if $smarty.server.REQUEST_URI != "/stati/marketing"} МОДУЛЬ {/if}
!= если не равно — то показываем
Что-то типа этого
<?php if ($mod_count['sidebar'] && $_SERVER['REQUEST_URI'] == '/novosti') { ?> <div id="main" class="grid_8"> <?php }else { ?> <div id="main" class="grid_22"> <?php } ?> </div>
Сегодня в 01:25
#4
24 декабря 2013 в 17:48
Спасибо за помощь, но так немного не так (сори ).Так как после условия идёт ещё код до закрытия тега div и получается придётся вставлять два блока, код вырастает, не очень удобно.Такой вариант я пробовал.Поэтому и хотелось в одной строке условие.С вариантом в модуле я что то не догнал, со смарти по моему совсем не то.Ведь суть не только поменять класс и сам модуль, но и класс соседнего блока.Вданном случае <div class="component">
<?php $inPage->printBody(); ?>
</div>
<?php $inPage->printBody(); ?>
</div>
<div id="main" class="<?php if ($mod_count['sidebar']) { ?>grid_8<?php } else { ?>grid_16<?php } ?>"> <?php $inPage->printModules('maintop'); ?> <?php $messages = cmsCore::getSessionMessages(); ?> <?php if ($messages) { ?> <div class="sess_messages"> <?php foreach($messages as $message){ ?> <?php echo $message; ?> <?php } ?> </div> <?php } ?> [b] <?php if($inPage->page_body){ ?> <div class="component"> <?php $inPage->printBody(); ?> </div> <?php } ?>[/b] </div>
#5
24 декабря 2013 в 18:06
ну добавьте проверку ссылки, а в моем примере просто "шапка" див меняется… хотя да, если блок, допустим не выводится, остается закрывающий тег… и все остально тоже… да не удачно как-то.
#6
24 декабря 2013 в 18:21
Решил вопрос по другому.Переставил блок на главной в другой модуль( немного пришлось шаблон подправить)и этим освабодил sidebar.И теперь изменил .css.Вроде получилось, но ещё не все страницы проверил.Ещё раз спасибо за помощь.
#7
24 декабря 2013 в 18:33
Lora, дык вроде не за что(