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

antarey

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

zikkuratvk

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

antarey

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

antarey

  • Захожу иногда
  • 123
  • 0 / 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 ? и как ?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Самопризвольное удаление материалов с сайта!

Автор svd2014

Ответов: 16
Просмотров: 262
Последний ответ 12.10.2019, 13:06:33
от draff
Дубли материалов

Автор Asxat

Ответов: 2
Просмотров: 89
Последний ответ 09.10.2019, 16:45:44
от Asxat
Как задать стиль тегу <p>?

Автор algor

Ответов: 9
Просмотров: 218
Последний ответ 02.10.2019, 16:22:35
от Missile
Модуль Articles - Newsflash

Автор RomanRomanivich

Ответов: 15
Просмотров: 168
Последний ответ 23.09.2019, 12:07:45
от draff
Свои шаблоны для каждой категории материалов

Автор SkyAn

Ответов: 5
Просмотров: 209
Последний ответ 13.09.2019, 22:13:02
от Septdir