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

antarey

  • Захожу иногда
  • 83
  • 0 / 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

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

antarey

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

Septdir

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

antarey

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

Septdir

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

antarey

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

antarey

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

Septdir

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

antarey

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

Septdir

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

antarey

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

Septdir

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

antarey

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

Septdir

  • Живу я здесь
  • 2986
  • 148 / 3
@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 »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
Мои Контакты | Мой GitHub | Workshop
*

antarey

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

Septdir

  • Живу я здесь
  • 2986
  • 148 / 3
category_id ето ж вроде категория а не стус архив/не архив
На одну строку ниже
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
Мои Контакты | Мой GitHub | Workshop
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как добавить <meta name="abstract" content="" />?

Автор gonzergonzer

Ответов: 6
Просмотров: 213
Последний ответ 16.03.2019, 06:58:48
от Театрал
Фильтр материалов в блоге

Автор sanek2281

Ответов: 13
Просмотров: 282
Последний ответ 06.03.2019, 02:39:30
от sanek2281
Фильтр материалов по полям

Автор phpCoder

Ответов: 7
Просмотров: 338
Последний ответ 26.10.2018, 13:34:43
от Shustry
Обновил Content - Related Articles After Content и появилась ошибка Call to a me

Автор polezniy

Ответов: 4
Просмотров: 195
Последний ответ 27.09.2018, 20:56:47
от polezniy
Убрать Фильтр поиска по контактам

Автор Explosion

Ответов: 7
Просмотров: 350
Последний ответ 03.09.2018, 10:12:58
от Explosion