Как при выводе категорий скрыть несколько категорий, но не выключать их?

  • 13 Ответов
  • 903 Просмотров

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

*

brutus

  • *
  • 8
  • 0
Собственно вопрос описан выше :(

Необходимо при выводе категорий скрыть 2 из них, чтобы они были включены и были доступны при переходе из меню, но на странице не отображались...

Убрать 2 категории с листа... Как на фото....

« Последнее редактирование: 27.11.2014, 16:07:08 от brutus »

*

dmitry_stas

  • ********
  • 9651
  • 929
а где Австралия и Океания? :)

в ФАКе есть список шаблонов. найдите нужный и в нем в цикле по ид категории не выводите ненужные
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

misteri27

  • ****
  • 230
  • 0
Добры день.
Не хотел создавать новую темы пишу сюда . У меня похожая проблема. Только мне нужно из модуля категорий mod_od_jshopping_cat убрать две категории. Что бы они были но в модуле категорий не выводились.
Вот файл модуля  mod_od_jshopping_cat.php
Код
<?php	 	
defined('_JEXEC') or die('Restricted access');
error_reporting(E_ALL & ~E_NOTICE);   

if (!file_exists(JPATH_SITE.DS.'components'.DS.'com_jshopping'.DS.'jshopping.php')){
JError::raiseError(500,"Please install component \"joomshopping\"");
}

require_once (dirname(__FILE__).DS.'helper.php');

require_once (JPATH_SITE.DS.'components'.DS.'com_jshopping'.DS."lib".DS."factory.php");
require_once (JPATH_SITE.DS.'components'.DS.'com_jshopping'.DS."lib".DS."jtableauto.php");
require_once (JPATH_SITE.DS.'components'.DS.'com_jshopping'.DS.'tables'.DS.'config.php');
require_once (JPATH_SITE.DS.'components'.DS.'com_jshopping'.DS."lib".DS."functions.php");
require_once (JPATH_SITE.DS.'components'.DS.'com_jshopping'.DS."lib".DS."multilangfield.php");

JSFactory::loadCssFiles();

$lang = &JFactory::getLanguage();
if(file_exists(JPATH_SITE.DS.'components'.DS.'com_jshopping'.DS . 'lang'. DS . $lang->getTag(). '.php'))
require_once (JPATH_SITE.DS.'components'.DS.'com_jshopping'.DS . 'lang'. DS . $lang->getTag(). '.php');
else
require_once (JPATH_SITE.DS.'components'.DS.'com_jshopping'.DS . 'lang'.DS.'en-GB.php');

JTable::addIncludePath(JPATH_SITE.DS.'components'.DS.'com_jshopping'.DS.'tables');

// Get params     
    $category_id = JRequest::getInt('category_id');
    $category = &JTable::getInstance('category', 'jshop');

//$categories_arr = modODJShoppingCategoryHelper::getCatsArray($field_sort, $ordering, $category_id, $categories_id);


$html = modODJShoppingCategoryHelper::getCatsArray($params, $category_id, $category);


require JModuleHelper::getLayoutPath('mod_od_jshopping_cat', $params->get('layout', 'default'));

?>
А это helper.php
Код
<?php	 	
defined('_JEXEC') or die('Restricted access');
error_reporting(E_ALL & ~E_NOTICE);

class modODJShoppingCategoryHelper{
function getTreeCats($category, $params, $active_id, $parent_id = 0, $html = ''){
        $jshopConfig = &JSFactory::getConfig();

$html .= '<ul class="od'.$params->get('moduleclass_sfx', 'menu').'">';
$rows  = $category->getSubCategories($parent_id, $params->get('category_sort', 'id'), $params->get('sort_order', 'asc'), 1);
if(count($rows))
foreach($rows as $row) {
$child = $category->getSubCategories($row->category_id, $params->get('category_sort', 'id'), $params->get('sort_order', 'asc'), 1);

$html .= '<li class="'.((in_array($row->category_id, $active_id)? 'current' : '')).'">';
$html .= '<a href="'.$row->category_link.'">';
$html .= '<span>';
$html .= $row->name;
// Show counter
if($params->get('counter', 0)) {
$category->category_id = $row->category_id;
$counter = $category->getCountProducts('');
$html .= '<span class="counter"> ('.$counter.')</span>';
}
$html .= '</span>';
if(count($child)) {
$html .= '<i></i>';
}
$html .= '</a>';

// Show child
if(count($child)) {
$html .= modODJShoppingCategoryHelper::getTreeCats($category, $params, $active_id, $row->category_id, '');
}
$html .= '</li>';
}
$html .= '</ul>';

return $html;
    }
   
    function getCatsArray($params, $active_id, $category)
{
    $category->load($active_id);
    $categories_id = $category->getTreeParentCategories();
   return modODJShoppingCategoryHelper::getTreeCats($category, $params, $categories_id);
    }

}
Как убрать с цикла два id категории ?

*

dmitry_stas

  • ********
  • 9651
  • 929
Цитировать
if(count($rows))
foreach($rows as $row) {
    if (in_array($row->category_id, array(тут через запятую ID категорий которые надо исключить))) continue;
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

misteri27

  • ****
  • 230
  • 0

*

Biss

  • *****
  • 760
  • 79
Всё то же самое, но хочу передавать параметром. Срабатывает если ввести только одну цифру, если через запятую - не работает
Код
$category_hide = $params->get('category_hide', '');

if (in_array($row->category_id, array($category_hide))) continue;

*

dmitry_stas

  • ********
  • 9651
  • 929
так у вас же $category_hide - это строка. а надо массив. разбейте (explode) строку по разделителю ',' или какой вы там используете.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

Biss

  • *****
  • 760
  • 79
Получилось так
Код
if (in_array($row->category_id, explode (',', $category_hide))) continue;
Но пока я это делал то понял что этот вариант не подходит, так как получается что больше категорий нужно скрыть чем показать :)
А какой массив будет *показать категории только ...*

*

dmitry_stas

  • ********
  • 9651
  • 929
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

Biss

  • *****
  • 760
  • 79
Я тут попробовал дополнить модуль и выложить. Так как темы нет прикреплю тут.
Основные изменения
  • дополнительные настройки
  • добавлено макет *component*

*

dmitry_stas

  • ********
  • 9651
  • 929
т.е. вывод как в компоненте, но модулем? и шаблон подхватывается тот, который для компонента? и можно скрывать некоторые категории, указывать в настройках?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

Biss

  • *****
  • 760
  • 79
т.е. вывод как в компоненте, но модулем? и шаблон подхватывается тот, который для компонента? и можно скрывать некоторые категории, указывать в настройках?
Ну не совсем так. Я скопировал шаблон *default* из этого модуля. И сделал по аналогии, но макет самого вывода написал так чтоб можно было показать только те категории которые нужны (в моем случае надо было вывести категории только рут и показать их на главной странице, можно было вывести пунктом меню но я хотел сохранить структуру *домен/каталог/категория/товар*)
1. в настройках через запятую ид категорий которые хотим отобразить или пусто для показа всех
2. так же можно выбрать сколько кат. в ряду 1 / 2 / 3 / 4 или 6 (тип классов span и row-fluid, думал еще добавить col-md но потом упустил это момент) эту настройку не привязывал к компоненту, подумал что индивидуально будет лучше
3. добавить желаемый класс категориям
4. размеры картинок и т.д ...

что еще заметил, главная категория не считает товаров, которые есть в подкатегории.
dmitry_stas сможете подсказать если выложу файлы в спойлерах?

*

dmitry_stas

  • ********
  • 9651
  • 929
а она и не будет их считать. это надо считать количество по каждой подкатегории и подкатегории подкатегории и так далее. и то вопросы. если например товару назначено 2 категории - родительская и дочерняя, будет задвоение в таком случае этих товаров.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций

*

Biss

  • *****
  • 760
  • 79
в модуле категорий от ice так подсчитывало (на счет задвоения не проверял) снял его с сайта так как подумал что обойдусь этим модулем просто выведу его разными макетами, но теперь количество пришлось отключить