Как сделать | Верстка 2.X

 
Посетитель
small user social cms
Медаль
Сообщений: 462
Всем привет. Столкнулся с маленькой проблемкой верстки, может ваш свежий взгляд на ситуацию направит меня в нужном направлении.
Имеем два файла в шаблоне отвечающие за вывод контента и сайдбара(то что меня интересует):
— main.tpl.php (отвечает за вывод всего, поточнее отдельно сайдбар(блок В) и отдельно массив в котором выводятся блок А и Б)
— default_item.tpl.php (выводит только блок А и Б)

В первом выводятся сайдбар и массив выводящий второй файл, т.е. саму статью, и тут выскакивает моя проблема, хочу заверстать так как на примере, т.е. сайбдар и контент должны быть в одном контейнере, а фотография с заголовком и прочими нужными полями в другом.
Есть идеи?
Один из вариантов, вывести блок А в main.tpl.php, тем самым заверстав оставшиеся блоки Б и В без проблем. Возможно ли это?
Или вывести сайдбар в самом default_item.tpl.php, что, конечно же, сильно предпочтительнее, или и вовсе тут выводить свои виджетики отдельно от сайдбара, последнего просто скрыть в этом разделе.
Дописываю текст и понимаю в каком направлении копать - помогите вывести отдельно виджеты в самом default_item.tpl.php
Прикрепленные файлы:
howto_btfb9.jpg | 77.08 Кб | Скачали: 162
Редактировалось: 1 раз (Последний: 7 апреля 2017 в 20:59)
фаствпс 20-30к/сутки без проблем.
Продвигайся в соцсетях с умом.
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1902
Василич:
помогите вывести отдельно виджеты в самом default_item.tpl.php
Код PHP:
  1. <?php
  2. cmsCore::getInstance()->runWidgets();
  3. $this->widgets('position');
  4. unset($this->widgets);
  5. ?>
position - это имя позиции (в файле main.tpl.php не должно быть такой позиции для виджетов, иначе будут дублироваться); не забудьте позицию дописать в scheme.html
Реклама
cms
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 560
Вариант DK рабочий. Только есть одна проблема - функция runWidgets() будет вызываться два раза, а значит все виджеты будут тоже пересчитываться дважды. Это тормозит сайт и может создать проблемы с другими виджетами, если они что-то считают и пишут в БД, например.

Я делал хак ядра, чтобы минимизировать тормоза и убрать проблемы с остальными виджетами:
Меняем функцию runWidgets() в \system\core\core.php и добавляем опциональный параметр с именем позиции:
Спойлер
Это код для 2.7.1. Для 2.7.2 я ещё не смотрел. Там функция изменилась, нужно будет её откорректировать по тому же принципу. Изменённые мной строки выделены комментариями.

Вызов делаем по примеру DK, но с указанием позиции виджета runWidgets('position'):
Код PHP:
  1. <?php
  2. cmsCore::getInstance()->runWidgets('position');
  3. $this->widgets('position');
  4. unset($this->widgets);
  5. ?>
Этот хак не является оптимальным решением и не может быть включён "в коробку". Но при крайней необходимости позволяет вывести виджеты в любом месте шаблона.
Редактировалось: 1 раз (Последний: 8 апреля 2017 в 01:10)
Посетитель
small user social cms
Медаль
Сообщений: 462
Код PHP:
  1. [полез обнимать вот этих вот двоих]
фаствпс 20-30к/сутки без проблем.
Продвигайся в соцсетях с умом.
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.