if else и так далее

помогите разобраться

#1 12 ноября 2012 в 21:50
Впрос вытекает из этого поста
Имеем блоки A(слева), B(центральный), C(справа).
Если нет блка А, то блок В растягивается и занимает площадь бока А.
Если нет блка С, то блок В растягивается и занимает площадь бока С.
Если нет блков А и С, то блок В растягивается и занимает площадь боков А и С (то есть всю ширину).
Логически это выглядит так:
  1.  
  2. <?php
  3. if($this->hasWidgetsOn('left-top', 'left-center', 'left-bottom')){
  4. if($this->hasWidgetsOn('right-top', 'right-center', 'right-bottom')){
  5. $mainbar_width = '720px';
  6. }else{
  7. $mainbar_width = '960px';
  8. }
  9. }elseif($this->hasWidgetsOn('right-top', 'right-center', 'right-bottom')){
  10. if($this->hasWidgetsOn('left-top', 'left-center', 'left-bottom')){
  11. $mainbar_width = '720px';
  12. }else{
  13. $mainbar_width = '960px';
  14. }
  15. }else{
  16. $mainbar_width = '1200px';
  17. }
  18. ?>
  19.  
Думаю что понятно обьяснил.

Вопрос.
Как сделать: Если нет блока В, то блоки A и С растягиваются и пропроционально занимают всю ширину?

в PHP я совсем не силён (делаю методом научного тыка), поэтому прошу обьяснить на примере.
#2 13 ноября 2012 в 00:56

Вопрос.
Как сделать: Если нет блока В, то блоки A и С растягиваются и пропроционально занимают всю ширину?

SE7EN

как то так на скорую руку…
  1.  
  2.  
  3.  
  4. $l_sidebar = $this->hasWidgetsOn('left-top', 'left-center', 'left-bottom');
  5. $r_sidebar = $this->hasWidgetsOn('right-top', 'right-center', 'right-bottom');
  6. $center = $this->hasWidgetsOn('center-top', 'center-center', 'center-bottom');
  7.  
  8. if($center){
  9. if($l_sidebar){
  10. if($r_sidebar){
  11. $mainbar_width = '720px';
  12. }else{
  13. $mainbar_width = '960px';
  14. }
  15. }elseif($r_sidebar){
  16. if($l_sidebar){
  17. $mainbar_width = '720px';
  18. }else{
  19. $mainbar_width = '960px';
  20. }
  21. }else{
  22. $mainbar_width = '1200px';
  23. }
  24. }else{
  25. $left_width = '600px';
  26. $right_width = '600px';
  27. }
  28.  
  29.  
  30.  

сделать сразу проверку на наличие центра
если центра нет, то сайдбарам присвоить по 600 (поделив всю ширину пополам), ну или пропорционально… 400 и 800, 500 и 700, и т.д. ....

а если центр есть, то сделать проверки как и ранее

в живую не проверял!
#3 13 ноября 2012 в 01:19
неа не работает, не работает растяжение блоков А и С если отключен блок В
может я где накасячил, я вот так сделал.
  1.  
  2. $bottom1 = $this->hasWidgetsOn('bottom1');
  3. $bottom3 = $this->hasWidgetsOn('bottom3');
  4. $bottom2 = $this->hasWidgetsOn('bottom2');
  5. if($bottom2){
  6. if($bottom1){
  7. if($bottom3){
  8. $bottom2 = '400px';
  9. }else{
  10. $bottom2 = '800px';
  11. }
  12. }elseif($bottom3){
  13. if($bottom1){
  14. $bottom2 = '400px';
  15. }else{
  16. $bottom2 = '800px';
  17. }
  18. }else{
  19. $bottom2 = '1200px';
  20. }
  21. }else{
  22. $bottom1 = '600px';
  23. $bottom3 = '600px';
  24. }
  25.  
#4 13 ноября 2012 в 01:44
так и не будет
ты ж переприсвоил значения переменных cry

вначале эта запись говорит нам о том, что
$bottom1 = $this->hasWidgetsOn('bottom1');
если на позиции bottom1 есть виджеты (модули) для вывода, то значение $bottom1 = TRUE или 1

и мы с этим работаем

if($bottom1 если правда (true тобишь 1 )){
то делаем то что внутри
if($bottom3 если правда){
присвоить переменной значение
$bottom400 = '400px';
}else{если ложь
тогда делаем то что ниже
присваиваем переменной другое значение
$bottom800 = '800px';
}
}если ложь выходим, если не указанно инное
#5 13 ноября 2012 в 01:49
я же специально инициализировал две новых переменных

$left_width
$right_width


$l_sidebar, $r_sidebar, $center — служат только для проверок условий их НЕЛЬЗЯ перезаписывать!

значения присваиваются $left_width, $right_width, $mainbar_width!!! и их подставлять в определение classa или id diva
#6 13 ноября 2012 в 02:20
вот это у меня в файле scheme.html (кусок кода)
  1.  
  2. <table>
  3. <tr>
  4.  
  5. <td width="33%">
  6. {position:bottom1}
  7. </td>
  8. <td width="">
  9. {position:bottom2}
  10. </td>
  11. <td width="33%">
  12. {position:bottom3}
  13. </td>
  14.  
  15. </tr>
  16. </table>
  17.  
вот это в main.tpl.php (тоже кусок кода)
  1.  
  2. <div class="top1">
  3. <?php $this->widgets('bottom1'); ?>
  4. </div>
  5.  
  6. <div class="top2" style="width:<?php echo $top2_width; ?>">
  7. <?php $this->widgets('bottom2'); ?>
  8. </div>
  9.  
  10. <div class="top3">
  11. <?php $this->widgets('bottom3'); ?>
  12. </div>
  13.  
не могу никак догнать как сделать то что мне надо.(((
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.