Постранично разбить вывод список категорий

  • 16 Ответов
  • 521 Просмотров

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

Всем привет. Вопрос может и глупый, но сам зашел в тупик. Есть список категорий которые нужно вывести постранично. Допустим по 10 на странице. Остальные стр. назад 1 2 3  вперед (как обычно)
Joomla вообще стандартными средствами это может сделать? Или посоветуйте пожалуйста расширение для неё.

Посмотрите вкладку "макеты списка" там можно настроить и кол-во категорий на страницу по умолчанию, и разбиение по страницам, и возможность самостоятельного выбора юзверем кол-ва категорий на странице.


Фу, чёрт. Пардоньте, не верно понял вопрос.

Народ, неужели не у кого не стояла такая задача? Хоть направление может дадите, где копать, очень нужно.

*

b2z

  • *****
  • 7450
  • 741
  • Разраблю понемногу
Нет стандарта, да и расширений по моему нет. А копать будет тяжело из-за вложенной архитектуры категорий. Наверное поэтому и не сделали в стандарте пагинацию.

Если мы рассматриваем разработчиков то их уровень знаний это позволяет сделать на раз два. Простым смертным проблематично, но можно.
И так получилось за бацать так называемую пагинацию. Правда на коленках, надо будет облагородить чтоб было красиво.
1. Переопределяем макет вывода категории я делал (список всех категорий).
2. Расковыриваем код в файле ваше-название_items.php (по умолчанию default_items.php)
Мой пример я удалил все что мне ненужно, если заморочиться вторым этапом можно сделать чтоб были стандартные настройки от Joomla такие как предварительный текст, картинки кому надо это уже легко.
Код
<?php

/**
 * @package Joomla.Site
 * @subpackage com_content
 * @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
 * @license GNU General Public License version 2 or later; see LICENSE.txt
 */

// no direct access
defined('_JEXEC') or die;
$class = ' class="first"';

$step = 10;
$cat_num=count($this->items[$this->parent->id]);
$page_num = ceil($cat_num / $step);

$stCatNum = 0;
$endCatNum = $step;

if (isset($_GET['page']))
   {
    $page = substr_replace($_GET['page'], '', -2, 2);
    if ($page == '' or !ctype_digit($page) or $page > $page_num)
  {
   unset($page);
  }
    else {
      $stCatNum =  $page*$step-$step;
          $endCatNum = $page*$step-1;
}
   }
   
$x = 1;
$menu = ''; 
while ($x <= $page_num and $page_num != 1)
{
$menu.= '<a href="'.
  substr_replace($_SERVER['REQUEST_URI'], '',
  strpos($_SERVER['REQUEST_URI'], "?page", 0),
  strpos($_SERVER['REQUEST_URI'], "ru", 0))
 .'?page='.$x.'ru"> >'.$x.' </a>';
$x++;
}



if (count($this->items[$this->parent->id]) > 0 && $this->maxLevelcat != 0) :
?>


<ul>
<?php foreach($this->items[$this->parent->id] as $id => $item) :

if ($id >= $stCatNum and $id <= $endCatNum ) :
?>
   
<li>
<span class="item-title"><a href="<?php echo JRoute::_(ContentHelperRoute::getCategoryRoute($item->id));?>">
<?php
echo $this->escape($item->title);
?></a>
</span>
</li>
    <?php endif; ?>

<?php endforeach; ?>
</ul>
<?php endif; ?>
<?php echo '<br>'.$menu ; ?>

Пример того как работает можно посмотреть тут http://korolevbilliard.ru/home/tournaments/old-tournaments
категорий там пока мало, но под развитие.

Буду рад если кто какие комментарии оставит по недочетам или по оптимизации .


Что-то я не помню такого, чтобы можно было выводить пагинацию для категорий.
В блоге категорий вроде-как можно?
Ставь лайк, если согласен, и делай репост!

  => мои публикации
    => мои работы
      => спектр моих услуг


Проверил. Создал под категорию, косяки не появились. А вот после обновы Joomla только сейчас увидел что вывод материалов поплыл, исправил.

*

b2z

  • *****
  • 7450
  • 741
  • Разраблю понемногу
Проверил. Создал под категорию, косяки не появились. А вот после обновы Joomla только сейчас увидел что вывод материалов поплыл, исправил.
Я так понимаю, что у Вас на странице выводится список категорий какой-то конкретной категории - old-tournaments - это какой тип пункта меню? Как я понял из Вашего кода, вы берёте учёт только родительских категорий без учёта подкатегорий.

Что будет, если Вы выведите именно список всех категорий (с подкатегориями)?

Да old-tournaments это пункт меню (список всех категорий) ведет на категорию с кучей под категорий, но с измененным макетом.
В моем шаблоне который я привел выше я выкинул все управление от Joomla, поэтому просто выводится родительский список категорий, id категории передается Joomla, поэтому если есть 2 и более  одноименной задачи по выводу разделов, переделывать ничего ненужно. Маленькое  но, так-как количество строк все же берется из шаблона в переменной $step то у всех разделов будет одинаковое количество строк. И тут можно заморочиться если допустим структура сайта сформирована у вас уже есть  id категорий то можно написать не большой php код который будет проверять сколько строк нужно выводить под каждой категорией.

Цитировать
Что будет, если Вы выведите именно список всех категорий (с подкатегориями)?

В данный момент на своем сайте я внес в шаблон возможность управления из Joomla, можно посмотреть, но потом уберу оно мне ненужно.
В итоге:
Если создать под категории дальше в глубину они будут выводится если в Joomla включен вывод(глубина просмотра все, 1, 2 и т.д.)
Выводится они будут под своей родительской категорией (которые я делал постраничный вывод), но влиять на количество строк не будут.
То есть если я поставил выводить по 5 ссылок родителей, а дальше разбить на страницы то выведутся 5 основных категорий и их потомки.
1 категория
 1.1 подкатегория
 1.2 подкатегория
2 категория
3 категория
4 категория
5 категория

*

b2z

  • *****
  • 7450
  • 741
  • Разраблю понемногу

Увы способ с изъянами, не идеален. В идеале нужно копать глубже до момента запроса к базе тогда уже можно данными крутить как вам угодно.

Кстати говоря о возможностях, на самом деле в Joomla реализована пагинация категорий  и с уровнем дочерних категорий и с листингом все супер но используется она в админке когда заходите материалы->менеджер категорий. Поэтому разработчиков не понимаю почему они эту идею не перенесли и в пользовательский режим.

*

Sergeyy

  • ***
  • 147
  • 3
Вот мой костыль:
http://joomlaforum.ru/index.php/topic,297014.msg1480272.html#msg1480272
Работает без проблем. Список подкатегорий мне не нужен, даже непроверял

А вообще нам сюда http://ideas.joomla.org/forums/84261-joomla-idea-pool/suggestions/2315657-pagination-for-categories-and-subcategories
joomla 2.5