Jump to content

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


Recommended Posts

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

 

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

  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

Link to post
Share on other sites
  • 1 month later...

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

 

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

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

Link to post
Share on other sites
  • 2 years later...

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

 

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

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...