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

Вывод категориИ по id на другой странице


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

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

Как решить такую задачку

Как вывести категорию под id=8 и ее подкатегории?

{if  $page->menu_id == '3'}
       Тут все категория id=8 с подкатегориями
{/if}
 

 

 

Суть в чем когда я нахожусь на одной из страниц меню под id=3, то что бы показал блок с категорией id=8

 

P.S. перечислять id категории не предлагать, так как категории будут постоянно меняться.

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

Через плагин мене кажется самое подходящее решение. 

Пишите плагин для выбора категории по id и вызываете где надо и когда надо. 

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

								
<ul class="category_page {if$page->menu_id == '0'}cat{elseif $page->menu_id == '1'}cat{/if}_{$c->id}">
	<li class="widget-container">
	<h2 class="widget-title">{$c->name}  </h2>
		{if $c->subcategories}						
			<ul id="nav_list_second">
				{categories_tree categories=$c->subcategories level=$level+1}
			</ul>
		{/if}
	</li>	
</ul>
{literal}
<style>
	.category_page {display: none;}
	.category_page.cat_6 {display: block !important;}
	.category_page.cat_7 {display: block !important;}
</style>
{/literal}

 

 

Простое решение)))

Изначально все категории скрыты

Когда я нахожусь на странице из меню id=0 то покажется блок с категориями id=6

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

Можно и так. Но как у всякого решения - есть плюсы и минусы.

Не вижу разницы как определять категорию - через Смарти или через стили.

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

Я бы обошел все категории в шаблоне, и вывел именно то, что нужно.

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

А вообще какой-то бредовый топик, перепутано все: категории, страницы и т.д.

Как они вообще пересекаются?

Код будет работать ТОЛЬКО если есть у всех страниц с $page->menu_id == '1' откуда-то взялась категория.

Чего обычно никогда не бывает.

Причем не $category а $c, которая вообще непонятно откуда взялась.

В стандартном движке такая переменная встречается только внутри циклов.

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

{if$page->menu_id == '0'}cat{elseif $page->menu_id == '1'}cat{/if}_{$c->id}

Это отдельный вопрос, во-первых, такой код должен выдать ошибку.

Во-вторых, даже если он отработает, на страницах с $page->menu_id == '0' и  $page->menu_id == '1' будет ОДИНАКОВО cat_{$c->id}, на остальных - _{$c->id}

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

А вообще какой-то бредовый топик, перепутано все: категории, страницы и т.д.

Как они вообще пересекаются?

Код будет работать ТОЛЬКО если есть у всех страниц с $page->menu_id == '1' откуда-то взялась категория.

Чего обычно никогда не бывает.

Причем не $category а $c, которая вообще непонятно откуда взялась.

В стандартном движке такая переменная встречается только внутри циклов.

 

Для Вас, возможно, бредовый. А у ТС, видимо, нестандартный функционал. Если бы речь шла о стандартном, вопроса бы и не было...

 

Ps-simpla™,  зачем Вы все так искусственно усложняете?  Почему бы не сделать просто и прямо:

 

1. В нужном view определить, если требуется

if ($page->menu_id == 3){
	$category8=$this->categories->get_category(8);
	$this->design->assign('category8', $category8);
}

2. В шаблоне

{if $category8}
<ul class="category_page">
	<li class="widget-container">
	<h2 class="widget-title">{$category8->name}  </h2>
		{if $category8->subcategories}						
			<ul id="nav_list_second">
				{categories_tree categories=$category8->subcategories}
			</ul>
		{/if}
	</li>	
</ul>
{/if}

Это работает, если эта вставка в шаблоне находится ПОСЛЕ стандартного определения функции categories_tree.

Если в Вашей ситуации не так, то дополнительные меры принять придется: надо до вызова добавить определение функции - этой же или копии...

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

Ps-simpla™,  зачем Вы все так искусственно усложняете?

^_^  всегда у меня так, пользуюсь не стандартными решениями

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

 

1. В нужном view определить, если требуется

{if $page->menu_id == '3'}
	$category8=$this->categories->get_category(8);
	$this->design->assign('category8', $category8);
{/if}

 

Корс, я думаю немного спутали смарти и php... Исправте пока вопросы не начались

 

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

ps-simpla, решение что я описал Вам тут так же подойдет и для этого...

 

{if isset($all_categories[8]) && $page->menu_id == '3'}
<ul class="category_page">
<li class="widget-container">
<h2 class="widget-title">{$all_categories[8]->name}  </h2>
  {if $all_categories[8]->subcategories}     
   <ul id="nav_list_second">
    {categories_tree categories=$all_categories[8]->subcategories}
   </ul>
  {/if}
</li>
</ul>
{/if}
Изменено пользователем yr4ik
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

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

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