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

Создание дополнительного меню


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

так ))))

это не смешно! Я же процитировал автора, он пишет что ДАЖЕ под меню, что мне и нужно было. 

Тогда зачем эта доработка вообще кому-то обосралась?

 

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

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

Лучшие авторы в теме

Лучшие авторы в теме

Мда! Всем спасибо )))

Жаль, что того, что мне нужно никто еще на симпле не делал. Или я плохо пользуюсь поиском

 

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

1 - главное   (главная, услуги, о нас, каталог, контакты)

2 - услуги     (ремонт пк, ремонт телефонов, ремонт планшетов)

3 - контакты (главный офис, сервисный центр)

 

чтобы вывести одно меню в другом

<ul>
{foreach $pages as $p}
	{if $p->menu_id == 1}
	<li {if $page && $page->id == $p->id}class="selected"{/if}>
		<a data-page="{$p->id}" href="{$p->url}">{$p->name|escape}</a>

		{if $p->id==2}
			<ul>
				{foreach $pages as $p}
					{if $p->menu_id == 2}
					<li {if $page && $page->id == $p->id}class="selected"{/if}>
						<a data-page="{$p->id}" href="{$p->url}">{$p->name|escape}</a>
					</li>
					{/if}
				{/foreach}
			</ul>
		{/if}
		{if $p->id==5}
			<ul>
				{foreach $pages as $p}
					{if $p->menu_id == 3}
					<li {if $page && $page->id == $p->id}class="selected"{/if}>
						<a data-page="{$p->id}" href="{$p->url}">{$p->name|escape}</a>
					</li>
					{/if}
				{/foreach}
			</ul>
		{/if}		
	</li>
	{/if}
{/foreach}
</ul>

 

и получите такую структуру

 

главная

услуги

- ремонт пк

- ремонт телефонов

- ремонт планшетов

о нас

каталог

контакты

- главный офис

- сервисный центр

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

Если вам нужна вложенность страниц, то это многие делали. И сделают еще, но не бесплатно.

Если хотите нахаляву - возьмите то, что уже сделали и при помощи условий в Смарти выведите то, что вам нужно

			{foreach $pages as $p}
				{* Выводим только страницы из первого меню *}
				{if $p->menu_id == 1}
				<li {if $page && $page->id == $p->id}class="selected"{/if}>
					<a data-page="{$p->id}" href="{$p->url}">{$p->name|escape}</a>
				</li>
{if $page->url == 'onas'}
			{foreach $pages as $p1}
				{* Выводим только страницы из нужного меню *}
				{if $p1->menu_id == 8}
				<li {if $page && $page->id == $p1->id}class="selected"{/if}>
					<a data-page="{$p1->id}" href="{$p1->url}">{$p1->name|escape}</a>
				</li>
				{/if}
			{/foreach}
{/if}
				{/if}
			{/foreach}
Ссылка на сообщение
Поделиться на другие сайты

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

1 - главное   (главная, услуги, о нас, каталог, контакты)

2 - услуги     (ремонт пк, ремонт телефонов, ремонт планшетов)

3 - контакты (главный офис, сервисный центр)

 

чтобы вывести одно меню в другом

<ul>
{foreach $pages as $p}
	{if $p->menu_id == 1}
	<li {if $page && $page->id == $p->id}class="selected"{/if}>
		<a data-page="{$p->id}" href="{$p->url}">{$p->name|escape}</a>

		{if $page->id==2}
			<ul>
				{foreach $pages as $p}
					{if $p->menu_id == 2}
					<li {if $page && $page->id == $p->id}class="selected"{/if}>
						<a data-page="{$p->id}" href="{$p->url}">{$p->name|escape}</a>
					</li>
					{/if}
				{/foreach}
			</ul>
		{/if}
		{if $page->id==5}
			<ul>
				{foreach $pages as $p}
					{if $p->menu_id == 3}
					<li {if $page && $page->id == $p->id}class="selected"{/if}>
						<a data-page="{$p->id}" href="{$p->url}">{$p->name|escape}</a>
					</li>
					{/if}
				{/foreach}
			</ul>
		{/if}		
	</li>
	{/if}
{/foreach}
</ul>

 

и получите такую структуру

 

главная

услуги

- ремонт пк

- ремонт телефонов

- ремонт планшетов

о нас

каталог

контакты

- главный офис

- сервисный центр

а это в каком файле нужно править?

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

а это в каком файле нужно править?

 

где вы хотите выводить меню ваше там и править. по дефолту меню выводится в index.tpl. и я там немного поправил. должно быть не {if $page->id==2} а {if $p->id==2}

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

Спасибо за решение.

Каким образом можно разрешить выставлять одну и ту же страницу в разных меню?

 

Что-то вроде категорий в товаре,при добавлении товара можно указать несколько категорий.Как сделать тоже самое с меню?

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

Спасибо за решение.

Каким образом можно разрешить выставлять одну и ту же страницу в разных меню?

 

Что-то вроде категорий в товаре,при добавлении товара можно указать несколько категорий.Как сделать тоже самое с меню?

 

редиректом например, или убрать проверку на url

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

редиректом например, или убрать проверку на url

 

Я тоже думал убрать проверку на url но тогда при наличии двух одинаковых страниц какую будет выводить?)

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

Я тоже думал убрать проверку на url но тогда при наличии двух одинаковых страниц какую будет выводить?)

 

уберите и узнаете

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

Я тоже думал убрать проверку на url но тогда при наличии двух одинаковых страниц какую будет выводить?)

Первую ТЗ списка.

Я делал то что вам нужно, одну страницу можно поместить в нескольких меню, вот http://prntscr.com/gj1j83.

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

Первую ТЗ списка.

Я делал то что вам нужно, одну страницу можно поместить в нескольких меню, вот http://prntscr.com/gj1j83.

В вашем случае можно менять расположение страницы в списке в разных меню? 

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

 

Не поделитесь реализацией? Или на крайний случай подскажите как примерно реализовать?

Нужно сделать связь между меню и страницей.

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

Каким образом можно разрешить выставлять одну и ту же страницу в разных меню?

 

Можно предложить способ идейно неправильный, но простой в реализации.

 

1. в simpla/PageAdmin.php удалить (закомментировать) строки

## Не допустить одинаковые URL разделов.

if(($p = $this->pages->get_page($page->url)) && $p->id!=$page->id)

{

$this->design->assign('message_error', 'url_exists');

}

else

 

2. в api/Pages.php заменить

$query = "SELECT id, url, header, name, meta_title, meta_description, meta_keywords, body, menu_id, position, visible

FROM __pages $where LIMIT 1";

на

$query = "SELECT id, url, header, name, meta_title, meta_description, meta_keywords, body, menu_id, position, visible

FROM __pages $where order by id LIMIT 1";

 

3. После этого можно добавить во второе меню, например, пункт 'Блог' из первого, создав новую страницу во втором меню, в которой вписать в поля названия и URL значения 'Блог' и 'blog' (совпадают со значениями страницы из первого меню). Остальные поля можно не заполнять.

4. Из двух (или нескольких) страниц с одинаковым URL будет выводиться та, у которой наименьший ID. Именно для этого в запрос 2 добавлено order by id.

 

Недостаток в том, что п.1 отключает проверку на дублирование URL. Думаю, это не сильно важно, поскольку обычно страниц немного, и дублирование, если и возникнет, будет быстро замечено и исправлено.

 

Полностью не проверял. Если заметите другие недостатки, сообщайте.

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

Теперь представим сколько будет создано одинаковых страниц.

 

Ровно столько, сколько захочет администратор. Думаю, для среднего пользователя - в пределах 10-20. Экономить на спичках не обязательно.

 

Кому такое топорное решение нужно?

 

Вопрос индивидуальный. Каждый решает сам - нужно ему или нет и обычно при этом разрешения у третьих лиц не спрашивают.

Как говорится, кто любит попа, а кто попадью.

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

Теперь представим сколько будет создано одинаковых страниц.

Кому такое топорное решение нужно?

Не поделитесь Вашим решением?

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

Не поделитесь Вашим решением?

 

 

можно гораздо проще добавить еще поле в таблицу

 

в админке  если заполнить поле  то подменяем url

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

Не поделитесь Вашим решением?

Решение для симплы не подойдёт так как делалось для другой системы, там другая архитектура.

Могу разработать индивидуально но платно примерно 30-40$

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

На шаге 10 в файле menu.tpl ошибка "Меню" адрес MenusAdmin и да же файл созданный с названием MenuAdmin.php а ошибка и по сей день копируется.

Правильно указываем в файле menu.tpl <li class="active"><a href="index.php?module=MenuAdmin">Меню</a></li>
 

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

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

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

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

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

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

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

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

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

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