Jump to content

Убрать категорию из меню


Go to solution Solved by Kosjak76,

Recommended Posts

Скройте её в админке.

Сделать не активной ? Тогда категория перестаёт отображаться везде. Мне нужно что бы она отображалась по ссылке но не в меню

Link to post
Share on other sites

 

{if $c->visible && $c->id != 'АйДи_вашей_категории'}

Как-то так

{assign var="level" value=1}
{function name=categories_tree}
{if $categories}
	<ul id="nav" ul-level='{$level}' {if $level == 1}class='top_ul'{else}class='sub_ul ul_level_{$level}'{/if}>
	{foreach $categories as $c}
	{if $c->visible}
	<li class='level_{$level} {if in_array($category->id, $c->children)}active{/if}'>
	   <a href="catalog/{$c->url}" data-category="{$c->id}">{$c->name|escape}</a>
	   {categories_tree categories=$c->subcategories level=$level+1}
	</li>
	{/if}
	{/foreach}
	</ul>
{/if}
{/function}



{categories_tree categories=$categories}

Подскажите, в какое месте поставить ? :)

Link to post
Share on other sites
  • 9 months later...

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

Теоретически я могу  тегами нечто подобное создать но + ув и tag в урле, а мне надо категория/раздел.

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

 

a03504ab8696c10e52243bcc73519a78.png

Edited by mistika
Link to post
Share on other sites

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

Теоретически я могу  тегами нечто подобное создать но + ув и tag в урле, а мне надо категория/раздел.

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

 

a03504ab8696c10e52243bcc73519a78.png

 

 

добавить в таблице категориий tinyint   а в админке у категорий input  и если чекбокс у инпута стоит то не показывать категорию все просто

Link to post
Share on other sites

добавить в таблице категориий tinyint   а в админке у категорий input  и если чекбокс у инпута стоит то не показывать категорию все просто

Большое Человеческое Спасибо!

 

Извиняюсь за дотошность, в синтаксисе в нестандартных ситуациях не сильна, а вызвать их как можно в pruducts.tpl именно эти у которых чекбокс снят?

Link to post
Share on other sites

Большое Человеческое Спасибо!

 

Извиняюсь за дотошность, в синтаксисе в нестандартных ситуациях не сильна, а вызвать их как можно в pruducts.tpl именно эти у которых чекбокс снят?

 

<!-- Меню каталога -->
			<div id="catalog_menu">
					
			{* Рекурсивная функция вывода дерева категорий *}
			{function name=categories_tree_two}
			{if $categories}
			<ul>
			{foreach $categories as $c}
				{* Показываем только видимые категории *}
				{if $c->visible and $c->checkbox}
				{* Делаем вывод категорий С галкой "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)-->		

 

на примере стандартного кода   к {if $c->visible}  добавил {if $c->visible and $c->checkbox}

проверку на чекбокс если он равен 1 в базе   так же вам в категориес апи надо добавить в выборку с.checkbox

 

Edited by shooroop
Link to post
Share on other sites

Основная мысль понятна. Спасибо. Сделала, может кому пригодится.
1. В поле s_categories поле tinyint со значением 1 или 0 кому как надо по умолчанию чтобы вкл выкл было
2. в папке api categories.php где выбираем все категории там добавить имя созданного поля по примеру перечисленных полей, у всех по разному. у кого То c.visible, c.position и др, у кого-то без c смотрите сами.
3. В папке view CategoryAdmin.php примерно с 30 по 40 строки есть

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

по примеру вставить название вашего поля
4. Дальше где вы хотите. может вы по другому захотите, мне удобно в самой категории галку ставить
В файле дизайна категории где основная форма вставляете
ВАШЕПОЛЕ}checked{/if}/> Включить

5. Далее в шаблоне дизайна делаете вывод где хотите, хотите в продукте, хотите в категориях.. Смысл в том, что если галка стоит - то отображать в месте вывода, если не стоит, то не отображать. галку АКТИВНЫЙ у категории в этом случае ставить не надо, чтобы в меню не отображалось
6. В файле sitemap.xml делаете вывод по строчкам не подскажу у меня расширенный сайтмэп, но раздел Категории там
if($c->chek) { $url = $simpla->config->root_url.'/catalog/'.esc($c->url); print "\t"."\n"; print "\t\t$url"."\n"; print "\t\t$lastmod"."\n"; }


Я сделала для подкатегорий это. Вывод в продуктсе выглядит так
{if $categories}

{foreach $category->subcategories as $c} {if $c->chek}
{$c->name}
{/if} {/foreach}

{/if}


И возник вопрос. вы могли бы подсказать как там else написать, чтобы сайт не падал :D смысл в чем. Оно выводит сейчас то, что я цепляю к родительской категории в подкатегориях, а как сделать так, чтобы
1. помимо прицепленных подкатегорий к категории 2 уровня, там же выводилась верхняя родительская категория 1 уровня?
2. в родительской категории 1 уровня выводились все доп поля CHEK!!!! из дочерних подкатегорий?

ппц сложно объяснить, попробую пример написать

Категория главная
Подкатегория - у нее скрытые
Подподкатегория - тоже имеет скрытые

В подкатегории и Подподкатегория я бы хотела вывести Категория главная (галочку включить ставим)

А в Категория главная вывести все скрытые из всех подкатегорий)

 

з.ы. у меня поле chek  вы можете назвать хоть 666

 

Edited by mistika
Link to post
Share on other sites

Основная мысль понятна. Спасибо. Сделала, может кому пригодится.

1. В поле s_categories поле tinyint со значением 1 или 0 кому как надо по умолчанию чтобы вкл выкл было

2. в папке api categories.php где выбираем все категории там добавить имя созданного поля по примеру перечисленных полей, у всех по разному. у кого То c.visible, c.position и др, у кого-то без c смотрите сами.

3. В папке view CategoryAdmin.php примерно с 30 по 40 строки есть

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

по примеру вставить название вашего поля

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

В файле дизайна категории где основная форма вставляете

ВАШЕПОЛЕ}checked{/if}/> Включить

5. Далее в шаблоне дизайна делаете вывод где хотите, хотите в продукте, хотите в категориях.. Смысл в том, что если галка стоит - то отображать в месте вывода, если не стоит, то не отображать. галку АКТИВНЫЙ у категории в этом случае ставить не надо, чтобы в меню не отображалось

6. В файле sitemap.xml делаете вывод по строчкам не подскажу у меня расширенный сайтмэп, но раздел Категории там

if($c->chek) { $url = $simpla->config->root_url.'/catalog/'.esc($c->url); print "\t"."\n"; print "\t\t$url"."\n"; print "\t\t$lastmod"."\n"; }

 

Я сделала для подкатегорий это. Вывод в продуктсе выглядит так

{if $categories}

{foreach $category->subcategories as $c} {if $c->chek}
{$c->name}
{/if} {/foreach}

{/if}

 

И возник вопрос. вы могли бы подсказать как там else написать, чтобы сайт не падал :D смысл в чем. Оно выводит сейчас то, что я цепляю к родительской категории в подкатегориях, а как сделать так, чтобы

1. помимо прицепленных подкатегорий к категории 2 уровня, там же выводилась верхняя родительская категория 1 уровня?

2. в родительской категории 1 уровня выводились все доп поля CHEK!!!! из дочерних подкатегорий?

 

ппц сложно объяснить, попробую пример написать

 

Категория главная

Подкатегория - у нее скрытые

Подподкатегория - тоже имеет скрытые

 

В подкатегории и Подподкатегория я бы хотела вывести Категория главная (галочку включить ставим)

 

А в Категория главная вывести все скрытые из всех подкатегорий)

 

з.ы. у меня поле chek  вы можете назвать хоть 666

 

 

view/Indexview.php

 

после

 

 // Категории товаров
		$this->design->assign('categories', $this->categories->get_categories_tree());

 

добавить

 // Категории товаров
		$this->design->assign('categories_check', $this->categories->get_categories_tree(array('check'=>1)));

 

и там где не надо check выводить в шаблоне  изменить

 

{function name=categories_tree_new}
			{if $categories_check}
	.....
			
			{categories_tree_new categories=$categories_check}
			 
 {/if}                        

 

 

 

Edited by shooroop
Link to post
Share on other sites

Большое спасибо.

 

Но у меня возникла непредвиденная ситуация с предыдущим решением.

Всё работает примерно сутки, потом на месте витрины в этих скрытых подкатегориях появляется ошибка 404. 

Первый раз помогло просто почистить кэш на сервере.

через сутки опять отвалилось. Чистка кэша не помогла, закомментировала код, через несколько часов раскомментировала - опять работает. Через сутки 404) 

Что может вызывать такой неожиданный эффект?

Link to post
Share on other sites

Большое спасибо.

 

Но у меня возникла непредвиденная ситуация с предыдущим решением.

Всё работает примерно сутки, потом на месте витрины в этих скрытых подкатегориях появляется ошибка 404. 

Первый раз помогло просто почистить кэш на сервере.

через сутки опять отвалилось. Чистка кэша не помогла, закомментировала код, через несколько часов раскомментировала - опять работает. Через сутки 404) 

Что может вызывать такой неожиданный эффект?

 

хостинг?

Link to post
Share on other sites

fozzy. Весь сайт корректно работает ошибка именно на эти доп категории. 

А какой механизм сбоя может быть на хостинге? Они безбожно тупят я третьи сутки с ними переписываюсь

В cpanel

появились вот такие ошибки. Техподдержка вместо ответа wtf попросила спросить у программиста какие требования

под мой сайт симпла 2.2.4 

BtQgP4UdoHA.jpg

Link to post
Share on other sites

fozzy. Весь сайт корректно работает ошибка именно на эти доп категории. 

А какой механизм сбоя может быть на хостинге? Они безбожно тупят я третьи сутки с ними переписываюсь

В cpanel

появились вот такие ошибки. Техподдержка вместо ответа wtf попросила спросить у программиста какие требования

под мой сайт симпла 2.2.4 

BtQgP4UdoHA.jpg

 

подозреваю, что это ваш сайт pechnoydom.ru и на нем стоит включенный smarty_caching = true; 

Выключите его, он не правильно работает. 

На вашем месте, я бы обновил Simpla и Smarty

Edited by alexivchenko
Link to post
Share on other sites

Спасибо большое, сейчас попробую

Я бы с радостью обновила, но у меня ппц сколько изменений и доработок навернуто, я не знаю как обновить не задев их.

 

нет(( выключено

smarty_caching = false; 

Edited by mistika
Link to post
Share on other sites

или у вас в htaccess указана настройка кэширования не верно 

<ifModule mod_expires.c>
	ExpiresActive On
	#по умолчанию кеш в 5 секунд
	ExpiresDefault "access plus 5 seconds"
	#кэшировать флэш и изображения на месяц
	ExpiresByType image/x-icon "access plus 2592000 seconds"
	ExpiresByType image/jpeg "access plus 2592000 seconds"
	ExpiresByType image/png "access plus 2592000 seconds"
	ExpiresByType image/gif "access plus 2592000 seconds"
	ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
	#кэшировать css, javascript и текстовые файлы на одну неделю
	ExpiresByType text/css "access plus 604800 seconds"
	ExpiresByType text/javascript "access plus 604800 seconds"
	ExpiresByType application/javascript "access plus 604800 seconds"
	ExpiresByType application/x-javascript "access plus 604800 seconds"
	#кэшировать html и htm файлы на один день
	ExpiresByType text/html "access plus 43200 seconds"
	#кэшировать xml файлы на десять минут
	ExpiresByType application/xhtml+xml "access plus 600 seconds"
</ifModule> 

3 дня это 259200 в секундах 

Получается, что у вас 

Строка ExpiresByType text/javascript "access plus 259200  seconds"

 указана как 

ExpiresByType text/js "access plus 259200  seconds"

Link to post
Share on other sites

или у вас в htaccess указана настройка кэширования не верно 

<ifModule mod_expires.c>
	ExpiresActive On
	#по умолчанию кеш в 5 секунд
	ExpiresDefault "access plus 5 seconds"
	#кэшировать флэш и изображения на месяц
	ExpiresByType image/x-icon "access plus 2592000 seconds"
	ExpiresByType image/jpeg "access plus 2592000 seconds"
	ExpiresByType image/png "access plus 2592000 seconds"
	ExpiresByType image/gif "access plus 2592000 seconds"
	ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
	#кэшировать css, javascript и текстовые файлы на одну неделю
	ExpiresByType text/css "access plus 604800 seconds"
	ExpiresByType text/javascript "access plus 604800 seconds"
	ExpiresByType application/javascript "access plus 604800 seconds"
	ExpiresByType application/x-javascript "access plus 604800 seconds"
	#кэшировать html и htm файлы на один день
	ExpiresByType text/html "access plus 43200 seconds"
	#кэшировать xml файлы на десять минут
	ExpiresByType application/xhtml+xml "access plus 600 seconds"
</ifModule> 

3 дня это 259200 в секундах 

Получается, что у вас 

Строка ExpiresByType text/javascript "access plus 259200  seconds"

 указана как 

ExpiresByType text/js "access plus 259200  seconds"

Стоп.. 

А вы где этот кусок взяли? у меня вообще нет в секундах

ExpiresByType text/javascript "access plus 1 year"   вот так у меня

 

 

А, что проблема с кэшированием я рассматривала как вариант

но увы, этот код, что вы приводите я поставила уже после того как отчаялась и написала сюда.

Собственно этот кусок был вставлен как одна из попыток решить проблему.

родной код был такой.

 

<ifmodule mod_expires.c>
    <filesmatch "\.(jpg|jpeg|png|gif|js|css|swf|ico|woff|mp3)$">
        ExpiresActive on
        ExpiresDefault "access plus 7 days"
    </filesmatch>
</ifmodule>
Edited by mistika
Link to post
Share on other sites

или у вас в htaccess указана настройка кэширования не верно 

 

Получается, что у вас 

Строка ExpiresByType text/javascript "access plus 259200  seconds"

 указана как 

ExpiresByType text/js "access plus 259200  seconds"

 

 

 

Мне пора в отпуск. 5 лет без выходных и отпусков не пошли на пользу

Всё дошло до жирафа.

Вы совершенно правы. Огромное спасибо, именно это и было проблемой. 

Link to post
Share on other sites

хрена лысого как говорится, теперь в хроме вроде как работает, в опере нет. 

при этом если чекать код ответа сервера он 404.

Что я сделала не так?)

Link to post
Share on other sites

хрена лысого как говорится, теперь в хроме вроде как работает, в опере нет.

при этом если чекать код ответа сервера он 404.

Что я сделала не так?)

Подчистить кеш и куки в опере
Link to post
Share on other sites

Ну вот  так всегда, а ларчик просто открывался. 

 

Я же писала, что они выключены?))  и что вывод для них в сайтмэпе делала из-за этого, что выключенное там не отображается.

Надо как выше писали в меню категорий {if $c->visible and !$c->имя_поля} вставить и включить в админке. Пока всё работает) 

 

Большое спасибо всем, кто принял участие в ветке.

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...