CMS BODY

#1 18 июня 2012 в 13:24
  1. <div id="main">
  2. <?php if ($mod_count['sidebar']) { ?>
  3. <div id="sidebar">
  4. <?php cmsModule('sidebar'); ?>
  5. </div>
  6. <?php } ?>
  7.  
  8. <?php if ($mod_count['right']) { ?>
  9. <div id="body">
  10. <?php cmsBody(); ?>
  11. </div>
  12. <div id="right">
  13. <?php cmsModule('right'); ?>
  14. </div>
  15. <?php else : ?>
  16. <?php cmsBody(); ?>
  17. <?php endif; ?>
  18.  
  19. </div>
Как решить задачку, чтобы при наличии right расположение было: сайдбар | боди | право
При наличии только сайдбар и боди — сайдбар | боди
При наличии только боди — | боди |

нужен только код, а со стилями разберемся самостоятельно
#2 18 июня 2012 в 14:50
Как то раз уже задавал такой вопрос, давно это было. Ответа на него к сожалению не нашлось. Решил проблему с помощью CSS. Задал колонкам минимальную ширину 0 (можно просто не указывать ширину), но в этом случае придется модулям в этих колонках присваивать ширину. Немножко геморно, но зато работает.
#3 18 июня 2012 в 15:09
Минона, я что-то не пойму чем ваше "как сделать?" отличается от того, что уже есть в вами же приведенном коде? Или вы хотите чтоб при наличии right сайдбар выводился независимо от того есть или нет в нем хоть один модуль?
В чем смысл такой затеи?
#4 18 июня 2012 в 16:48
Если подойдёт как в этом шаблоне, дайте знать.
Или просто скачайте шаблон и возьмите себе весь <div id="center"> </div> из template.php (в этом случае надо выставить проверку на наличие назначенных модулей в позиции left и sidebar (последний — ваш right). Там сайтбары пустые не выводятся.
Удачи!
#5 18 июня 2012 в 16:49
Для примера можно так:
  1. <?php if ($mod_count['left']) { ?>
  2. <?php if ($mod_count['sidebar']){ ?>
  3. <!-- ***************** all ******************* -->
  4.  
  5. <!-- ************************************ -->
  6. <?php } else { ?>
  7. <!-- ****************** left center ****************** -->
  8.  
  9. <!-- ************************************ -->
  10. <?php } ?>
  11. <?php } else { ?>
  12. <?php if ($mod_count['sidebar']){ ?>
  13. <!-- ****************** center right****************** -->
  14.  
  15. <!-- ************************************ -->
  16. <?php } else { ?>
  17. <!-- ****************** center ****************** -->
  18.  
  19. <!-- ************************************ -->
  20. <?php } ?>
  21. <?php } ?>
#6 18 июня 2012 в 16:58
Минона, если добавлять условия вида:

  1. <?php if ($mod_count['right']) { ?>
то нужно в самом верху шаба добавить

  1. $mod_count['right'] = cmsCountModules('right');
иначе работать не будет, по крайней мере у меня не работало)
#7 18 июня 2012 в 23:57


Минона, я что-то не пойму чем ваше "как сделать?" отличается от того, что уже есть в вами же приведенном коде? Или вы хотите чтоб при наличии right сайдбар выводился независимо от того есть или нет в нем хоть один модуль?
В чем смысл такой затеи?

Pasha

0_o код писался просто руками не откуда не копируясь — оно что, может работать???


Для примера можно так:

Yurik

Простите, но тут вообще не понятно ничего.

all — это означает и право и лево и центр?
left center — сайдбар и центр?
center right — право и лево? (право может по ширине растягиваться?
#8 19 июня 2012 в 00:20
Минона, вот кусок кода как я делал у себя:
  1. <div id="mainbody" class="container_16">
  2.  
  3. <?php if ($mod_count['sidebar1']) { ?>
  4. <div class="grid_2" id="sidebar"><?php cmsModule("sidebar1");?></div>
  5. <?php } ?>
  6.  
  7. <div id="main" class="<?php if (($mod_count['sidebar1']) || ($mod_count['sidebar'] )) {
  8. if (($mod_count['sidebar1']) && ($mod_count['sidebar'] )) { ?> grid_11<?php }
  9. else {
  10. if ($mod_count['sidebar1']) { ?> grid_14<?php }
  11. else {
  12. if ($mod_count['sidebar']) { ?> grid_13<?php }
  13. }}
  14. }
  15. else { ?>grid_16<?php } ?>">
  16.  
  17.  
  18. <?php cmsModule('maintop'); ?>
  19.  
  20.  
  21.  
  22.  
  23. <?php $messages = cmsCore::getSessionMessages(); ?>
  24. <?php if ($messages) { ?>
  25. <div class="sess_messages">
  26. <?php foreach($messages as $message){ ?>
  27. <?php echo $message; ?>
  28. <?php } ?>
  29. </div>
  30. <?php } ?>
  31.  
  32. <?php cmsBody(); ?>
  33. <?php cmsModule('mainbottom'); ?>
  34. </div>
  35. <?php if ($mod_count['sidebar']) { ?>
  36. <div class="grid_3" id="sidebar"><?php cmsModule('sidebar'); ?></div>
  37. <?php } ?>
  38. </div>
sidebar1 — это левый сайтбар… все остальное дефлотное...
также у меня сетка 16 колоночная, но это не важно — саму суть думаю поймете...

возможные отображения:
— просто боди на весь грид
— боди и левый сатдар
— боди и правый сайтбар
— боди и два сайтбара вместе (забыл про него)))

Если в позиции ничего нет то пустого места не будет — всегда занят веся сетка грид)
То есть как заполните позиции так и будет на сайте — если позиция не заполнена то и выводиться не будет!)

Надеюсь что помог)
Я не профи делал для себя сам, может что и не правильно или не по феншую, но работает))
#9 19 июня 2012 в 03:14
Как вариант:

  1.  
  2.  
  3. <!-- Columns Container -->
  4.  
  5. <div id="page">
  6. <div class="clear"></div>
  7. <div id="mainbody" class="container_12">
  8. <?php if ($mod_count['leftbar']) { ?>
  9. <div class="grid_3" id="leftbar"><?php cmsModule('leftbar'); ?></div>
  10. <?php } ?>
  11. <div id="main" class="<?php
  12. if ($mod_count['sidebar']&&$mod_count['leftbar']) { ?>grid_6<?php }
  13. elseif ($mod_count['sidebar']||$mod_count['leftbar']) { ?>grid_9<?php } else { ?>grid_12<?php } ?>">
  14. <?php cmsModule('maintop'); ?>
  15. <?php $messages = cmsCore::getSessionMessages(); ?>
  16. <?php if ($messages) { ?>
  17. <div class="sess_messages">
  18. <?php foreach($messages as $message){ ?>
  19. <?php echo $message; ?>
  20. <?php } ?>
  21. </div>
  22. <?php } ?>
  23. <?php cmsBody(); ?>
  24. <?php cmsModule('mainbottom'); ?>
  25. </div>
  26. <?php if ($mod_count['sidebar']) { ?>
  27. <div class="grid_3" id="sidebar"><?php cmsModule('sidebar'); ?></div>
  28. <?php } ?>
  29. </div>
  30. </div>
  31.  
  32. <!-- Columns Container -->
  33.  
  34.  
При наличии грида, например,960.css
Сам Грид фреймворк можно сформировать под себя здесь, там 2 варианта, резина и фиксированный.
grids.heroku.com/
#10 19 июня 2012 в 08:18
У меня немного иначе так как левый и правый сайтбары имеют разную ширину, поэтому при наличии одного из сайтбаров и разная ширина основного тела, то есть проверка должна быть какой именно из сайтбаров присутствует)
на одно условие больше — но малина таже)
#11 20 февраля 2013 в 08:46
Посмотрите, у меня так как вам надо?
Сайт
Если да, выложу код.
#12 20 февраля 2013 в 12:23
Минона, почитайте эти записи, мне кажется там то что вам нужно, там для второй ветки системы но и на первой тоже работает.
#13 20 февраля 2013 в 15:14
День спамера-археолога…
#14 20 февраля 2013 в 20:30
Вот код для трех колоночного шаблона, все работает
  1.  
  2. $mod_count['left'] = $inPage->countModules('left');
  3. $mod_count['right'] = $inPage->countModules('right');
  4.  
  5. $is_left = cmsCountModules('left');
  6. $is_right = cmsCountModules('right');
  7.  
  8. if ($is_left && $is_right) {
  9. //включена левая и правая колонка
  10. $class = "span6";
  11. } else if ($is_left) {
  12. //включена только левая колонка
  13. $class = "span9";
  14. } else if ($is_right) {
  15. //включена только правая колонка
  16. $class = "span9";}
  17. else {
  18. //боковых колонок нет
  19. $class = "span12";}
  1.  
  2. <div id="mainbody" class="row">
  3. <?php if ($mod_count['left']) { ?>
  4. <div class="span3" id="left"><?php $inPage->printModules('left'); ?></div>
  5. <?php } ?>
  6. <div id="main" class="<?php echo $class; ?>">
  7. <?php $inPage->printModules('maintop'); ?>
  8.  
  9. <?php $messages = cmsCore::getSessionMessages(); ?>
  10. <?php if ($messages) { ?>
  11. <div class="sess_messages">
  12. <button class="close" data-dismiss="alert" type="button">&#215;</button>
  13. <?php foreach($messages as $message){ ?>
  14. <?php echo $message; ?>
  15. <?php } ?>
  16. </div>
  17. <?php } ?>
  18.  
  19. <?php if($inPage->page_body){ ?>
  20. <div class="component">
  21. <?php $inPage->printBody(); ?>
  22. </div>
  23. <?php } ?>
  24. <?php $inPage->printModules('mainbottom'); ?>
  25. </div>
  26. <?php if ($mod_count['right']) { ?>
  27. <div class="span3" id="right"><?php $inPage->printModules('right'); ?></div>
  28. <?php } ?>
  29. </div>
  30.  
#15 20 февраля 2013 в 20:32
Код взят из рабочего шаблона
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.