Новости Joomla

Вышли релизы безопасности Joomla 6.0.4 и Joomla 5.4.4

Релиз безопасности Joomla 6.0.4 и Joomla 5.4.4

Проект Joomla! рад сообщить о выходе Joomla 6.0.4 и Joomla 5.4.4. Это релизы безопасности и исправления ошибок для серий 5.x и 6.x.

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

zahar_92

  • Захожу иногда
  • 315
  • 8 / 0
Всем привет!
У меня стандартный модуль новостей выводит материалы из трех категорий. В нем есть сортировка по дате и по порядку. По дате меня не устраивает, а по порядку он выводит не так, как он (порядок) установлен в менеджере материалов. Особенно плохо то, что он выводит в перемешку материалы из разных категорий.
Хотелось бы подкорректировать вывод так, чтобы он сначала выводил материалы из одной категории, потом из второй, потом из третей.
Кто знает как это сделать?

Сам код сортировки очень маленький, но я не уверен, что дело в нем..
Код
// Set ordering
$ordering = $params->get('ordering', 'a.publish_up');
$model->setState('list.ordering', $ordering);

if (trim($ordering) === 'rand()')
{
$model->setState('list.ordering', JFactory::getDbo()->getQuery(true)->Rand());
}
else
{
$direction = $params->get('direction', 1)? 'DESC' : 'ASC';
$model->setState('list.direction', $direction);
$model->setState('list.ordering', $ordering);
}
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Стандартные модули новостей, увы, не умеют группировать по категориям (то есть нельзя сделать категория1 - список материалов, категория2 - список). Все идет в общий массив и сортируется уже там
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

zahar_92

  • Захожу иногда
  • 315
  • 8 / 0
Хорошо, но он игнорирует сортировку по порядку менеджера материалов. В менеджере сортируешь одно,  а выводится другое.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Какой именно модуль используете? Последних материалов или материалы категорий? У них разные настройки но вроде в каждом есть опция "сортировать по порядку ручному", просто она будет идти сквозная (сначала порядок одной категории потом другой, хотя могу ошибаться, давно не смотрел запрос)
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

zahar_92

  • Захожу иногда
  • 315
  • 8 / 0
Модуль Новости, т.к. он выводит не просто список ссылок, а анонс. В нем есть сортировка по порядку, но как-то криво работает. В менеджере я расположил материалы в нужном порядке, но выводятся они не так.
*

zahar_92

  • Захожу иногда
  • 315
  • 8 / 0
Может тогда подскажите как выстраить материалы по возрастанию ID категории каждого материала?
По сути у каждого материала есть категория с ID, как выстроить материалы по этому числу?
*

zahar_92

  • Захожу иногда
  • 315
  • 8 / 0
Может тогда подскажете как выстроить материалы по возрастанию ID категории каждого материала?
По сути у каждого материала есть категория с ID, как выстроить материалы по этому числу?
*

zahar_92

  • Захожу иногда
  • 315
  • 8 / 0
Народ, подскажите, пожалуйста, как переписать вывод модуля так, чтобы материалы сортировались по ID категории?
Вот код вывода материала
Код
<?php for ($i = 0, $n = count($list); $i < $n; $i ++) : ?>
<?php $item = $list[$i]; ?>
<div class="item">
<?php require JModuleHelper::getLayoutPath('mod_articles_news', '_item'); ?>

<?php if ($n > 1 && (($i < $n - 1) || $params->get('showLastSeparator'))) : ?>
<span class="article-separator"> </span>
<?php endif; ?>
</div>
<?php endfor; ?>
Вот эта переменная содержит ID категории
Код
$item->catid
Google говорит нужно использовать функцию  Array(), но у меня не достаточно знаний!((
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
https://myrusakov.ru/php-sort-marray.html
вот пример сортировки двумерного массива. пробуй.
сначала надо набить двумерный массив, чтобы был ключ ID категории.
Код
$array = array();
for ($i = 0, $n = count($list); $i < $n; $i ++) $array[] = array("cat" => $item->catid, "data" => $item);

далее, как в примере, потом пробуй вывести ещё через один цикл


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

*

zahar_92

  • Захожу иногда
  • 315
  • 8 / 0
За ответ, конечно, спасибо! Но если бы я разбирался в двумерных массивах, то не просил бы о помощи! К сожалению я не силен в этом. Все делаю с помощью Google..
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
хотя, наверно, логичнее было бы тупо свой модуль сделать, который средствами MySQL делает выборку уже с сортировкой, чтобы не извращаться )
Именно так, но писать код и тестировать чтобы отдать здесь готовое решение у меня желания, к сожалению нет.
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
вот пример для стандартного шаблона (default)

Код

defined('_JEXEC') or die;
$array = array();
foreach ($list as $item) $array[] = array("cat" => $item->catid, "data" => $item);

  usort($array, "compare"); // Вызываем пользовательскую сортировку
  function compare ($v1, $v2) {
    /* Сравниваем значение по ключу cat */
    if ($v1["cat"] == $v2["cat"]) return 0;
    return ($v1["cat"] < $v2["cat"])? -1: 1;
  }

?>

<div class="newsflash<?php echo $moduleclass_sfx; ?>">
<?php foreach ($array as $it) : ?>
<?php
$item=$it[data];
//var_dump($item);
require JModuleHelper::getLayoutPath('mod_articles_news', '_item'); ?>
<?php endforeach; ?>
</div>
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Попробуйте так: откройте файл XML модуля, найдите поле ordering, измените значение default  с "a.publish_up" на "a.catid, a.alias" и добавьте еще 1 option (вместо alias можете поставить другое поле)
Код
				<field
name="ordering"
type="list"
label="MOD_ARTICLES_NEWS_FIELD_ORDERING_LABEL"
description="MOD_ARTICLES_NEWS_FIELD_ORDERING_DESC"
default="a.catid, a.alias"
>
<option value="a.publish_up">MOD_ARTICLES_NEWS_FIELD_ORDERING_PUBLISHED_DATE</option>
...
<option value="a.catid, a.alias">MOD_ARTICLES_NEWS_FIELD_ORDERING_CAT_THEN_ALIAS</option>
</field>
В админке модуля выберите вариант по умолчанию или последний вариант.
« Последнее редактирование: 05.03.2018, 22:31:05 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

zahar_92

  • Захожу иногда
  • 315
  • 8 / 0
вот пример для стандартного шаблона (default)

Код

defined('_JEXEC') or die;
$array = array();
foreach ($list as $item) $array[] = array("cat" => $item->catid, "data" => $item);

  usort($array, "compare"); // Вызываем пользовательскую сортировку
  function compare ($v1, $v2) {
    /* Сравниваем значение по ключу cat */
    if ($v1["cat"] == $v2["cat"]) return 0;
    return ($v1["cat"] < $v2["cat"])? -1: 1;
  }

?>

<div class="newsflash<?php echo $moduleclass_sfx; ?>">
<?php foreach ($array as $it) : ?>
<?php
$item=$it[data];
//var_dump($item);
require JModuleHelper::getLayoutPath('mod_articles_news', '_item'); ?>
<?php endforeach; ?>
</div>
Ты волшебник! Спасибо! Работает так, как нужно! :D
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Какой файл управляет выводом страницы для редактирования материалов с фронта?

Автор alnorton

Ответов: 2
Просмотров: 2838
Последний ответ 23.05.2024, 21:43:41
от alnorton
Модуль вывода похожих материалов с картинками

Автор Besa

Ответов: 3
Просмотров: 4781
Последний ответ 20.04.2023, 20:25:50
от beliyadm
В админке не отображаются стили при редактировании материалов

Автор Аня

Ответов: 0
Просмотров: 1336
Последний ответ 28.11.2022, 15:33:14
от Аня
Вывод материалов блогом с фильтром по меткам

Автор muzzy76

Ответов: 7
Просмотров: 1909
Последний ответ 06.10.2022, 13:57:56
от muzzy76
Добавление поля в категорию материалов - Yootheme Pro

Автор Missile

Ответов: 3
Просмотров: 1186
Последний ответ 14.04.2021, 02:20:20
от Alex Revo