Создать страницу в магазине, но чтобы ее не было в меню

Приветствую всех, на рисовалась проблема, хочу сделать страницу в витрине магазина, которая не будет "вылазить" в меню, т.е создаешь страницу помечаешь как черновик и она доступна по адресу сайт/servis/, а не как сейчас доступен только пред просмотр данной страницы сайт/servis/?preview=7dde9a3c1ade070aef000d632d1cdd8e.

Вопрос как сделать или реализовать так, чтобы создавая страницу в витрине, она не вылазила в меню, собственно код ниже как там устроено:
<!-- меню -->
<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>
<!-- /меню -->
Но самое странное, что там создан сайт/blog/ и стоит как черновик, не вылазит в меню, но и работает по ссылке сайт/blog/, а страница созданная мною сегодня сайт/servis/ не хочет работать, выдает 404 ошибку.

P/s: то, что ответили в ТП:

Т.е., вам нужно, чтобы в меню не было определенных страниц, но они были бы доступны по прямой ссылке?
Для этого нужно редактировать, как минимум, шаблон sidebar.html.

9 ответов

  • 2
    loony Партнер-эксперт 20 октября 2015 06:21 #

    Немного другой вариант (склёпано из ответов в помощи). Рисует всю вложенную структуру страниц.

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

    1. в дополнительные параметры страниц, которын нужно скрыть добавить :

    class=hide


    2. в css добавить стиль:

    li.hide {display: none;}

    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>

  • 1
    Сергей Варенов 30 декабря 2013 00:18 #
    все очень просто, в дополнительные параметры пропиши к примеру "menu=false"
    {foreach from=$wa->shop->pages() item=p}
    {if $p.menu != 'false'}
    <a href="{$p.url}" title="{$p.name}">{$p.name}</a>
    {/if}
    {/foreach}
  • 1
    Dima Stefantsov 5 мая 2015 18:02 #

    Помог ответ Михаила Ушенина.

    Кому интересно, в шаблоне Дефолт 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" без кавычек в "Дополнительные параметры страницы".

  • 1
    Nellodia White 25 июня 2015 15:22 #

    У меня работает код (горизонтальное меню навигации)

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

    Поправьте, если что.

  • 1
    Сергей Баранов 15 июля 2015 15:20 #

    Тема 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}


  • 0
    realteam 30 декабря 2013 01:25 #
    Добавил в дополнительные параметры menu=false, вставил ваш код, но страдает дизайн та как кнопки становятся просто ссылками, а попробовал вставить так:

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

    но дизайн кнопок не меняется, не спец как сделать кнопки такие как были, кроме как вставить обратно код, что был.
    • 0
      Сергей Варенов Сергей Варенов 30 декабря 2013 03:43 #
      {foreach from=$wa->shop->pages() item=p}
      {if $p.menu != 'false'}
      <li><span><a href="{$p.url}" title="{$p.name}">{$p.name}</a></li></span>
      {/if}
      {/foreach}
      Если это не поможет, дайте ссылку на сайт
      ссылку на сайт можно, неудивительно что дизайна нет...
      • 0
        Сергей Варенов Сергей Варенов 30 декабря 2013 03:43 #
        или без ссылок
        {foreach from=$wa->shop->pages() item=p}
        {if $p.menu != 'false'}
        <li><span>{$p.name}</li></span>
        {/if}
        {/foreach}
      • 0
        realteam realteam 30 декабря 2013 08:12 #
        http://collimator.su/ вот ссылка на сайт, еще просто не пробовал все ваши предложения, чуть позже буду пробовать.
      • 0
        realteam realteam 30 декабря 2013 08:16 #
        Этот вариант не помог, все просто ссылки выстроились в стольик
  • 0
    Сергей Варенов 30 декабря 2013 03:48 #
    и надеюсь вы оставили <div class="cpt_divisions_navigation">
    ...
    </div>
    он тоже может влиять на дизайн списка
    • 0
      realteam realteam 30 декабря 2013 08:17 #
      Да все оставлял, я заменял только то что вот тут:

      {$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}
  • 0
    Дмитрий Геннадьевич 18 января 2014 01:07 #
    кто нибудь может более понятно объяснить? что и куда прописывать чтобы страница работала но не выводилась в меню?
    • 0
      realteam realteam 17 марта 2014 04:27 #
      так и не решили эту проблему
      • +2
        Михаил Ушенин Михаил Ушенин Webasyst 20 марта 2014 05:23 #
        В "дополнительных параметрах страницы" добавьте такую строку:

        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}
  • -1
    20 марта 2014 05:03 #
    Помогите народ!
    • +2
      Zhak Zhak 6 августа 2017 17:21 #

      В предложенной конструкции необходимо, что бы переменная 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}

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите