26

Re: Вывод определенных блоков

Модест пишет:
<?php

    switch (Page::slug()) {
        case 'home':  echo Block::get('home-sidebar');  break;        
        case 'about': echo Block::get('about-sidebar'); break;        
        default: echo Block::get('sidebar'); break;
    }

?>

Здравствуйте. А как сделать так, чтобы конструкция была вида: «Если URL содержит» ? То есть данный код работает на странице about, но не работает на вложенной странице, например about/123

Какие изменения необходимо внести в данную конструкцию, чтобы блоки выводились и на вложенных страницах тоже?

Можно так:

<?php

    switch (Uri::segment(0)) {
        case 'home':  echo Block::get('home-sidebar');  break;        
        case 'about': echo Block::get('about-sidebar'); break;        
        default: echo Block::get('sidebar'); break;
    }

?>

Поделиться

27 (2014-08-21 15:38:20 отредактировано sergeyterr)

Re: Вывод определенных блоков

<?php

    switch (Page::slug()) {
        case 'home':  echo Block::get('home-sidebar');  break;       
        case 'about':
        case 'about/123':
        echo Block::get('about-sidebar'); break;       
        default: echo Block::get('sidebar'); break;
    }

?>

или

switch (Uri::segment(0))
    {
        case 'about':
             if(Uri::segment(1) == '123')
             {
                  ...................
             }
.............
    }

Спасибо говорим плюсиком в репутацию. Так виднее smile

Поделиться

28

Re: Вывод определенных блоков

sergeyterr, спасибо. А как можно сделать данную конструкцию универсальной. Ведь если есть 200 вложенных страниц, то вручную прописывать каждую весьма проблематично, да и код будет громоздкий. Есть возможность внести такие изменения, чтобы вывод блоков был на каждой странице, где есть определённое вхождение в URL?

То есть код видит, что в URL есть строчка about и, вне зависимости от того, что идёт после данной строчки, выводит блок?

Поделиться

29 (2014-08-22 03:48:08 отредактировано sergeyterr)

Re: Вывод определенных блоков

Может так?

switch (Uri::segment(0))
    {
        case 'about':
             if( isset(Uri::segment(1)) OR Uri::segment(1) != '')
             {
                  ...................
             }
.............
    }

правда не знаю будет ли работать конструкция  isset(Uri::segment(1)), нужно проверить

Спасибо говорим плюсиком в репутацию. Так виднее smile

Поделиться

30

Re: Вывод определенных блоков

<?php

switch (Uri::segment(0))
    {
        case 'about':
             if( isset(Uri::segment(1)) OR Uri::segment(1) != '')
             {
                  echo Block::get('about-sidebar'); break;   
             }
default: echo Block::get('sidebar'); break;
    }
?>

Полностью код должен выглядеть таким образом, я правильно понимаю?

Поделиться

31 (2014-08-22 08:10:53 отредактировано sergeyterr)

Re: Вывод определенных блоков

Наверное нет, скорее так

<?php

switch (Uri::segment(0))
    {
        case 'about':
             if( isset(Uri::segment(1)) OR Uri::segment(1) != '')
             {
                  echo Block::get('about-sidebar2');    // Вывод блока если есть подстраницы
             } else
             {
                  echo Block::get('about-sidebar1');    // Вывод блока если нет подстраниц
             }
        break;

        default: echo Block::get('sidebar'); break;
    }
?>

а такой код:

<?php

switch (Uri::segment(0))
    {
        case 'about':
                  echo Block::get('about-sidebar');
        break;

        default: echo Block::get('sidebar'); break;
    }
?>

выведет блок about-sidebar при любой подстранице about/... , а также при чистом about

В вашем варианте сайдбар выведется только при наличии подстраниц

Спасибо говорим плюсиком в репутацию. Так виднее smile

Поделиться

32

Re: Вывод определенных блоков

sergeyterr благодарю, всё работает.

Поделиться