Новости Joomla

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

👩‍💻 Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1. Это релиз, в который включены уже проверенные изменения, но ещё очень многие исправления и улучшения ждут своей очереди. Joomla следит за качеством и безопасностью своего кода и каждое изменение должно быть успешно протестировано как минимум ещё двумя участниками сообщества. Разработка Joomla ведётся на платформе GitHub.Филипп Уолтон (Philip Walton) - один из разработчиков, кто активно вносит свой вклад в ядро Joomla. Он уже несколько месяцев посвящает свои послеполуденные часы пятницы работе с Joomla и предлагает присоединиться к нему. 📆 Пятница, 30 мая 2025, с 15:00 до 17:00 по UTC (Лондон) - с 18:00 до 20:00 по Москве.В чате Google Meet Филипп готов помочь с тестированием тем, кто будет делать это в первый раз. А так же он подготовил список лёгких Pull Request, которые можно протестировать довольно быстро. Чем больше тестов будет проведено сейчас, тем меньше ошибок вылезет потом. На данный момент 148 (уже 147 на момент написания заметки) PR на GitHub Joomla ждут тестирования.👩‍💻 Open to all. All together.Также вам поможет сделать первые шаги это видео.GitHub JoomlaДа, это вечер пятницы. Но тестирование занимает порой минут 15, а доброе дело сделано. Просто убедитесь, что разработчик чего-то не пропустил и всё работает как ожидается.#joomla #joomla6 #community

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

antarey

  • Захожу иногда
  • 168
  • 1 / 0
В статье есть дополнительное поле.
Для фильтра использую JL Content Fields Filter https://joomline.ru/rasshirenija/moduli/jlcontentfieldsfilter.html
Как бы работает, но у меня есть статьи в архиве, и модуль их в упор не видит.
Как переделать запрос, чтобы выводились статьи из архива?
вот код mod_jlcontentfieldsfilter.php
Код
<?php
/**
 * JL Content Fields Filter
 *
 * @version 1.7.0
 * @author Joomline
 * [member=126442]copyright[/member] (C) 2017-2019 Arkadiy Sedelnikov, Joomline. All rights reserved.
 * @license GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

// Include the helper.
require_once __DIR__ . '/helper.php';
require_once JPATH_ROOT. '/components/com_content/helpers/route.php';

$app = JFactory::getApplication();
$input = $app->input;

$option = $input->getString('option', '');
$view = $input->getString('view', '');
$catid = $input->getInt('catid', 0);
$id = $input->getInt('id', 0);

if($view == 'category')
{
$catid = $id;
}

$jlContentFieldsFilter = $app->getUserStateFromRequest($option.'.cat_'.$catid.'.jlcontentfieldsfilter', 'jlcontentfieldsfilter', array(), 'array');

$allowedCats = $params->get('categories', array());
$allowedContactCats = $params->get('contact_categories', array());
$moduleclass_sfx = $params->get('moduleclass_sfx', '');
$form_method = $params->get('form_method', 'post');
$autho_send = (int)$params->get('autho_send', 0);
$ajax = (int)$params->get('ajax', 0);
$ajax_selector = $params->get('ajax_selector', '#content');
$enableOrdering = $params->get('enable_ordering', 0);
$ajax_loader = $params->get('ajax_loader', '');
$ajax_loader = !empty(($ajax_loader))? JUri::root().$ajax_loader : '';
$ajax_loader_width = (int)$params->get('ajax_loader_width', 32);

if(
!in_array($option, array('com_content', 'com_contact'))
    || ($option == 'com_content' && !(!count($allowedCats) || in_array($catid, $allowedCats) || $allowedCats[0] == -1))
    || ($option == 'com_contact' && !(!count($allowedContactCats) || in_array($catid, $allowedContactCats) || $allowedContactCats[0] == -1))
|| $catid == 0
)
{
    return;
}
if($option == 'com_content'){
$action = JRoute::_(ContentHelperRoute::getCategoryRoute($catid));
}
else{
$action = JRoute::_(ContactHelperRoute::getCategoryRoute($catid));
}

$fields = ModJlContentFieldsFilterHelper::getFields($params, $catid, $jlContentFieldsFilter, $module->id, $option);

if(count($fields)){
if($enableOrdering){
$selectedOrdering = !empty($jlContentFieldsFilter['ordering'])? $jlContentFieldsFilter['ordering'] : '';
$orderingSelect = ModJlContentFieldsFilterHelper::getOrderingSelect($selectedOrdering, $module->id, $option);
}
require JModuleHelper::getLayoutPath('mod_jlcontentfieldsfilter', $params->get('layout', 'default'));
}

и хелпер
Код
<?php
/**
 * JL Content Fields Filter
 *
 * @version 1.7.0
 * @author Joomline
 * [member=126442]copyright[/member] (C) 2017-2019 Arkadiy Sedelnikov, Joomline. All rights reserved.
 * @license GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

require_once JPATH_ROOT. '/administrator/components/com_fields/helpers/fields.php';

class ModJlContentFieldsFilterHelper
{
public static function getFields($params, $category_id, $values, $moduleId, $option)
{
$app = JFactory::getApplication();
$fields = array();
$template = $app->getTemplate();

$context = '';

if($option == 'com_content'){
$context = 'com_content.article';
}
else if($option == 'com_contact'){
$context = 'com_contact.contact';
}


$item = new stdClass();
$item->language = $app->getLanguage()->getTag();
$item->catid = $category_id;

$fields = FieldsHelper::getFields($context, $item);
if(count($fields)){
$fieldIds = array_map(
function ($f)
{
return $f->id;
},
$fields
);

$new = array();
            $usedFieldIds = array();

foreach ($fields as $key => $original)
{
    if(in_array($original->id, $usedFieldIds)){
        continue;
                }
                $usedFieldIds[] = $original->id;
$field = clone $original;
$field->value = isset($values[$field->id])? $values[$field->id] : '';
$field->rawvalue = $field->value;

$content_filter = $original->params->get('content_filter', '');

$disabled_categories = $original->params->get('disabled_categories', array());
if (in_array($category_id, $disabled_categories))
{
continue;
}

if(empty($content_filter)){
unset($fieldIds[$key]);
continue;
}

$filter_layout = $original->params->get('filter_layout', '');
if(!empty($filter_layout)) {
$filter_layout = explode(':', $filter_layout);
$src = $filter_layout[0];
$layout = $filter_layout[1];
}
else {
$layout = $content_filter;
$src = '_';
}

$basePath = $src === '_'
? (
is_file(JPATH_ROOT.'/templates/'.$template.'/html/layouts/mod_jlcontentfieldsfilter/'.$layout.'.php')
? JPATH_ROOT.'/templates/'.$template.'/html/layouts'
: JPATH_ROOT.'/modules/mod_jlcontentfieldsfilter/layouts'
)
: (
is_file(JPATH_ROOT.'/templates/'.$src.'/html/layouts/mod_jlcontentfieldsfilter/'.$layout.'.php')
? JPATH_ROOT.'/templates/'.$src.'/html/layouts'
: JPATH_ROOT.'/modules/mod_jlcontentfieldsfilter/layouts'
);

$displayData = array('field' => $field, 'params' => $params, 'moduleId' => $moduleId, 'rangedata' => array());

if(preg_match("/^range?.*?$/isu", $layout)) {
$displayData = self::addRangeData($displayData, $category_id, $option);
}

$new[$key] = JLayoutHelper::render(
'mod_jlcontentfieldsfilter.'.$layout,
$displayData,
$basePath,
array('component' => 'auto', 'client' => 0, 'suffixes' => array())
);
}
$fields = $new;
}
return $fields;
}

private static function addRangeData($displayData, $category_id, $option){
$field = $displayData['field'];
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('MIN(CAST(`value` AS SIGNED)) AS `min`, MAX(CAST(`value` AS SIGNED)) AS `max`')
      ->from('`#__fields_values`')
      ->where('`field_id` ='.(int)$field->id)
      ->where('`field_id` ='.(int)$field->id)
;
$subquery = '';
if($option == 'com_content'){
$subquery = 'SELECT `id` FROM `#__content` WHERE `catid` = '.(int)$category_id;
}
else if($option == 'com_contact'){
$subquery = 'SELECT `id` FROM `#__contact_details` WHERE `catid` = '.(int)$category_id;
}
if(!empty($subquery)){
$query->where('`item_id` IN ('.$subquery.')');
}
$result = $db->setQuery($query)->loadObject();
$displayData['min'] = !empty($result->min)? (int)$result->min : '';
$displayData['max'] = !empty($result->max)? (int)$result->max : '';
return $displayData;
}

public static function getOrderingSelect($selectedOrdering, $moduleId, $option){
$app = JFactory::getApplication();
$template = $app->getTemplate();

$options = array();
if($option == 'com_content'){
$options[] = JHtml::_('select.option', '', JText::_('MOD_JLCONTENTFIELDSFILTER_ORDERING_DEFAULT'));
$options[] = JHtml::_('select.option', 'ordering.asc', JText::_('MOD_JLCONTENTFIELDSFILTER_ORDERING_ASC'));
$options[] = JHtml::_('select.option', 'ordering.desc', JText::_('MOD_JLCONTENTFIELDSFILTER_ORDERING_DESC'));
$options[] = JHtml::_('select.option', 'title.asc', JText::_('MOD_JLCONTENTFIELDSFILTER_TITLE_ASC'));
$options[] = JHtml::_('select.option', 'title.desc', JText::_('MOD_JLCONTENTFIELDSFILTER_TITLE_DESC'));
$options[] = JHtml::_('select.option', 'created.asc', JText::_('MOD_JLCONTENTFIELDSFILTER_CREATED_ASC'));
$options[] = JHtml::_('select.option', 'created.desc', JText::_('MOD_JLCONTENTFIELDSFILTER_CREATED_DESC'));
$options[] = JHtml::_('select.option', 'created_by.asc', JText::_('MOD_JLCONTENTFIELDSFILTER_CREATED_BY_ASC'));
$options[] = JHtml::_('select.option', 'created_by.desc', JText::_('MOD_JLCONTENTFIELDSFILTER_CREATED_BY_DESC'));
$options[] = JHtml::_('select.option', 'hits.asc', JText::_('MOD_JLCONTENTFIELDSFILTER_HITS_ASC'));
$options[] = JHtml::_('select.option', 'hits.desc', JText::_('MOD_JLCONTENTFIELDSFILTER_HITS_DESC'));
}
else if($option == 'com_contact'){
$options[] = JHtml::_('select.option', '', JText::_('MOD_JLCONTENTFIELDSFILTER_ORDERING_DEFAULT'));
$options[] = JHtml::_('select.option', 'ordering.asc', JText::_('MOD_JLCONTENTFIELDSFILTER_ORDERING_ASC'));
$options[] = JHtml::_('select.option', 'ordering.desc', JText::_('MOD_JLCONTENTFIELDSFILTER_ORDERING_DESC'));
$options[] = JHtml::_('select.option', 'name.asc', JText::_('MOD_JLCONTENTFIELDSFILTER_NAME_ASC'));
$options[] = JHtml::_('select.option', 'name.desc', JText::_('MOD_JLCONTENTFIELDSFILTER_NAME_DESC'));
$options[] = JHtml::_('select.option', 'position.asc', JText::_('MOD_JLCONTENTFIELDSFILTER_POSITION_ASC'));
$options[] = JHtml::_('select.option', 'position.desc', JText::_('MOD_JLCONTENTFIELDSFILTER_POSITION_DESC'));
$options[] = JHtml::_('select.option', 'hits.asc', JText::_('MOD_JLCONTENTFIELDSFILTER_HITS_ASC'));
$options[] = JHtml::_('select.option', 'hits.desc', JText::_('MOD_JLCONTENTFIELDSFILTER_HITS_DESC'));
}

$basePath = is_file(JPATH_ROOT.'/templates/'.$template.'/html/layouts/mod_jlcontentfieldsfilter/ordering.php')
? JPATH_ROOT.'/templates/'.$template.'/html/layouts'
: JPATH_ROOT.'/modules/mod_jlcontentfieldsfilter/layouts';

$html = JLayoutHelper::render(
'mod_jlcontentfieldsfilter.ordering',
array('options' => $options, 'selected' => $selectedOrdering, 'moduleId' => $moduleId),
$basePath,
array('component' => 'auto', 'client' => 0)
);

return $html;
}
}

*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Тут запрос в базу менять надо.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

antarey

  • Захожу иногда
  • 168
  • 1 / 0
@Septdir
ето я понял, только на какой, и где? В самом модуле или в joomle?
Архивные статьи от обычных отличаются в поле state=2. Пробовал изменить запрос - не вышло ничего
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
@Septdir
ето я понял, только на какой, и где? В самом модуле или в joomle?
Архивные статьи от обычных отличаются в поле state=2. Пробовал изменить запрос - не вышло ничего
В плагине https://github.com/Joomline/JlContentFieldsFilter/blob/master/plg_system_jlcontentfieldsfilter/models/com_content/category.php
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

antarey

  • Захожу иногда
  • 168
  • 1 / 0
@Septdir
Спасибо завтра посмотрю.
Если я правильно понял - ето переоредиление com_content?
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
@Septdir
Спасибо завтра посмотрю.
Если я правильно понял - ето переоредиление com_content?
Оно самое
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

antarey

  • Захожу иногда
  • 168
  • 1 / 0
@Septdir
Спасибо.
Если можна, поморочу еще немного голову.
Можете указать с какой по какую строку меняли, чтобы не сравнивать весь код.
У меня первично идет фильтр по доп.полю а потом выбор категории статей- как сработает выборка из базы если в фильтре укажу доп.поле статьи из архива и конкретную категорию? Покажутся только категории архива с доп.полем или все статьи с етой категории?
И последний вопрос - можно как-то задать для данного модуля JL Content Fields Filter значение по умолчанию при загрузке страницы?
Заранее спасибо.
*

antarey

  • Захожу иногда
  • 168
  • 1 / 0
Я так понял Вы разработчик расширения?
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Я так понял Вы разработчик расширения?
Не. Просто знаю как оно работает.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

antarey

  • Захожу иногда
  • 168
  • 1 / 0
@Septdir
Я сравнил два файла - все чем они отличаются так ето версией. Вы точно в category.php правили?
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
@Septdir
Я сравнил два файла - все чем они отличаются так ето версией. Вы точно в category.php правили?
Я ничего и не правил. Вам просто скинул файл. Хотя скорее всего придётся вообще articles php переопределять
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

antarey

  • Захожу иногда
  • 168
  • 1 / 0
В смысле articles php самой Joomla?
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
В смысле articles php самой Joomla?
Да потому что сам запрос там.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

antarey

  • Захожу иногда
  • 168
  • 1 / 0
Ясно. Спасибо
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
@antarey я тут подумал. Теоритически можно тут передвать массив (1,2) и тогда будет и архивные выводиться.
https://github.com/Joomline/JlContentFieldsFilter/blob/master/plg_system_jlcontentfieldsfilter/models/com_content/category.php#L242
Но только в условия какие нибудь оберните.
« Последнее редактирование: 11.04.2019, 19:49:40 от Septdir »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

antarey

  • Захожу иногда
  • 168
  • 1 / 0
category_id ето ж вроде категория а не стус архив/не архив
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
category_id ето ж вроде категория а не стус архив/не архив
На одну строку ниже
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

Mitriy

  • Захожу иногда
  • 86
  • 0 / 0
Фильтрация происходит с условием AND, а можно ли поменять на OR?
То есть, выводить материалы в которых есть хотя бы одно нужное поле
*

Mitriy

  • Захожу иногда
  • 86
  • 0 / 0

Не. Просто знаю как оно работает.
Фильтрация происходит с условием AND, а можно ли поменять на OR?
То есть, выводить материалы в которых есть хотя бы одно нужное поле
*

Vastriet

  • Захожу иногда
  • 405
  • 11 / 0
посмотрите файлы там поменяйте условие
но если память не тзменяет был выбор и или
*

Mitriy

  • Захожу иногда
  • 86
  • 0 / 0
посмотрите файлы там поменяйте условие
но если память не тзменяет был выбор и или
прошел по файлам - не нашел. Подскажите в каком именно. Есть же модуль, плагин, компонент
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Вывод значений из custom fields материала в модуле по имени поля

Автор goga_pgasovav

Ответов: 3
Просмотров: 950
Последний ответ 30.12.2024, 13:22:11
от goga_pgasovav
Делаю запрос к базе к полю images, выдает пустые значения а они есть там

Автор Dolphin4ik_1

Ответов: 1
Просмотров: 595
Последний ответ 14.07.2022, 12:48:33
от sivers
Допилить интернет магазин

Автор joker992

Ответов: 1
Просмотров: 473
Последний ответ 02.05.2022, 08:33:14
от NewUsers
Как посчитать материалы в модуле с учетом плагина Content Multicategories?

Автор R31rus

Ответов: 0
Просмотров: 560
Последний ответ 24.11.2021, 13:23:03
от R31rus
Сохранить не удалось из-за ошибки: The content exceeds allowed limits

Автор alexbbb

Ответов: 0
Просмотров: 671
Последний ответ 28.09.2021, 15:02:31
от alexbbb