Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 5 Ответов
  • 2514 Просмотров
*

rixter

  • Захожу иногда
  • 95
  • 9 / 0
  • Кто юзал мой писи?
В поиске не нашел. Есть смысл выкладывать свое решение или и кто-нибудь может поделиться ссылкой?
Задача: вывести модуль между определенными материалами в макете блога, например, после 1-го материала.



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

Недостатки:
- использование альтернативного макета категории, если нужно разделить категории где нужно выводить, а где нет. Альтернативный макет у меня заработал только с привязкой к меню.
- номера материалов после которых выводить, а также, если нужно, номера страниц задаются непосредственно в макете. А хотелось бы в настройках модуля.
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Заработал только после привязка к пункту меню потому, что это разные понятия в Joomla «альтернативный макет материала/категории» и «альтернативный макет пункта меню». Причём пункт меню всегда приоритетней. Чтобы эти настройки не вбивать напрямую в шаблоне, можно их забивать в любое понравившееся поле категории, а в макете категории отлавливать и вставлять где надо.
В общем, пишите своё решение, доработаем. ;-)
*

rixter

  • Захожу иногда
  • 95
  • 9 / 0
  • Кто юзал мой писи?
Shustry, буду благодарен за помощь  ^-^

Я сделал следующим образом. По совету дяди Феди буду указывать позицию для модуля. Можно и конкретно модуль, но решил позицию, чтобы выводить или mod_custom, или mod_banners.

1. В файл templateDetails.xml шаблона добавляю позицию.
Код
<position>inblog</position>

2. В админке создаю модуль "HTML код" на позицию inblog. С проверочным текстом "Здесь будет реклама".

3. Вношу следующие изменения в blog.php из templates\шаблон\html\com_content\category
В моем случае за вывод постов отвечает код
Код: php
<?php if (!empty($this->lead_items)) : ?>
<ul class="post">
<?php foreach ($this->lead_items as &$item) : ?>
<li><?php $this->item = &$item; echo $this->loadTemplate('item');?></li>
<?php endforeach; ?>
</ul><!-- .post -->
<?php endif; ?>

Допиливаю. В оригинальном blog.php переменная $leadingcount была, возвращаю ее в свой макет.
В предпросмотре пояснения к коду вот в таком ввиде &#1082;&#1086;&#1083; поэтому вынесу сюда.
   $limit - кол-во материалов на страницу
   $pagecurrent - номер текущей страницы
   $numintro - Массив с номерами материалов, после которых выводить рекламный блог. Отсчет с нуля.
   $numpage - Массив с номерами страниц на которых выводить рекламу. Для всех страниц оставить пустым. Отсчет с единицы.
Код: php
<?php 
$leadingcount = 0;
$limit = $this->pagination->limit;
$pagecurrent = $this->pagination->get('pages.current');
$numintro = array(0, 1);
$numpage = array();
 ?>
<?php if (!empty($this->lead_items)) : ?>
<ul class="post">
<?php foreach ($this->lead_items as &$item) : ?>
<li><?php $this->item = &$item; echo $this->loadTemplate('item');?></li>
<?php if (!empty($numpage)) {
if (in_array($pagecurrent, $numpage)) {
if (in_array($leadingcount, $numintro)) { ?>
<li class="adbox"><?php $modules =& JModuleHelper::getModules('inblog');
foreach ($modules as $module){
echo JModuleHelper::renderModule($module);
}?></li>
<?php }
}
} else {
if (in_array($leadingcount, $numintro)) { ?>
<li class="adbox"><?php $modules =& JModuleHelper::getModules('inblog');
foreach ($modules as $module){
echo JModuleHelper::renderModule($module);
}?></li>
<?php }
}
$leadingcount++;
?>
<?php endforeach; ?>
</ul><!-- .post -->
<?php endif; ?>

Вот и все. Облагородить бы, чтобы номера материалов и страниц вносить в настройках категории. Например добавить поля text и через запятую указывать номера, а потом, наверное, превращать в массив с помощью explode.

По поводу альтернативного макета. Есть у меня категория "Новости" с пунктом меню. Если создать newsblog.php и newsblog_item.php из blog.php и blog_item.php в templates\шаблон\html\com_content\category, и выбрать новый макет в настройках категории, то ничего не меняется, используется blog.php. А если добавить newsblog.xml, создав его из оригинального blog.xml с правкой заголовка и описания и в п.меню "Новости" выбрать новый макет, все работает. Делал по этой инструкции.

Получается из-за п.меню не хотел работать "альтернативный макет категории", пришлось создать "альтернативный пункт меню", правильно я понимаю, не перепутал понятия :)?
« Последнее редактирование: 05.04.2013, 16:15:26 от rixter »
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
В настройках категории в основных параметрах поле «примечание» практически не используется. Можете его зарезервировать для передачи своих данных. Например, я забил 100,500,inblog (номер материала, номер страницы и имя позиции уж тогда опционально). Далее в blog.php вызываем:
Код: php
$myparams = explode (',', $this->category->note);
Далее, думаю всё понятно.
*

rixter

  • Захожу иногда
  • 95
  • 9 / 0
  • Кто юзал мой писи?
Спасибо, буду пробовать.
Я вчера уже пришел к этому, точнее нашел Управление заголовками (title) материалов и категорий J2.5!
Но не могу, четко сформулировать тз с привязкой к возможностям.
Ладно, кое какие мысли уже есть и вы подсказали, как что-то получится отпишусь.

*

rixter

  • Захожу иногда
  • 95
  • 9 / 0
  • Кто юзал мой писи?
Ну что же, результат есть. Думаю это финиш, ну разве, что придет гуру php и предложит как улучшить/упростить код, т.к. я не программер вообще.
Приобретенные возможности:
- Вывод рекламного блока (далее РБ) указывается независимо для каждой категории.
- Вывод РБ на любой странице блога категории.
- Вывод РБ после любого материала, указывается для всех страниц блога категории.
- По желанию вывод/не вывод РБ после последнего материала на странице.

По совету от Shustry используем поле "Примечание" в настройках категории. Примеры заполнения:
1,2 - вывод РБ после 1-го и 2-го материалов на всех страницах блога категории.
1,2|1,2 - вывод РБ после 1-го и 2-го материалов на 1-й и 2-й страницах блога категории.

Первые два пункта из предыдущего сообщения остаются без изменений.

3. Повторюсь на всякий случай.  Вношу следующие изменения в blog.php из templates\шаблон\html\com_content\category
В моем случае за вывод постов отвечает код
Спойлер
[свернуть]

Вариант 1. Без ограничений.
Спойлер
[свернуть]

Вариант 2. РБ не выводится после последнего материала. Например, если указан вывод после 1,2,3 материалов, а на странице всего 2 материала, РБ будет выведен только после 1-го и 2-го.
Спойлер
[свернуть]
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

как выводить категории на главной странице.

Автор makarovse

Ответов: 7
Просмотров: 2848
Последний ответ 03.04.2022, 19:50:42
от THE KILLERS
Как вывести все категории VirtueMart 3 второго уровня списком?

Автор Damarkuzz

Ответов: 0
Просмотров: 1234
Последний ответ 06.07.2020, 18:58:23
от Damarkuzz
Перенаправляет на родителя при несуществующей категории, а надо на 404

Автор mishapod

Ответов: 0
Просмотров: 1321
Последний ответ 08.01.2019, 12:06:16
от mishapod
Размещение материала сеткой

Автор Ярослав163

Ответов: 5
Просмотров: 1220
Последний ответ 26.03.2018, 14:45:34
от Ярослав163
В мобильной версии товары в категории сужаются слишком сильно

Автор salikh

Ответов: 1
Просмотров: 1471
Последний ответ 06.11.2016, 01:39:07
от salikh