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

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


Перейти к решению Решено Kosjak76,

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

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

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

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

 

{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}

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

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

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

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

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

 

a03504ab8696c10e52243bcc73519a78.png

Изменено пользователем mistika
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

 

a03504ab8696c10e52243bcc73519a78.png

 

 

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

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

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

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

 

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

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

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

 

Извиняюсь за дотошность, в синтаксисе в нестандартных ситуациях не сильна, а вызвать их как можно в 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

 

Изменено пользователем shooroop
Ссылка на сообщение
Поделиться на другие сайты

Основная мысль понятна. Спасибо. Сделала, может кому пригодится.
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

 

Изменено пользователем mistika
Ссылка на сообщение
Поделиться на другие сайты

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

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}                        

 

 

 

Изменено пользователем shooroop
Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

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

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

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

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

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

 

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

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

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

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

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

 

хостинг?

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

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

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

В cpanel

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

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

BtQgP4UdoHA.jpg

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

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

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

В cpanel

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

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

BtQgP4UdoHA.jpg

 

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

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

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

Изменено пользователем alexivchenko
Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

smarty_caching = false; 

Изменено пользователем mistika
Ссылка на сообщение
Поделиться на другие сайты

или у вас в 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"

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

или у вас в 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>
Изменено пользователем mistika
Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

 указана как 

ExpiresByType text/js "access plus 259200  seconds"

 

 

 

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

 

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

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

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

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

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

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

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

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

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

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

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