Перейти к содержанию
Официальный форум поддержки Simpla

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


Рекомендуемые сообщения

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

 

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

  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

Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...

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

 

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

  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-блок нажимаю сохранить и галка исчезает. помогите добить...

Ссылка на сообщение
Поделиться на другие сайты
  • 2 года спустя...

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

 

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

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...