логическое условие

#1 24 декабря 2013 в 08:33
Здравствуйте.Помогите, пожалуйста правильно условие составить.Стандартный шаблон.Хочу sidebar вывести на другой ( от главной ) странице с другим классом.При этом меняется и класс компонента.И что то с логикой туго.Пробую как то так:
  1. <div id="main" class="<?php if (($mod_count['sidebar']) { ?>grid_8<?php { if($mod_count['sidebar_new']){ ?>grid_22<?php }else { ?>grid_16<?php }}} ?>">
, но не выходит.
#2 24 декабря 2013 в 12:42
Lora, я делал в шаблоне компонента смену класса по определению типа записи (УК), это смарти
  1. <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

  1. <?php if ($mod_count['sidebar_right2'] && $_SERVER['REQUEST_URI'] != '/novosti') { ?>
  2. <div class="col-right" id="sidebar-right2"><?php $inPage->printModules('sidebar_right2'); ?>
  3. </div>
  4. <?php } ?>
== если равно то — не показываем модуль
!= если не равно — то показываем


http://instantcms.ru/forum/thread16523.html#153044
Для tpl
  1. {if $smarty.server.REQUEST_URI == "/stati/marketing"}
  2. МОДУЛЬ
  3. {/if}
  4. {if $smarty.server.REQUEST_URI != "/stati/marketing"}
  5. МОДУЛЬ
  6. {/if}
== если равно то — не показываем модуль
!= если не равно — то показываем

PolarOne
#3 24 декабря 2013 в 15:22
Что-то типа этого
  1. <?php if ($mod_count['sidebar'] && $_SERVER['REQUEST_URI'] == '/novosti') { ?>
  2. <div id="main" class="grid_8">
  3. <?php }else { ?>
  4. <div id="main" class="grid_22">
  5. <?php } ?>
  6. </div>
#4 24 декабря 2013 в 17:48
Спасибо за помощь, но так немного не так (сори smile).Так как после условия идёт ещё код до закрытия тега div и получается придётся вставлять два блока, код вырастает, не очень удобно.Такой вариант я пробовал.Поэтому и хотелось в одной строке условие.С вариантом в модуле я что то не догнал, со смарти по моему совсем не то.Ведь суть не только поменять класс и сам модуль, но и класс соседнего блока.Вданном случае <div class="component">
<?php $inPage->printBody(); ?>
</div>

  1. <div id="main" class="<?php if ($mod_count['sidebar']) { ?>grid_8<?php } else { ?>grid_16<?php } ?>">
  2. <?php $inPage->printModules('maintop'); ?>
  3.  
  4. <?php $messages = cmsCore::getSessionMessages(); ?>
  5. <?php if ($messages) { ?>
  6. <div class="sess_messages">
  7. <?php foreach($messages as $message){ ?>
  8. <?php echo $message; ?>
  9. <?php } ?>
  10. </div>
  11. <?php } ?>
  12.  
  13. [b] <?php if($inPage->page_body){ ?>
  14. <div class="component">
  15. <?php $inPage->printBody(); ?>
  16. </div>
  17. <?php } ?>[/b]
  18.  
  19. </div>
#5 24 декабря 2013 в 18:06
ну добавьте проверку ссылки, а в моем примере просто "шапка" див меняется… хотя да, если блок, допустим не выводится, остается закрывающий тег… и все остально тоже… да не удачно как-то.
#6 24 декабря 2013 в 18:21
Решил вопрос по другому.Переставил блок на главной в другой модуль( немного пришлось шаблон подправить)и этим освабодил sidebar.И теперь изменил .css.Вроде получилось, но ещё не все страницы проверил.Ещё раз спасибо за помощь.
#7 24 декабря 2013 в 18:33
Lora, дык вроде не за что(
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.