nitrol Posted December 16, 2014 Report Share Posted December 16, 2014 Намедни задался целью сделать второй блок с категориями (не повторяющийся), например чтобы определенные категории выводились не в основном блоке, а в футере/правым сайдбаром или где еще. Для начала нам нужно сделать чекбокс в админке, чтобы сортировать категории для другого блокаSQL запрос ALTER TABLE `s_categories` ADD `cat_2` TINYINT( 1 ) NOT NULL AFTER `visible`; Файл simpla/CategoryAdmin.php после строки $category->visible = $this->request->post('visible', 'boolean'); добавляем $category->cat_2 = $this->request->post('cat_2', 'boolean'); Файл 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"); Файл 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й блок" меняйте на Ваше усмотрение Идете в Ваш шаблон, в 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)--> Вставляем в место где будет вывод наших отсортированных категорий <!-- Меню каталога --> <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 Quote Link to post Share on other sites
satelit8 Posted February 4, 2015 Report Share Posted February 4, 2015 Намедни задался целью сделать второй блок с категориями (не повторяющийся), например чтобы определенные категории выводились не в основном блоке, а в футере/правым сайдбаром или где еще. Для начала нам нужно сделать чекбокс в админке, чтобы сортировать категории для другого блокаSQL запрос ALTER TABLE `s_categories` ADD `cat_2` TINYINT( 1 ) NOT NULL AFTER `visible`; Файл simpla/CategoryAdmin.php после строки $category->visible = $this->request->post('visible', 'boolean'); добавляем $category->cat_2 = $this->request->post('cat_2', 'boolean'); Файл 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"); Файл 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й блок" меняйте на Ваше усмотрение Идете в Ваш шаблон, в 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)--> Вставляем в место где будет вывод наших отсортированных категорий <!-- Меню каталога --> <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-блок нажимаю сохранить и галка исчезает. помогите добить... Quote Link to post Share on other sites
MStyle28 Posted August 21, 2017 Report Share Posted August 21, 2017 Отличное решение,спасибо! Не подскажете как реализовать так,чтобы можно было менять расположение категорий в втором меню,без изменений в основном? Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.