Новости Joomla

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

Релиз безопасности Joomla 6.1.4 и Joomla 5.4.9

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

JoomShift - компонент переноса контента между Joomla сайтами.

‍ JoomShift - компонент переноса контента между Joomla сайтами.

JoomShift - компонент переноса контента между Joomla сайтами.Он позволяет экспортировать модули, меню, материалы, категории, пользовательские поля и пользователей в виде переносимых JSON/ZIP-файлов, а затем импортировать их в любую другую установку Joomla.

Возможности компонента:- Модули — полная настройка, назначение пунктов меню, позиционирование и содержимое SP Page Builder.
-Меню — иерархия родительских/дочерних элементов, типы элементов, ссылки, уровни доступа и параметры. Отсутствующие типы меню создаются автоматически, а элементы, указывающие на неустановленные компоненты, пропускаются с предупреждением.
-Статьи и категории — контент, метаданные, изображения и иерархия категорий.
-Пользовательские поля — группы полей, определения, ограничения по категориям и значения (включая поля с несколькими значениями) — экспортируются и автоматически создаются заново на целевом сайте.
-Пользователи — данные профиля, назначения групп и хэши паролей, чтобы учетные записи работали сразу после импорта.
-Кросс-версииJoomla - компонент адаптируется к различиям в схеме базы данных между версиями Joomla.
-Создан для крупных сайтов — постраничные списки (20/50/100/250строк) и автоматический пакетный экспорт для сайтов с более чем 500 элементами, поэтому он продолжает работать на обычном хостинге.
-Опция перезаписи — обновляет совпадающие элементы при повторном импорте вместо создания дубликатов.
-Drag-n-drop импорт с подробным отчетом о том, что было импортировано, обновлено или пропущено, и почему.

На момент написания заметки для скачивания необходима регистрация/логин на сайте разработчика.

-Joomla Extensions Directory-Страница расширения#joomla#расширения

Модуль joomLab JS Ajax Cart позволит организовать в Вашем интернет-магазине на компоненте JoomShopping удобную AJAX корзину с возможностью добавлять товары и изменять их количество без перезагрузки страницы.

Модуль joomLab JS Ajax Cart позволит организовать в Вашем интернет-магазине на компоненте JoomShopping удобную AJAX корзину с возможностью добавлять товары и изменять их количество без перезагрузки страницы.

Кроме этого, в состав пакета установки входит плагин, который позволяет выводить атрибуты товара в список всех товаров, менять эти атрибуты и добавлять товар в корзину из списка товаров. Если атрибутов много, то их можно выводить в всплывающем (модальном окне).

В модуле предусмотрено 2 макета дизайна для Bootstrap и UIkit и максимальная кастомизация для переопределения макетов в шаблон.Демо расширенияСтраница расширения

Видео в Telegram

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

moonaway

  • Осваиваюсь на форуме
  • 26
  • 0 / 0
Всем привет!
Верстаю модуль вывода данных по тегам на основе оригинального запроса Joomla (libraries\src\Helper\TagsHelper.php) - getTagItemsQuery(), нужно переписать запрос с дополнительными параметрами.

Что надо?

ЛИМИТЫ И СОРТИРОВКА
Внедрить лимит на вывод каждого типа контента.
Лимит должен быть не общий на весь массив данных, как например, на вывод массива из 5 значений. А лимит должен быть на каждый тип контента (com_content.article, com_contact.contact, com_content.category, com_contact.category, com_banners.banner, com_banners.category), где мы ограничиваем, например, до 5 значений КАЖДОГО типа.
+ Переделываем сортировку, чтобы она работала ВНУТРИ вывода КАЖДОГО типа контента.

УТОЧНЕНИЕ КАТЕГОРИЙ
Для типов контента com_content.article, om_contact.contact, com_banners.banner сделать уточнение из каких ID категорий внутри брать данные

СТРУКТУРА МАССИВА
В итоге мы должны получать двумерный массив данных, внутри которого были бы массивы для каждого типа контента с сортировкой и ограничением количества выводимых значений.

stdClass Object (
    [com_contact.contact] => Array (
      [О] => stdClass Object (
         [type_alias] => com_contact.contact
         [content_item_id] => 6
         [core_content_id] => 66
         [match_count] => 1
         [tag_date] => 2021-03-17 15:57:25
         [core_title] => sample title
         [core_params] => {..........}
         [core_alias] => sample-alias
         [core_state] => 1
         [core_access] => 1
         [core_metadata] => {"robots":"","rights":""}
         [core_created_user_id] => 42
         [core_created_by_alias] =>
         [core_created_time] => 2020-09-14 07:54:33
         [core_images] =>
         [core_modified_time] => 2021-03-17 12:57:25
         [core_language] => *
         [core_catid] => 4
         [core_publish_up] => 0000-00-00 00:00:00
         [core_publish_down] => 0000-00-00 00:00:00
         [content_type_title] => Contact
         [router] => ContactHelperRoute::getContactRoute
         [author] => Super User
      )
      [1] => stdClass Object (
         [key] => value
         ...
      )
      [2] => stdClass Object (
         [key] => value
         ...
      )
      [3] => stdClass Object (
         [key] => value
         ...
      )
   )
   [com_content.article] => Array (
   ...
   )
   [com_banners.banner] => Array (
   ...
   )
   [com_contact.category] => Array (
   ...
   )
   [com_content.category] => Array (
   ...
   )
   [com_banners.category] => Array (
   ...
   )
)


Сейчас запрос к БД формируется так, что в результате даёт просто общую простыню всех материалов....

Код
SELECT
m.type_alias,
m.content_item_id,
m.core_content_id,
count(m.tag_id) AS match_count,
MAX(m.tag_date) as tag_date,
MAX(c.core_title) AS core_title,
MAX(c.core_params) AS core_params,
MAX(c.core_alias) AS core_alias,
MAX(c.core_state) AS core_state,
MAX(c.core_access) AS core_access,
MAX(c.core_metadata) AS core_metadata,
MAX(c.core_created_user_id) AS core_created_user_id,
MAX(c.core_created_by_alias) AS core_created_by_alias,
MAX(c.core_created_time) as core_created_time,
MAX(c.core_images) as core_images,
CASE WHEN c.core_modified_time = '0000-00-00 00:00:00' THEN c.core_created_time ELSE c.core_modified_time END as core_modified_time,
MAX(c.core_language) AS core_language,
MAX(c.core_catid) AS core_catid,
MAX(c.core_publish_up) AS core_publish_up,
MAX(c.core_publish_down) as core_publish_down,
MAX(ct.type_title) AS content_type_title,
MAX(ct.router) AS router,
CASE WHEN c.core_created_by_alias > ' ' THEN c.core_created_by_alias ELSE ua.name END AS author
FROM #__contentitem_tag_map AS m
INNER JOIN
#__ucm_content AS c
ON m.type_alias = c.core_type_alias
AND m.core_content_id = c.core_content_id
AND c.core_state IN (1)
AND (c.core_publish_up = '0000-00-00 00:00:00' OR c.core_publish_up <= '2021-07-05 17:13:33')
AND (c.core_publish_down = '0000-00-00 00:00:00' OR c.core_publish_down >= '2021-07-05 17:13:33')
INNER JOIN #__content_types AS ct ON ct.type_alias = m.type_alias
LEFT JOIN #__categories AS tc ON tc.id = c.core_catid
LEFT JOIN #__users AS ua ON ua.id = c.core_created_user_id
WHERE
m.tag_id IN (10,11)
AND (c.core_catid = 0 OR tc.published = 1)
AND `c`.`core_language` IN ('en-GB', '*')
AND m.type_alias IN ('com_content.article','com_contact.contact','com_content.category','com_contact.category','com_banners.banner','com_banners.category')
AND c.core_access IN (0,1,2,3,6)
GROUP BY m.type_alias, m.content_item_id, m.core_content_id, core_modified_time, core_created_time, core_created_by_alias, author
ORDER BY MAX(`c`.`core_title`) ASC
« Последнее редактирование: 06.07.2021, 17:04:01 от moonaway »
*

moonaway

  • Осваиваюсь на форуме
  • 26
  • 0 / 0
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться