1

Тема: Вывод определенных блоков

STUFF пишет:

Нечего не получается.. вот как это делалось в предшественнике монстры

<?php 
$params = getParams();
$page = '[b]нужная страница[/b]';
if (($params[0] == $page && $params[1] == '') || ($params[1] == $page)) {
    getBlock('[b]название блока[/b]');
}
?>

Можно ли что-то подобное использовать в Монстре?

<?php
if (Page::slug() == 'about') {
   echo Block::get('my_about_block_here');
}
?>
Follow me: Twitter | GitHub | Coderwall

Стань спонсором проекта.

Сайт Awilum

Поделиться

2 2012-11-26 11:52:34 (2012-11-26 12:03:26 отредактировано STUFF)

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

Awilum Спасибо! как знал что в Монстре это будет еще проще сделать! smile


А можно в него как-то еще и под страницы включить? ну тоесть чтобы нужный блок отображался еще и на всех дочерних страницах, указанной страницы? smile

Поделиться

3

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

уверен и такой вариант должен быть.. smile ?

Поделиться

4

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

нужный блок отображался еще и на всех дочерних страницах, указанной страницы

для всех дочерних страниц создать индивидуальный шаблон на котором будет отображаться этот нужный блок только для них, а сам этот шаблон назначить нужным дочерним страницам.

Follow me: Twitter | GitHub | Coderwall

Стань спонсором проекта.

Сайт Awilum

Поделиться

5

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

Awilum Вариант, Спасибо!

Поделиться

6 (2012-11-26 13:30:22 отредактировано olsv64)

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

проверил работает smile

<?php
if (Page::slug() == 'home') {
   echo Block::get('home-sidebar');
} 
elseif (Page::slug() == 'about') {
    echo Block::get('about-sidebar');
}
else {
    echo Block::get('sidebar');
}
?>

наверное и с чанками также можно делать

Сайт olsv64

Поделиться

7

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

olsv64 у вас получилось так: на Главной - один блок, О нас - второй блок, на дочерних О нас - третий блок. И здесь все отлично, работает. А как из всего этого исключить главную? чтоб на ней нечего не было? smile

Я сделал так

<?php
if (Page::slug() == 'home') {
} 
elseif (Page::slug() == 'about') {
    echo Block::get('about-sidebar');
}
else {
    echo Block::get('sidebar');
}
?>

просто убрал echo Block::get('home-sidebar');, работать, то работает, но насколько это правильный вариант?

Поделиться

8

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;
    }
?>
Follow me: Twitter | GitHub | Coderwall

Стань спонсором проекта.

Сайт Awilum

Поделиться

9

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

Awilum пишет:
<?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;
    }
?>

Опишите пожалуйста действия данного кода, что есть что. Добавлю а FAQ

Поделиться

10

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

Не меняя шаблона выводит в сайд бар блок соответствующий странице.

Поделиться

11

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

newbie, Конструкции выбора

Follow me: Twitter | GitHub | Coderwall

Стань спонсором проекта.

Сайт Awilum

Поделиться

12

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

как задачка на будущее )) хорошо бы дать пользователю возможность в админке, на странице настройки страницы, выбрать чекбоксами какие из блоков выводить или какой.  Это позволит один раз прописать в шаблоне место вывода блока, а потом указывать что там выводить.
А если дальше пойти, необходима группа блоков, т.е например есть макет 3-х колоночный макет. Слева и справа выводим информацию. В одной пропишем

<?php  echo BlockGroup::get('Group1'); ?>
а в другой колонке <?php  echo BlockGroup::get('Group2'); ?>

А далее не паримся и просто выбираем что показывать а что нет, т.к сегодня только новости справа, а завтра захочу контакты вставить.. например.

Думаю хорошая будет "фича" для монстра

Поделиться

13

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

Awilum пишет:
<?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;
    }
?>

этот код работает с PHP 5.3
а этот и с PHP 5.2

<?php
if (Page::slug() == 'about') {
   echo Block::get('my_about_block_here');
}
?>

Сайт olsv64

Поделиться

14

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

имеет ли право на существование такой код?

<?
$page = Page::slug();
if($page == 'home') Chunk::get(false);
else Chunk::get('sidebar');
?>

Сайт olsv64

Поделиться

15

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

olsv64, нет. первый параметр это  string $name  Chunk name

Follow me: Twitter | GitHub | Coderwall

Стань спонсором проекта.

Сайт Awilum

Поделиться

16 (2013-01-06 12:33:58 отредактировано olsv64)

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

тогда как написать, чтобы на главной сайдбар не отображался? может быть оставить пустые скобки?
или такой код тоже наверное неправильный

<?php
if (Page::slug() == 'home') { }
else {
    echo >Snippet::get('slider-plugins');
}
?>

Сайт olsv64

Поделиться

17

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

if (Page::slug() == 'some_slug_here') {
// отобразить что то тут
}
Follow me: Twitter | GitHub | Coderwall

Стань спонсором проекта.

Сайт Awilum

Поделиться

18

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

и все-таки как мне исправить код, чтобы на главной не было сайдбара? или создавать отдельный шаблон?

<?
if (Page::slug() == 'home') Chunk::get();
else Chunk::get('sidebar-blog');
?>

Сайт olsv64

Поделиться

19

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

olsv64, Ok, оставь пустоту

<?
if (Page::slug() == 'home') {
   // ....
} else {
   Chunk::get('sidebar-blog');
}
?>

Follow me: Twitter | GitHub | Coderwall

Стань спонсором проекта.

Сайт Awilum

Поделиться

20

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

Awilum пишет:

olsv64, Ok, оставь пустоту
<?
if (Page::slug() == 'home') {
   // ....
} else {
   Chunk::get('sidebar-blog');
}
?>

?

<?
if (Page::slug() != 'home') {
   Chunk::get('sidebar-blog'); 
}
?>

Поделиться

21

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

ну да, а ты знаешь что у него там за остальной код, какие и сколько развилок ? он же кусочек привел на сколько я понял.

Follow me: Twitter | GitHub | Coderwall

Стань спонсором проекта.

Сайт Awilum

Поделиться

22 (2013-01-06 17:43:16 отредактировано olsv64)

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

спасибо за консультацию, в конце концов, возможно, это пригодится и другим пользователям
а почему для чанков echo не используется?

Сайт olsv64

Поделиться

23

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

Потому что реализация разная у чанков и у снипетов. Снипеты еще используются и в шорткодах а чанки нет.

Follow me: Twitter | GitHub | Coderwall

Стань спонсором проекта.

Сайт Awilum

Поделиться