Виджет в шаблон?

Можно ли вставить виджет прямо в шаблон кодом

 
Посетитель
small user social cms
Медаль
Сообщений: 410
Если кто делал или знает, как?
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1545
Код PHP:
  1. <?php $this->widgets('top', false, 'wrapper_plain'); ?>
Это код из шаблона вообще то).
Реклама
cms
Посетитель
small user social cms
Медаль
Сообщений: 410
Lora:

Код PHP:
  1.  
Это код из шаблона вообще то).
Спасибо smile тупанул чутка
Посетитель
small user social cms
Медаль
Сообщений: 410
Я имел ввиду в шаблон для отдельной страницы. На главной понятно в шаблон ставишь работает. Попробовал вставить в шаблон отдельной страницы не пашет sad Может что не так делаю?
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 560
Рачей:
Попробовал вставить в шаблон отдельной страницы не пашет Может что не так делаю?
Как минимум, делаете "не так" то, что не приводите конкретного кода своего варианта (что куда вставляете).

В Двойке нет возможности находу добавлять позиции виджетов на страницу. Зато есть возможность указать другой "скелет" (файл основного шаблона) с помощью метода cmsTemplate->setLayout($layout)/
Пример использования этого метода можете посмотреть при подключении шаблона Админки в /system/controllers/admin/frontend.php

Если у Вас шаблон main.tpl.php очень навороченный, то копировать его несколько раз для разных страниц, а потом поддерживать всё это в актуальном виде может оказаться затруднительно. Тогда проще добавить все нужные позиции виджета сразу в main.tpl.php.
Посетитель
small user social cms
Медаль
Сообщений: 410
мне нужно вставить виджет в отдельную страницу контента.. то есть не в общий шаблон, а в страницу для одного вида контента.
совет вставить <?php $this->widgets('top', false, 'wrapper_plain'); ?> не дал результат. если это вставить в общий шаблон, работает... я в схеме вынес в низ эту позицию шаблона что бы туда виджет можно было накинуть.. на главной работает в теле шаблона одного вида контента нет... вот задача, как его туда пристроить!? я могу там вывести по схеме общего шаблона, но мне надо вывести между картинкой (превью) и текстом... через шаблон как таковой не получится.. надо как-то в тело шаблона вкроить
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1902
тыц
Посетитель
small user social cms
Медаль
Сообщений: 410
шэльдэ бердэ бельдэ:

спасибо! то что надо
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 560
Рачей:
<?php $this->widgets('top', false, 'wrapper_plain'); ?> не дал результат
Всё правильно. Виджеты обрабатываются только один раз после того, как готовится страница контента. Это сделано для того, чтобы виджеты могли работать с данными, полученными от контроллера, обрабатывающего текущую страницу сайта. Чтобы это изменить, нужно переделать подготовку и вывод виджетов, что довольно сложно.

Из готовых решений я видел Поле - позиция для виджетов. Как оно работает и подойдёт ли Вам - не знаю. Минусы этого решения его автор шэльдэ бердэ бельдэ честно описал в своём посте.
Насколько я понимаю, без правок в ядре такое решение будет дважды обрабатывать (но не выводить) не только один этот виджет, а вообще все виджеты страницы, что приводит к лишним тормозам. А если таким образом на странице выводится несколько полей с виджетами, то, видимо, все виджеты будут пересчитываться многократно.

Для себя я нашёл такой, может не сильно красивый, но рабочий вариант.
1. Как и в поле от шэльдэ бердэ бельдэ создал в схеме scheme.html новую позицию, чтобы можно было размещать туда виджеты в Админке:
Код PHP:
  1. {position:main-body-top}
2. Добавил в метод cmsCore->runWidgets() возможность вывода только виджетов в указанной позиции:
Код
Комментариями // >> WebMan и // << WebMan я выделил все свои изменения.

3. В шаблоне записи (или любом другом шаблоне) прописываю код вывода виджетов в желаемой позиции, что-то типа такого:
Код PHP:
  1. <?php cmsCore::getInstance()->runWidgets('main-body-top'); ?>
  2. <div class="widget_ajax_wrap" id="widget_pos_main-body-top"><?php $this->widgets('main-body-top'); ?></div>
  3. <?php unset($this->widgets); ?>
Это решение, возможно, менее универсально, чем поле для вывода виджета, но имеет большой плюс: виджеты страницы, кроме тех, которые выводятся в этой позиции, просчитываются только один раз.
Посетитель
small user social cms
Медаль
Сообщений: 410
WebMan:

Это решение, возможно, менее универсально, чем поле для вывода виджета, но имеет большой плюс: виджеты страницы, кроме тех, которые выводятся в этой позиции, просчитываются только один раз.
это правильнее
Посетитель
small user social cms
Сообщений: 2
Спасибо! ... то что надо.

Может кому пригодится визуальный пример (см. под спойлером)
Спойлер
Готов к конструктивной критике! Если чем то не угодил... говори по делу!
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 560
Спасибо за наглядность, vadimilin.
З.Ы. Спрячьте свою почту в профиле, а то спам-боты замучают.
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.