Перейти к содержимому


Фото
* * * * * 1 голосов

Второе меню категорий

категории меню

  • Чтобы отвечать, сперва войдите на форум
2 ответов в теме

#1 nitrol

nitrol
  • Пользователь
  • 73 сообщений

Опубликовано 16.12.2014 - 18:09

Намедни задался целью сделать второй блок с категориями (не повторяющийся), например чтобы определенные категории выводились не в основном блоке, а в футере/правым сайдбаром или где еще.

 

niz.PNG

Для начала нам нужно сделать чекбокс в админке, чтобы сортировать категории для другого блока

  1. SQL запрос 
    ALTER TABLE `s_categories` ADD `cat_2` TINYINT( 1 ) NOT NULL AFTER `visible`;
    

     

  2. Файл simpla/CategoryAdmin.php после строки 
    $category->visible = $this->request->post('visible', 'boolean');
    

    добавляем 

    $category->cat_2 = $this->request->post('cat_2', 'boolean');
    

     

  3. Файл api/Categories.php (примерно 186 строка) вместо 
    $query = $this->db->placehold("SELECT c.id, c.parent_id, c.name, c.description, c.url, c.meta_title, c.meta_keywords, c.meta_description, c.image, c.visible, c.position
    										FROM __categories c ORDER BY c.parent_id, c.position");
    

    вставляем (добавляем c.cat_2 после c.visible)

    $query = $this->db->placehold("SELECT c.id, c.parent_id, c.name, c.description, c.url, c.meta_title, c.meta_keywords, c.meta_description, c.image, c.visible, c.cat_2, c.position
    										FROM __categories c ORDER BY c.parent_id, c.position");
    

     

  4. Файл simpla/design/html/category.tpl  находим код (~155 строка) 
    <input name=visible value='1' type="checkbox" id="active_checkbox" {if $category->visible}checked{/if}/> <label for="active_checkbox">Активна</label>
    

    после нее вставляем код 

    <input name=cat_2 value='1' type="checkbox" id="cat_2_checkbox" {if $category->cat_2}checked{/if}/> <label for="cat_2_checkbox">2й блок</label>
    

    "2й блок" меняйте на Ваше усмотрение

  5. Идете в Ваш шаблон, в index.tpl находите функцию вывода категорий 

    <!-- Меню каталога -->
    			<div id="catalog_menu">
    					
    			{* Рекурсивная функция вывода дерева категорий *}
    			{function name=categories_tree}
    			{if $categories}
    			<ul>
    			{foreach $categories as $c}
    				{* Показываем только видимые категории *}
    				{if $c->visible}
    					<li>
    						{if $c->image}<img src="{$config->categories_images_dir}{$c->image}" alt="{$c->name|escape}">{/if}
    						<a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}" data-category="{$c->id}">{$c->name|escape}</a>
    						{categories_tree categories=$c->subcategories}
    					</li>
    				{/if}
    			{/foreach}
    			</ul>
    			{/if}
    			{/function}
    			{categories_tree categories=$categories}
    			</div>
    			<!-- Меню каталога (The End)-->		
    

    Меняете ее на 

    <!-- Меню каталога -->
    			<div id="catalog_menu">
    					
    			{* Рекурсивная функция вывода дерева категорий *}
    			{function name=categories_tree}
    			{if $categories}
    			<ul>
    			{foreach $categories as $c}
    				{* Показываем только видимые категории *}
    				{if $c->visible}
    				{* Делаем вывод категорий БЕЗ галки "2й блок" *}
    				{if $c->cat_2}
    				{else}
    					<li>
    						{if $c->image}<img src="{$config->categories_images_dir}{$c->image}" alt="{$c->name|escape}">{/if}
    						<a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}" data-category="{$c->id}">{$c->name|escape}</a>
    						{categories_tree categories=$c->subcategories}
    					</li>
    				{/if}
    				{/if}
    			{/foreach}
    			</ul>
    			{/if}
    			{/function}
    			{categories_tree categories=$categories}
    			</div>
    			<!-- Меню каталога (The End)-->		
    

     

  6. Вставляем в место где будет вывод наших отсортированных категорий 
    <!-- Меню каталога -->
    			<div id="catalog_menu">
    					
    			{* Рекурсивная функция вывода дерева категорий *}
    			{function name=categories_tree_two}
    			{if $categories}
    			<ul>
    			{foreach $categories as $c}
    				{* Показываем только видимые категории *}
    				{if $c->visible}
    				{* Делаем вывод категорий С галкой "2й блок" *}
    				{if $c->cat_2}
    				
    					<li>
    						{if $c->image}<img src="{$config->categories_images_dir}{$c->image}" alt="{$c->name|escape}">{/if}
    						<a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}" data-category="{$c->id}">{$c->name|escape}</a>
    						{categories_tree_two categories=$c->subcategories}
    					</li>
    				{else}
    				{/if}
    				{/if}
    			{/foreach}
    			</ul>
    			{/if}
    			{/function}
    			{categories_tree_two categories=$categories}
    			</div>
    			<!-- Меню каталога (The End)-->		
    

     

За помощь дополнительная благодарность ув. тов. Kors и Kosjak76



#2 satelit8

satelit8
  • Пользователь
  • 5 сообщений

Опубликовано 04.02.2015 - 20:34

Намедни задался целью сделать второй блок с категориями (не повторяющийся), например чтобы определенные категории выводились не в основном блоке, а в футере/правым сайдбаром или где еще.

 

niz.PNG

Для начала нам нужно сделать чекбокс в админке, чтобы сортировать категории для другого блока

  1. SQL запрос 
    ALTER TABLE `s_categories` ADD `cat_2` TINYINT( 1 ) NOT NULL AFTER `visible`;
    

     

  2. Файл simpla/CategoryAdmin.php после строки 
    $category->visible = $this->request->post('visible', 'boolean');
    

    добавляем 

    $category->cat_2 = $this->request->post('cat_2', 'boolean');
    

     

  3. Файл api/Categories.php (примерно 186 строка) вместо 
    $query = $this->db->placehold("SELECT c.id, c.parent_id, c.name, c.description, c.url, c.meta_title, c.meta_keywords, c.meta_description, c.image, c.visible, c.position
    										FROM __categories c ORDER BY c.parent_id, c.position");
    

    вставляем (добавляем c.cat_2 после c.visible)

    $query = $this->db->placehold("SELECT c.id, c.parent_id, c.name, c.description, c.url, c.meta_title, c.meta_keywords, c.meta_description, c.image, c.visible, c.cat_2, c.position
    										FROM __categories c ORDER BY c.parent_id, c.position");
    

     

  4. Файл simpla/design/html/category.tpl  находим код (~155 строка) 
    <input name=visible value='1' type="checkbox" id="active_checkbox" {if $category->visible}checked{/if}/> <label for="active_checkbox">Активна</label>
    

    после нее вставляем код 

    <input name=cat_2 value='1' type="checkbox" id="cat_2_checkbox" {if $category->cat_2}checked{/if}/> <label for="cat_2_checkbox">2й блок</label>
    

    "2й блок" меняйте на Ваше усмотрение

  5. Идете в Ваш шаблон, в index.tpl находите функцию вывода категорий 

    <!-- Меню каталога -->
    			<div id="catalog_menu">
    					
    			{* Рекурсивная функция вывода дерева категорий *}
    			{function name=categories_tree}
    			{if $categories}
    			<ul>
    			{foreach $categories as $c}
    				{* Показываем только видимые категории *}
    				{if $c->visible}
    					<li>
    						{if $c->image}<img src="{$config->categories_images_dir}{$c->image}" alt="{$c->name|escape}">{/if}
    						<a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}" data-category="{$c->id}">{$c->name|escape}</a>
    						{categories_tree categories=$c->subcategories}
    					</li>
    				{/if}
    			{/foreach}
    			</ul>
    			{/if}
    			{/function}
    			{categories_tree categories=$categories}
    			</div>
    			<!-- Меню каталога (The End)-->		
    

    Меняете ее на 

    <!-- Меню каталога -->
    			<div id="catalog_menu">
    					
    			{* Рекурсивная функция вывода дерева категорий *}
    			{function name=categories_tree}
    			{if $categories}
    			<ul>
    			{foreach $categories as $c}
    				{* Показываем только видимые категории *}
    				{if $c->visible}
    				{* Делаем вывод категорий БЕЗ галки "2й блок" *}
    				{if $c->cat_2}
    				{else}
    					<li>
    						{if $c->image}<img src="{$config->categories_images_dir}{$c->image}" alt="{$c->name|escape}">{/if}
    						<a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}" data-category="{$c->id}">{$c->name|escape}</a>
    						{categories_tree categories=$c->subcategories}
    					</li>
    				{/if}
    				{/if}
    			{/foreach}
    			</ul>
    			{/if}
    			{/function}
    			{categories_tree categories=$categories}
    			</div>
    			<!-- Меню каталога (The End)-->		
    

     

  6. Вставляем в место где будет вывод наших отсортированных категорий 
    <!-- Меню каталога -->
    			<div id="catalog_menu">
    					
    			{* Рекурсивная функция вывода дерева категорий *}
    			{function name=categories_tree_two}
    			{if $categories}
    			<ul>
    			{foreach $categories as $c}
    				{* Показываем только видимые категории *}
    				{if $c->visible}
    				{* Делаем вывод категорий С галкой "2й блок" *}
    				{if $c->cat_2}
    				
    					<li>
    						{if $c->image}<img src="{$config->categories_images_dir}{$c->image}" alt="{$c->name|escape}">{/if}
    						<a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}" data-category="{$c->id}">{$c->name|escape}</a>
    						{categories_tree_two categories=$c->subcategories}
    					</li>
    				{else}
    				{/if}
    				{/if}
    			{/foreach}
    			</ul>
    			{/if}
    			{/function}
    			{categories_tree_two categories=$categories}
    			</div>
    			<!-- Меню каталога (The End)-->		
    

     

За помощь дополнительная благодарность ув. тов. Kors и Kosjak76

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



#3 MStyle28

MStyle28
  • Пользователь
  • 97 сообщений
  • Пользователь
  • Версия CMS:2.x
  • Откуда:Одесса

Опубликовано 21.08.2017 - 19:38

Отличное решение,спасибо!

 

Не подскажете как реализовать так,чтобы можно было менять расположение категорий в втором меню,без изменений в основном?







Также с меткой «категории, меню»

0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых