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

antarey

  • Захожу иногда
  • 168
  • 1 / 0
Добрый день.
Есть блок категории и в меню на главную страницу в параметрах выбирается тег.
Необходимо сделать модуль фильтра по категории и тегу. В идеале с AJAX загрузкой.
Подскажите в какую сторону копать. Может где-то есть пример, а то честно говоря пока даже не знаю как правильно задать вопрос по реализации
*

zikkuratvk

  • Глобальный модератор
  • 4818
  • 344 / 2
  • Обслуживаем проекты - дорого.
попробуйте это расширение https://github.com/Joomline/JLTagFilter
Хочется уникальное расширение? ===>>>> JoomLine - Разрабатываем расширения под заказ.
Использую хостинг TimeWeb и Reg
*

antarey

  • Захожу иногда
  • 168
  • 1 / 0
Спасибо, посмотрю.
Тут немного подумал... Надо совместить два стандартных модуля - список категорий и список тегов по условию И, но чтобы вывод был не как в стандартной реализации тегов, а блог категории без переопределения макета вывода. И предоставить списки катерорий и тегов не списком а в листбоксе
*

antarey

  • Захожу иногда
  • 168
  • 1 / 0
Вроде получилось.
Переопределил mod_articles_categories
default.php
Код
<?php
/**
 * @package     Joomla.Site
 * @subpackage  mod_articles_categories
 *
 * [member=126442]copyright[/member]   Copyright (C) 2005 - 2019 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;
$input  = JFactory::getApplication()->input;
$id     = $input->getInt('id');
$Itemid = $input->getInt('Itemid');
$filter_tag = $input->getInt('filter_tag', 0);
$selectted_filter_tag = $filter_tag[0];

$defaultUrl = 'index.php?option=com_content&view=category&layout=blog&id='.$id.'&Itemid='.$Itemid.'&filter_tag[0]='.$selectted_filter_tag;
//http://localhost/gazeta/index.php?option=com_content&view=category&layout=blog&id=15&filter_tag[0]=3&Itemid=101

$doc = JFactory::getDocument();
$doc->addScriptDeclaration("
function onChangeTagsCat(selectedType,selectedValue) {
var blog_id=document.getElementById('blog_id_id').value;
var blog_item_id = document.getElementById('blog_item_id_id').value;
var gBlogUrl = 'index.php?option=com_content&view=category&layout=blog&id='+blog_id+'&Itemid='+blog_item_id;
var default_category_id = document.getElementById('default_category_id').value;

if (selectedType == 'category' )
{
if (selectedValue != 0)
{
gBlogUrl = 'index.php?option=com_content&view=category&layout=blog&id='+selectedValue+'&Itemid='+blog_item_id;
}
else
{
gBlogUrl = 'index.php?option=com_content&view=category&layout=blog&id='+default_category_id+'&Itemid='+blog_item_id;
}
}
if (selectedType == 'tags')
{
document.getElementById('selected_tag_list_id').value=selectedValue;
}
gBlogUrl += '&filter_tag[0]=' + document.getElementById('selected_tag_list_id').value;
document.getElementById('submit_flt').formAction = gBlogUrl;
}
");

$tags = array();

    $db = JFactory::getDbo();
    $query = $db->getQuery(true);
    $query->select('id AS value, title  AS text')
        ->from('#__tags')
        ->where('parent_id = 1')
        ->where('published = 1')
->order('id');
$result = $db->setQuery($query)->loadObjectList();

foreach ( $result as $item ) {
$tags[$item->value] = $item->text;
}

$menu_items = JFactory::getApplication()->getMenu()->getItems('home', '1');
$main_url = $menu_items[0]->link;
preg_match('/&id=([0-9]+)/', $main_url, $matches);
$default_category_id = $matches[1];


?>


<ul class="categories-module<?php echo $moduleclass_sfx; ?> mod-list">
<form name="form_tag_list" id=="form_tag_list_id" method="POST">
    <fieldset name="fieldset_tag_list" id="fieldset_tag_list_id">
        <legend>Номер випуска</legend>
          <p>
            <select name="select_tag_list" id="select_tag_list_id" onchange="onChangeTagsCat('tags',this.options[this.selectedIndex].value)">
<?php foreach ( $tags as $key => $value ) : ?>
<?php if ( $key == $selectted_filter_tag ) : ?>
<option value = "<?php echo $key; ?>" selected><?php echo $value; ?></option>
<?php else : ?>
<option value = "<?php echo $key; ?>"><?php echo $value; ?></option>
<?php endif; ?>
<?php endforeach; ?>
             </select>
<input type="hidden" name="selected_tag_list" id="selected_tag_list_id" value="<?php echo $selectted_filter_tag; ?>" />
<input type="hidden" name="blog_id" id="blog_id_id" value="<?php echo $id; ?>" />
<input type="hidden" name="blog_item_id" id="blog_item_id_id" value="<?php echo $Itemid; ?>" />
<input type="hidden" name="default_category_id" id="default_category_id" value="<?php echo $default_category_id; ?>" />
          </p>
    </fieldset>
</form>

<p></p>

<?php require JModuleHelper::getLayoutPath('mod_articles_categories', $params->get('layout', 'default'). '_items'); ?>
</ul>
default_items.php
Код
<?php
/**
 * @package     Joomla.Site
 * @subpackage  mod_articles_categories
 *
 * [member=126442]copyright[/member]   Copyright (C) 2005 - 2019 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

$input  = JFactory::getApplication()->input;
$option = $input->getCmd('option');
$view   = $input->getCmd('view');
$id     = $input->getInt('id');
$Itemid = $input->getInt('Itemid');
$filter_tag = $input->getInt('filter_tag', 0);
$selectted_filter_tag = $filter_tag[0];

$blog_url = 'index.php?option=com_content&view=category&layout=blog&id='.$id.'&Itemid='.$Itemid.'&filter_tag[0]='.$selectted_filter_tag;
$menu_items = JFactory::getApplication()->getMenu()->getItems('home', '1');
$main_url = $menu_items[0]->link .'&Itemid='.$Itemid;
 
/* line 30 <option value="<?php echo JRoute::_(ContentHelperRoute::getCategoryRoute($item->id)); ?>"><?php echo $item->title; ?></option>*/
?>
<form name="form_category_list" id=="form_category_list_id" method="POST">
    <fieldset name="fieldset_category_list" id="fieldset_category_list_id">
        <legend>Рубрики</legend>
          <p>
            <select name="select_category_list" id="select_category_list_id" onchange="onChangeTagsCat('category',this.options[this.selectedIndex].value)">
<option value="0"><?php echo JText::_('JSELECT'); ?></option>
<?php foreach ( $list as $item ) : ?>
<?php if ( $view == 'category' && $option == 'com_content') : ?>
<?php if ( $item->id == $id ) : ?>
<option value="<?php echo $item->id; ?>" selected><?php echo $item->title; ?></option>
<?php else : ?>
<option value="<?php echo $item->id; ?>"><?php echo $item->title; ?></option>
<?php endif; ?>
<?php endif; ?>
<?php endforeach; ?>
             </select>
<div class="buttons_block" style="padding: 20px 0 0 0;">
<button name="submit_flt" id="submit_flt" formaction="<?php echo $blog_url; ?>"><?php echo JText::_('JGLOBAL_FILTER_LABEL'); ?></button>
<button name="reset_flt" id="reset_flt" formaction="<?php echo $main_url; ?>"><?php echo JText::_('JCLEAR'); ?></button>
</div>
          </p>
    </fieldset>
</form>


Подскажите, можна для такой реализации прикрутить AJAX ? и как ?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как вставить модуль в код нужной страницы php?

Автор zvi

Ответов: 9
Просмотров: 3863
Последний ответ 21.02.2024, 11:03:08
от saynez
Не удается разблокировать в менеджере материалов.

Автор vityavoluevich

Ответов: 0
Просмотров: 238
Последний ответ 10.01.2024, 09:05:30
от vityavoluevich
Убрать из модуля новостей ссылку на статью, на которой выводится модуль

Автор zeus07

Ответов: 3
Просмотров: 722
Последний ответ 08.11.2023, 21:17:26
от GrayAn
Поиск в Материал- Блог категории

Автор mag_num83

Ответов: 1
Просмотров: 322
Последний ответ 14.09.2023, 20:36:34
от beliyadm
Модуль Похожие метки – только более ранние статьи!

Автор Gerostrat

Ответов: 6
Просмотров: 457
Последний ответ 24.08.2023, 21:56:09
от sivers