Создать страницу в магазине, но чтобы ее не было в меню
Приветствую всех, на рисовалась проблема, хочу сделать страницу в витрине магазина, которая не будет "вылазить" в меню, т.е создаешь страницу помечаешь как черновик и она доступна по адресу сайт/servis/, а не как сейчас доступен только пред просмотр данной страницы сайт/servis/?preview=7dde9a3c1ade070aef000d632d1cdd8e.
Вопрос как сделать или реализовать так, чтобы создавая страницу в витрине, она не вылазила в меню, собственно код ниже как там устроено:
P/s: то, что ответили в ТП:
Т.е., вам нужно, чтобы в меню не было определенных страниц, но они были бы доступны по прямой ссылке?
Для этого нужно редактировать, как минимум, шаблон sidebar.html.
Вопрос как сделать или реализовать так, чтобы создавая страницу в витрине, она не вылазила в меню, собственно код ниже как там устроено:
<!-- меню -->Но самое странное, что там создан сайт/blog/ и стоит как черновик, не вылазит в меню, но и работает по ссылке сайт/blog/, а страница созданная мною сегодня сайт/servis/ не хочет работать, выдает 404 ошибку.
<div class="cpt_divisions_navigation">
<!-- <ul id="wa-apps">
{foreach from=$wa->apps() item=a}<li><span>{$a.name}</span></li>{/foreach}
</ul> -->
<ul id="wa-apps">
<li><span>Главная</span></li>
</ul>
<!-- Вывод страниц магазина -->
{$shop_pages=$wa->shop->pages()}
{if $shop_pages}
{wa_print_tree tree=$shop_pages attrs = 'id="wa-apps"' elem ='<span>:name</span>' selected=$wa->param('page_id')}
{/if}
</div>
<!-- /меню -->
P/s: то, что ответили в ТП:
Т.е., вам нужно, чтобы в меню не было определенных страниц, но они были бы доступны по прямой ссылке?
Для этого нужно редактировать, как минимум, шаблон sidebar.html.
28 ответов
{foreach from=$wa->shop->pages() item=p}
{if $p.menu != 'false'}
<a href="{$p.url}" title="{$p.name}">{$p.name}</a>
{/if}
{/foreach}
{foreach from=$wa->shop->pages() item=p}
{if $p.menu != 'false'}
<span><a href="{$p.url}" title="{$p.name}">{$p.name}</a></span>
{/if}
{/foreach}
но дизайн кнопок не меняется, не спец как сделать кнопки такие как были, кроме как вставить обратно код, что был.
{if $p.menu != 'false'}
<li><span><a href="{$p.url}" title="{$p.name}">{$p.name}</a></li></span>
{/if}
{/foreach}
Если это не поможет, дайте ссылку на сайт
ссылку на сайт можно, неудивительно что дизайна нет...
{foreach from=$wa->shop->pages() item=p}
{if $p.menu != 'false'}
<li><span>{$p.name}</li></span>
{/if}
{/foreach}
...
</div>
он тоже может влиять на дизайн списка
{$shop_pages=$wa->shop->pages()}
{if $shop_pages}
{wa_print_tree tree=$shop_pages attrs = 'id="wa-apps"' elem ='<span>:name</span>' selected=$wa->param('page_id')}
{/if}
display=none
Для отображения ссылок в меню используйте вот такой код:
{foreach $wa->shop->pages() as $p}
{if $p.display != 'none'}
<a href="{$p.url}">{$p.name}</a>
{/if}
{/foreach}
Этот пример приведён для создания меню страниц, формируемых приложением Shop-Script 5. Если страницы у вас хранятся в Сайте, то нужно shop заменить на site вот тут:
{foreach $wa->shop->pages() as $p}
{if isset($p.display) && $p.display != 'none'}
Да, этот вариант работает, спасибо.
Ожидал, что такая базовая функциональность будет уже реализована в шаблоне Дефолт 2.0.
Куда нужно добавить этот код?
{foreach $wa->shop->pages() as $p}
{if $p.display != 'none'}
<a href="{$p.url}">{$p.name}</a>
{/if}
{/foreach}
В тот шаблон дизайна, в котором формируется меню из страниц. Придётся немного пошарить по файлам в редакторе дизайна — точное место не подскажу, т. к. тема дизайна у каждого своя и устройство у них довольно сильно различается.
В предложенной конструкции необходимо, что бы переменная display была указана в дополнительных параметрах всех страниц, что бы не отображались лишь те страницы где явно указано display=none я немного изменил предложенную конструкцию:
{foreach $wa->shop->pages() as $p}
{if isset($p.display) && $p.display == 'none'}
{else}
<i class="fa fa-angle-right fa-lg theme-color-wh"></i> <a href="{$p.url}">{$p.title}</a></li>{/if}
{/if}
{/foreach}
Помог ответ Михаила Ушенина.
Кому интересно, в шаблоне Дефолт 2.0, в файле header,html в конце я прописал следующий блок:
{* PAGES *}
{foreach $shop_pages as $page}
{if !isset($page.hide) || $page.hide != 'true'}
<li{if strlen($page.url)>1 && $wa->currentUrl()|strstr:$page.url} class="selected"{/if}><a href="{$page.url}">{$page.name}</a></li>
{/if}
{/foreach}
Включается скрытие страницы строчкой "hide=true" без кавычек в "Дополнительные параметры страницы".
А если приложение site? Та же тема дизайна.
Поищите код с site_pages вместо shop_pages
У меня работает код (горизонтальное меню навигации)
{if !isset($pageMT.hide) || $pageMT.hide != 'true'}
...
{/if}
в файле (шаблон "Купить просто") horizontal.tree.html
Полный код получился такой:
<!--pages-->
{foreach $site_pages as $pageMT} <!-- MT - menu top, если нужно убрать из нижнего меню, то ищем MB -->
{if !isset($pageMT.hide) || $pageMT.hide != 'true'} <!-- Добавляем -->
{if !isset($pageMT.menu_top)}
<li{if $pageMT.id==$page_select} class="selected"{/if}><div class="wrp-fix">
<a href="{$pageMT.url}">{$pageMT.name}</a>
{if !empty($pageMT.childs)}<ul>
{foreach $pageMT.childs as $pageMT_}
{if !isset($pageMT_.menu_top)}
<li{if $pageMT_.id==$page_select} class="selected"{/if}>
<a href="{$pageMT_.url}">{$pageMT_.name}</a>
{if !empty($pageMT_.childs)}<ul>
{foreach $pageMT_.childs as $pageMT__}
{if !isset($pageMT__.menu_top)}
<li{if $pageMT__.id==$page_select} class="selected"{/if}>
<a href="{$pageMT__.url}">{$pageMT__.name}</a>
</li>
{/if}
{/foreach}
</ul>{/if}
</li>
{/if}
{/foreach}
</ul>{/if}
</div></li>
{/if} {/if} <!-- Закрываем -->
{/foreach}
В дополнительных параметрах страницы прописано, естественно, "hide=true"
Поправьте, если что.
Тема Clear, пожалуйста помогите убрать из меню страницу с сохранением дизайна ссылок на оставшиеся страницы. В шаблоне navigation такой код:
<!-- info pages -->{$shop_pages=$wa->shop->pages()}
{if $shop_pages}
<div class="float-right">
{wa_print_tree tree=$shop_pages class="menu-h dropdown" attrs = 'id="page-list"' elem ='
<a href=":url" title=":title">:name</a>' collapsible_class='collapsible' selected=$wa->param('page_id')}
</div>
{/if}
Ни один из предложенных здесь вариантов не помог.
Оказать квалифицированную персональную помощь по настройке дизайна вам смогут эксперты Webasyst и служба подержки Webasyst — обращайтесь.
Напишите на почту nellodia@gmail.com
Постараюсь помочь.
Напишите на почту nellodia@gmail.com
Постараюсь помочь.
Немного другой вариант (склёпано из ответов в помощи). Рисует всю вложенную структуру страниц.
Для страниц приложения Сайт, добавляем стиль, которым скрываем пункт.
1. в дополнительные параметры страниц, которын нужно скрыть добавить :
class=hide
2. в css добавить стиль:
3. Код менюхи:
<!-- Site app page list -->
{function tree}
<ul>
{foreach $items as $item}
{$classes = []}
{if ifempty($item.class)}{$classes[] = $item.class}{/if}
{if $item.id == $page.id|default:null}{$classes[] = 'selected'}{/if}
<li{if $classes} class="{implode(' ', $classes)}"{/if}>
<a href="{$item.url}">{$item.name|escape}</a>
{if ifempty($item.childs)}
{tree items=$item.childs}
{/if}
</li>
{/foreach}
</ul>
{/function}
<div class="pages">{tree items=$wa->site->pages()}</div>