Новости Joomla

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

Релиз безопасности Joomla 6.1.3 и Joomla 5.4.8

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

👩‍💻 WT Otpravkapochtaru - библиотека сервиса Отправка Почты России для Joomla-разработчиков.

👩‍💻 WT Otpravkapochtaru - библиотека сервиса Отправка Почты России для Joomla-разработчиков.

Joomla 5+ пакет для интеграции с API Почты России: нормализация данных, расчёт доставки, создание отправлений, партии, документы, возвраты, поиск отделений, справочники и SOAP-отслеживание.

v.3.0.0. Что нового?
Это дальнейшее развитие ранее закрытой Joomla-библиотеки для работы с API сервиса Отправка (для бизнеса) Почты России. Поэтому версия не 1.0.0, а 3.0.0.

Сейчас эта библиотека ушла от собственных реализаций и стала Joomla-обёрткой известного PHP SDK от Lapay Group.

Возможности библиотеки.
- получение настроек аккаунта, точек сдачи и текущего остатка запросов к API;
- нормализация адресов, ФИО и телефонов перед созданием отправления;
- расчёт тарифа и срока доставки;
- создание, поиск, изменение, удаление и возврат заказов в состояние «Новые»;
- проверка надёжности получателя;
- создание партий, просмотр партий и заказов внутри партии;
- генерация пакета печатных документов и формы Ф103;
- создание, изменение и удаление возвратных отправлений;
- поиск отделений по индексу, адресу и координатам, получение сервисов отделения;
- локальный список стран;
- SOAP-отслеживание операций по РПО и работа с билетами пакетного трекинга.

👩‍💻 Joomla-возможности.
В пакете библиотеки WT Otpravkapochtaru есть поля Joomla Form для расширений. Они позволяют работать в интерфейсе Joomla с некоторыми типами данных, получаемых по API из вашего личного кабинета в ЛК Почты России для бизнеса.
На данный момент в библиотеке доступны 3 поля списков, которые отображают доступные в аккаунте ОПС, типы и категории отправлений.
Поддерживаются зависимые списки: значение одного поля обновляется при изменении другого.

Системные требования.
Системные требования в основном связаны с системными требованиями апстрима библиотеки - LapayGroup PHP SDK.
- Joomla 5+
- PHP 8.3+
- Расширения PHP:
-- ext-mbstring
-- ext-simplexml
-- ext-soap (опционально, для трекинга)
-- ext-zip

Ссылки:
- Страница расширения
- GitHub библиотеки и документация

@joomlafeed

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

Gerostrat

  • Захожу иногда
  • 374
  • 2 / 0
  • Свидетель чайной ложки
Я использую модуль, чтобы выводить в статье ссылки на статьи, которые схожи за тематикой, как бы создавая перелинковку между статьями и образуя своеобразный "семантический кокон", как его называют. Полезно и логично для SEO.

Модуль подбирает 15 статей, я из них вытягиваю эти ссылки по 1-й и вставляю через каждые 10 абзацев в виде "Читайте также". Очень даже неплохо получается, если правильно статьям присваивать метки.

Есть разный способ получения этого списка. Брать статьи только у которых совпадают ВСЕ метки, или только половина, или хотя бы одна.
Так же и вывод - либо в случайном порядке, либо по количеству совпадений меток у материалов, либо же комбинация этих двух.

Если поставить в случайном порядке – ссылки будут каждый раз выводиться разные на одной и той же странице. Т.е. обновил - ссылки поменялись. А если поставить по количеству совпадений – ссылки не будут меняться, но... всех статей. Т.е. в любой статье с одинаковыми метками ссылки будут сверху вниз по статье идти одни и те же. Что тоже не прикольно.

В чём вопрос. Как бы его так сделать, чтобы модуль работал по принчипу, что ссылки подбираются не случайно, но при этом для каждой статьи они брались только из статей, которые были опубликованы ДО этой статьи.

Т.е. есть статьи А1, А2, А3,... А20. Публиковались они в таком же порядке. У всех у них одинаковые метки.

Как сделать, чтобы в статье А4 показывались только ссылки на статьи А3, А2 и А1. В статье А10, только А9, А8 и ниже (более раннеопубликованные).

 ^-^
*

sivers

  • Живу я здесь
  • 2626
  • 363 / 0
Взять ИД текущего материала, по нему вытянуть дату публикации материала. Далее, либо добавить условие в запрос модуля, либо добавить проверку по дате в цикл вывода материалов.

Если сможете поправить запрос модуля, то можно и не вытаскивать дату на первом этапе, а вставить подзапрос.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Gerostrat

  • Захожу иногда
  • 374
  • 2 / 0
  • Свидетель чайной ложки
Я так понимаю, что если делать это в запросе модуля, то это где-то тут

Код
$db         = JFactory::getDbo();
$user       = JFactory::getUser();
$groups     = implode(',', $user->getAuthorisedViewLevels());
$matchtype  = $params->get('matchtype', 'all');
$maximum    = $params->get('maximum', 5);
$ordering   = $params->get('ordering', 'count');
$tagsHelper = new JHelperTags;
$prefix     = $option . '.' . $view;
$id         = $app->input->getInt('id');
$now        = JFactory::getDate()->toSql();
$nullDate   = $db->getNullDate();

$tagsToMatch = $tagsHelper->getTagIds($id, $prefix);

if (!$tagsToMatch || $tagsToMatch === null)
{
return array();
}

$tagCount = substr_count($tagsToMatch, ',') + 1;

$query = $db->getQuery(true)
->select(
array(
$db->quoteName('m.core_content_id'),
$db->quoteName('m.content_item_id'),
$db->quoteName('m.type_alias'),
'COUNT( ' . $db->quoteName('tag_id'). ') AS ' . $db->quoteName('count'),
$db->quoteName('ct.router'),
$db->quoteName('cc.core_title'),
$db->quoteName('cc.core_alias'),
$db->quoteName('cc.core_catid'),
$db->quoteName('cc.core_language'),
$db->quoteName('cc.core_params'),
)
);

$query->from($db->quoteName('#__contentitem_tag_map', 'm'));

$query->join('INNER', $db->quoteName('#__tags', 't'). ' ON m.tag_id = t.id')
->join('INNER', $db->quoteName('#__ucm_content', 'cc'). ' ON m.core_content_id = cc.core_content_id')
->join('INNER', $db->quoteName('#__content_types', 'ct'). ' ON m.type_alias = ct.type_alias');

$query->where($db->quoteName('m.tag_id'). ' IN (' . $tagsToMatch . ')');
$query->where('t.access IN (' . $groups . ')');
$query->where('(cc.core_access IN (' . $groups . ') OR cc.core_access = 0)');

// Don't show current item
$query->where('(' . $db->quoteName('m.content_item_id'). ' <> ' . $id
. ' OR ' . $db->quoteName('m.type_alias'). ' <> ' . $db->quote($prefix). ')'
);

// Only return published tags
$query->where($db->quoteName('cc.core_state'). ' = 1 ')
->where('(' . $db->quoteName('cc.core_publish_up'). '=' . $db->quote($nullDate). ' OR '
. $db->quoteName('cc.core_publish_up'). '<=' . $db->quote($now). ')'
)
->where('(' . $db->quoteName('cc.core_publish_down'). '=' . $db->quote($nullDate). ' OR '
. $db->quoteName('cc.core_publish_down'). '>=' . $db->quote($now). ')'
);

Не поможете з правкой запроса, пожалуйтса?
*

sivers

  • Живу я здесь
  • 2626
  • 363 / 0
Попробуйте заменить это:
Код
. $db->quoteName('cc.core_publish_up'). '<=' . $db->quote($now). ')'

на это:
Код
. $db->quoteName('cc.core_publish_up'). '<=(SELECT `core_publish_up` FROM `#__ucm_content` WHERE `core_content_id` = cc.core_content_id AND `core_content_item_id` = ' . $db->quote($id). '))'

тестить мне это не на чем, так что работоспособность не проверял
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Gerostrat

  • Захожу иногда
  • 374
  • 2 / 0
  • Свидетель чайной ложки
Хм. Так вообще ничего не отображается...
*

Gerostrat

  • Захожу иногда
  • 374
  • 2 / 0
  • Свидетель чайной ложки
Если предположить, что более поздняя дата публикации подразумевает у документа больший ID. Если публикации на сайте идут подряд.

Тогда в этом коде можно было бы просто "<>" поменять на "<". Что скажете?
Код
// Don't show current item
$query->where('(' . $db->quoteName('m.content_item_id'). ' <> ' . $id
. ' OR ' . $db->quoteName('m.type_alias'). ' <> ' . $db->quote($prefix). ')'
);

*

sivers

  • Живу я здесь
  • 2626
  • 363 / 0
иногда очередность публикации может не совпадать с очередностью ИД. Если вы создаете материалы с отложенной публикацией, например.

кроме замены знака надо еще удалить строку с ' OR ' . иначе никакого эффекта не будет

Код
// Don't show current item
$query->where('(' . $db->quoteName('m.content_item_id'). ' < ' . $id
. ')'
);
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Рамка обрамляющая модуль в позиции

Автор alexs64

Ответов: 0
Просмотров: 2453
Последний ответ 21.11.2025, 09:02:57
от alexs64
Вывести модуль в модуле

Автор jimka

Ответов: 2
Просмотров: 4670
Последний ответ 18.04.2025, 15:39:36
от fbr
Radical Multi Field создаёт папку для каждой статьи

Автор Missile

Ответов: 7
Просмотров: 2159
Последний ответ 25.11.2024, 15:22:12
от Missile
Как установить header Cache-Control только для одной страницы по URL?

Автор Slava77

Ответов: 0
Просмотров: 2324
Последний ответ 23.03.2024, 00:16:36
от Slava77
Как вставить модуль в код нужной страницы php?

Автор zvi

Ответов: 9
Просмотров: 6499
Последний ответ 21.02.2024, 11:03:08
от saynez