Доработка виджета - Категории

Скрываем пустые папки

 
Посетитель
small user social cms
Медаль
Сообщений: 865
Всем привет.
Решил для себя, делюсь со всеми.
Имею большую, разветвленную структуру контента, причем большая часть папок забита на перспективу, т.е. без содержимого. Пользователю не удобно, ну а все не нужные отключать не с руки. Решил скрыть.

Работаем с тремя файлами:
1. /system/controllers/content/model.php
2. /system/controllers/content/widgets/categories/widget.php
3. /templates/{ваш шаблон}/controllers/content/widgets/categories/categories.tpl.php

Так как у меня все фалы изрыты экспериментами прикреплять их не буду, дело там не большое дешевле описать.
model.php:
Из стандартного набора подобная функция мне не по глазам, рисую свою.
Код PHP:
  1.  
  2. public function CountItemsInFolder($ctype_name,$parent_id){
  3. $category = $this->getCategory($ctype_name,$parent_id);
  4. $this->filterCategory($ctype_name, $category, 1);
  5. $this->filterEqual('is_pub',1);
  6. $count = $this->getContentItemsCount($ctype_name);
  7. $this->resetFilters();
  8. return $count;
  9. }
  10.  
widget.php:
Перед строкой "return array(" собираем инфо о наличии вложенного материала.
Код PHP:
  1.  
  2. foreach($cats as $id=>$cat){
  3. $items[$id] = $model->CountItemsInFolder($ctype_name,$id);
  4. }
  5.  
И добавляем переменную в массив для дальнейшего использования в шаблоне.
Код PHP:
  1.  
  2. return array(
  3. ...
  4. 'items' => $items,
  5. );
  6.  
categories.tpl.php
Используем дефолтное условие по срытию папок.
Код PHP:
  1.  
  2. ищем:
  3. <?php if (!$is_visible) { ?>
  4. расширяем условие:
  5. <?php if (!$is_visible || !$items[$id]) { ?>
  6.  
Результат: на экране только те категории, в которых есть опубликованные записи.
Удачи.
Редактировалось: 3 раз (Последний: 7 августа 2014 в 11:48)
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.