Каталог подкатегорий в боковом меню для OkayCMS 2

Правила раздела: faq.php?mode=okay
Модератор: Модераторы

makki M
makki M
Репутация: 199
Сообщения: 697
Зарегистрирован: 12.08.2016
С нами: 7 лет 7 месяцев
Откуда: Киев
Сайт

Сообщение #1 makki » 30.05.2017, 06:59

Предлагаю небольшое дополнение к дефолтному шаблону OkayCMS 2, которое сделает удобнее навигацию по каталогу товаров. Несмотря на то, что новый шаблон мне понравился своей простотой и чистым CSS, каталог товаров на десктопе мне показался сильно спрятанным и немного неудобным. Дополнение добавляет боковое меню подкатегорий. Т.е. отображается не все дерево каталога а только подкатегории выбранной категории. Если подкатегорий нет, меню отображает подкатегории родителя.

1. В самое начало файла design/ваш_шаблон/html/features.tpl добавляем следующий код:

Код: Выделить всё

{* Subcategory menu*}
{if $category->subcategories || $category->level > 1}
   <h2 class="h2"><span data-language="subcategories">{$lang->subcategories}</span></h2>
   <div class="subcategory-menu" >
      {* Рекурсивная функция вывода дерева категорий *}
      {function name=catalog_tree}
         {if $categories}
            <ul>
               {foreach $categories as $c}
                  {* Показываем только видимые категории *}
                  {if $c->visible}
                     <li>
                        <a {if $category->id == $c->id}class="__active"{/if} href="catalog/{$c->url}" data-category="{$c->id}">{$c->name|escape}</a>               
                     </li>
                  {/if}
               {/foreach}
            </ul>
         {/if}
      {/function}
      
      {if $category->subcategories}
         {catalog_tree categories=$category->subcategories}
      {elseif $category->level > 1}
         {catalog_tree categories=$category->path[count($category->path)-2]->subcategories}
      {/if}
   </div>
{/if}

2. В css (design/ваш_шаблон/css/style.css) добавляем несколько новых стилей.

Код: Выделить всё

.subcategory-menu {
   padding-right: 23px;
   border-bottom: 1px solid #e1e8ed;
}
.subcategory-menu ul {
   margin-left: -10px
}
.subcategory-menu li{
   font-size: 13px;
   line-height: 16px;
   margin: 10px;
}
.subcategory-menu li a {
   text-decoration: none;   
}
.subcategory-menu li a.__active{
   font-weight: bold;
}


3. В админке добавляем новый перевод для переменной subcategories и даем ей значения Подкатегории, Subcategories, Підкатегорії для соответствующих языков.

На этом все! См.скриншот.
Screen.jpg
Cоздание и расширение функционала интернет-магазина на платформе OkayCMS 2 (с 3-й и 4-й версией не работаю)

OkayCMS M
Администратор
Аватара
OkayCMS M
Администратор
Репутация: 216
Сообщения: 1627
Зарегистрирован: 12.11.2015
С нами: 8 лет 4 месяца
Сайт Skype

Сообщение #2 OkayCMS » 30.05.2017, 21:20

Если подкатегорий будет слишком много, они слишком далеко вниз сдвинут каталог товаров. Ваше решение хорошое, но лучше его дорабатывать когда нужно, чем убирать категории когда они будут мешать.

Joe
Joe
Репутация: 0
Сообщения: 2
Зарегистрирован: 04.06.2017
С нами: 6 лет 9 месяцев

Сообщение #3 Joe » 04.06.2017, 14:24

Добавил "новый перевод для переменной subcategories", но надо же как-то вывести в шаблоне файлов ещё?)
Сорри, в php нуб.

И я так понимаю, что код показывает только подкатегории, когда в категории какой-то находишься.

А было бы удобно так:

Автомобили
- Грузовые
- Легковые

При чём, если меню длинное, то лучше сделать так, что бы подкатегории вылазили при нажатии на дочернюю, то есть:

Жмём на "Авто"

Выскакивают:
- Грузовые
- Легковые

makki M
makki M
Репутация: 199
Сообщения: 697
Зарегистрирован: 12.08.2016
С нами: 7 лет 7 месяцев
Откуда: Киев
Сайт

Сообщение #4 makki » 04.06.2017, 15:46

Joe писал(а):Добавил "новый перевод для переменной subcategories", но надо же как-то вывести в шаблоне файлов ещё?)
Сорри, в php нуб.
Делайте все по инструкции выше. Никакой php не надо.
Cоздание и расширение функционала интернет-магазина на платформе OkayCMS 2 (с 3-й и 4-й версией не работаю)

Sh1ning
Sh1ning
Репутация: -1
Сообщения: 8
Зарегистрирован: 21.11.2017
С нами: 6 лет 4 месяца

Сообщение #5 Sh1ning » 01.12.2017, 08:50

А как доработать так, чтобы категория сама на себя не ссылалась? (https://yadi.sk/i/kGVtyPMD3QDZGV) И не выводить в самой подкатегории ссылки на подкатегории.

makki M
makki M
Репутация: 199
Сообщения: 697
Зарегистрирован: 12.08.2016
С нами: 7 лет 7 месяцев
Откуда: Киев
Сайт

Сообщение #6 makki » 01.12.2017, 09:27

Sh1ning писал(а):А как доработать так, чтобы категория сама на себя не ссылалась? (https://yadi.sk/i/kGVtyPMD3QDZGV) И не выводить в самой подкатегории ссылки на подкатегории.
Вместо

Код: Выделить всё

      {if $category->subcategories}
         {catalog_tree categories=$category->subcategories}
      {elseif $category->level > 1}
         {catalog_tree categories=$category->path[count($category->path)-2]->subcategories}
      {/if}

Пишите просто

Код: Выделить всё

 {if $category->subcategories}
         {catalog_tree categories=$category->subcategories}
 {/if}
Cоздание и расширение функционала интернет-магазина на платформе OkayCMS 2 (с 3-й и 4-й версией не работаю)


Название раздела: Полезные решения для OkayCMS
Правила раздела: faq.php?mode=okay

Быстрый ответ


Введите код в точности так, как вы его видите. Регистр символов не имеет значения.
Код подтверждения

   

Вернуться в «Полезные решения для OkayCMS»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 14 гостей