Настройка маршрутизации (структуры) сайта в Webasyst

Структура сайта в Webasyst — это набор правил для обработки запросов от посетителей сайта. В зависимости от адреса (URL) открываемой страницы Webasyst перенаправляет его одному из приложений, установленных в вашем бекенде. Эти правила указываются в разделе «Структура» приложения «Сайт».

Для чего нужно использовать разные правила в структуре сайта

Добавлять новые правила нужно в 2 случаях:

  1. На некоторых страницах сайтах необходимо использовать другой дизайн.
  2. Необходимо использовать другое приложение в дополнение к тем, которые уже используются на страницах сайта.
Если у вас нет необходимости использовать разные дизайны или разные приложения в различных частях сайта, то и создавать новые правила в его структуре не нужно.

1. Добавление страниц с собственным дизайном

Допустим, вы хотите добавить на сайт одну или несколько страниц, которые должны быть оформлены в особом стиле — например, лендинг-страницы. В этом случае нужно добавить новое правило в структуру сайта. В нашем примере можно создать правило, например, с адресом /landing/*. В свойствах правила выберите нужную тему дизайна и приложение, в котором вы будете создавать такие страницы (например, «Сайт»).

2. Использование другого приложения

Допустим, вы хотите к своему сайту добавить блог. Для этого установите специальное приложение «Блог». Поскольку вы установили новое приложение и хотите использовать его на сайте, то для этого приложения нужно создать новое правило в структуре сайта.

Добавляем правило в структуру сайта

Щелкните по ссылке «Новое правило» — появится область, в которой нужно:

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

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

Выбор приложения для нового правила

В Вебасисте любая страница сайта обязательно формируется каким-либо приложением. Например: страницы онлайн-витрины — приложением Shop-Script, фотогалерея — приложением «Фото», информационные статьи — приложением «Сайт», а корпоративный блог — приложением «Блог».

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

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

Допустим, вы решили так:

  • раздел с адресом yourdomain.ru/shop/ отводится под онлайн-витрину (Shop-Script)
  • раздел с адресом yourdomain.ru/blog/ будет занят блогом
  • все остальные страницы сайта, включая главную, должны формироваться приложением «Сайт»

В точном соответствии с этим планом добавляем правила маршрутизации:

Заметьте, что в адресе раздела сайта нужно в конце добавлять символ * (звездочка) — он означает, что раздел включает в себя не только одну страницу с указанным адресом, но и все остальные страницы, адреса которых начинаются так же, как и адрес всего раздела.

Сравните:

  • yourdomain.ru/shop/ — раздел состоит только из 1 страницы с адресом yourdomain.ru/shop/
  • yourdomain.ru/shop/* — раздел может состоять из любого количества страниц, адреса которых начинаются на yourdomain.ru/shop/, например, yourdomain.ru/shop/category/food/, yourdomain.ru/shop/category/tv/, yourdomain.ru/shop/category/toys/ и т. д.

В каком порядке нужно располагать правила в структуре сайта

Порядок расположения правил маршрутизации имеет значение! Он зависит от того, сколько в адресе правила фрагментов, разделенных косой чертой /.

Чем больше фрагментов в адресе правила, тем выше оно должно быть расположено.

Правильный пример:
shop/new/* — самое подробное правило, в нем больше всего фрагментов, разделенных косой чертой
shop/* — менее подробное правило, в нем меньше фрагментов
* — наименее подробное правило, оно должно быть расположено ниже остальных
Неправильный пример:
*
shop/new/*
shop/*

В последнем, неправильном, примере наименее подробное правило (*) «перекроет» более подробные, и остальные разделы сайта работать не будут. Поэтому нужно переместить это общее правило вниз списка. Перемещать правила маршрутизации нужно с помощью иконки в левой части списка:

Как главное меню сайта зависит от его структуры

Пункты главного меню сайта не всегда зависят от настроек его структуры. Строго говоря, главное меню формируется не структурой сайта, а темой дизайна. В зависимости от используемой темы дизайна, главное меню может формироваться разными способами, например:

  • из названий разделов сайта из настроек структуры,
  • из названий из пунктов меню {$wa->apps()}, указанных в «Настройках» приложения «Сайт»,
  • из названий основных страниц приложения «Сайт»,
  • из названий основных страниц другого установленного приложения,
  • произвольным набором ссылок, вручную вписанный в исходный код темы дизайна.

Подробнее о настройке главного меню сайта.

26 комментариев

  • +2
    zavodpolimer7@yandex.ru zavodpolimer7@yandex.ru 31 октября 2014 04:16 #
    Спасибо,все встало на место!
  • +2
    Наиль С Наиль С 28 сентября 2015 05:08 #

    В статье говорится, все правильно, но как сделать так чтобы Магазин работал первым и без сайта. Чтобы в магазин можно было добавлять доп страницы? А то все страницы крепятся именно к сайту.

    • +1
      Алексей Алексей Webasyst 2 октября 2015 03:34 #

      Для этого необходимо для поселения Магазин указать адрес только * и все страницы добавлять через приложение Магазин -> Витрина -> Страницы. Обязательно, чтобы это правило было последним.

      Для поселение Сайт указать другой адрес или его удалить.

    • +1
      Елена Елена 28 октября 2015 14:13 #

      Скажите, а куда деваются эти правила маршрутизации после создания?

      Сделала правила. И как их теперь редактировать-удалять?

      Сайт->Стуктура - пусто. Написано "Выберите правило маршрутизации для редактирования его настроек" - а где его выбирать?

      В приложении Магазин->Витрина->Страницы - висят все правила, но там только добавлять страницы можно.

      Помогите доразобраться, пожалуйста.


      • +1
        Михаил Ушенин Михаил Ушенин Webasyst 29 октября 2015 03:30 #

        Возможно, у вас настроено несколько сайтов в приложении "Сайт", и вы выбрали сайт, у которого ещё нет правил (поселений). А в магазине могу отображаться правила для того сайта, у которого поселения настроены.

        • +1
          Елена Елена 29 октября 2015 06:45 #

          Михаил, благодарю за ответ.

          У меня всего один сайт в приложении "Сайт".

          И там, как на скриншоте выше - пусто, правил нет. Причем я-то их добавляла к этому единственному сайту.

          Очень надо удалить некоторые поселения, а я не могу найти где это делается. Где еще можно посмотреть?


          • +2
            Михаил Ушенин Михаил Ушенин Webasyst 29 октября 2015 09:30 #

            Возможно, у вас испорчен файл wa-config/routing.php. Попробуйте отредактировать его вручную.

            • +2
              Елена Елена 29 октября 2015 13:22 #

              Доступа к wa-config/ у меня нет. Но Ваш первый совет в результате оказался верным.

              На моем скриншоте, над меню "Структура" виден серенький прямоугольник. Оказывается это был второй сайт без названия, который отображался как пустое место))))

            • +2
              Stiv Stiv 23 ноября 2015 16:30 #

              Подскажите, плз, как из меню вызвать страницу, на которой были бы представлены все товары из определенного списка (не категории), и произвольное описание к ним?

              Пробовал делать страницу через приложение "сайт", и прописывать в нее код для встраивания (типа )

              {if $wa->shop}
              {$products = $wa->shop->productSet("promo")}
              {include file="list-thumbs.html" products=$products}
              {/if}

              - вместо вывода списка вижу "Начните с создания страницы в бекенде сайта." причем текст, который был выше и ниже вставленного кода теряется.

              Пробовал вариант 2: делать страницу в приложении магазин и вставлять в нее тот же код. Мало того, что ее в основное меню можно поместить только руками через настройки {$wa->apps()} , так она и таким образом не выводится. По ссылке вижу только "Theme THEME_ID not found- Запрашиваемый ресурс не доступен."

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


            • +1
              Dmitry Lannister Dmitry Lannister 8 мая 2016 06:40 #

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

              • +1
                Эрик Эрик Webasyst 10 мая 2016 02:01 #

                Возможно, не хватает прав доступа на папку wa-config и все вложенные папки и файлы. Увеличьте права доступа.

              • +1
                Julia G. Julia G. 8 ноября 2016 15:47 #

                как убрать index.php из адресов ? у меня почему то все структура выглядит так domain/index.php/shop или domain/index.php/site

                • +1
                  Михаил Ушенин Михаил Ушенин Webasyst 8 ноября 2016 16:32 #

                  Так бывает, если при установке Webasyst на вашем сервере был недоступен модуль mod_rewrite для веб-сервера Apache. В этом случае в конфигурационном файле wa-config/config.php прописывается строка вида

                  'mod_rewrite' => false //или 0 вместо false

                  Чтобы убрать index.php из адресов страниц, нужно включить модуль mod_rewrite в конфигурации веб-сервера (обратитесь к администратору сервера за помощью), затем в этом конфигурационном файле измените значение параметра 'mod_rewrite' с false или 0 на true либо 1 и очистите кеш в настройках "Инсталлера".

                  Это также может быть, если на вашем сервере установлен другой веб-сервер — не Apache, а, например, nginx. В этом случае нужно изменить конфигурацию nginx с использованием вот этого примера и точно так же, как описано выше, изменить значение конфигурационного параметра и очистить кеш в "Инсталлере".

                  Проверьте также, чтобы в адресе вашего сайта в настройках приложения Сайт также отсутствовал фрагмент index.php в самом конце — в адресе сайта оставьте только доменное имя, если туда попал этот лишний фрагмент.

                • +1
                  VladimirZ VladimirZ 23 января 2017 14:42 #

                  Анализаторы контента обнаруживают дублирование контента на страницах http://domain.ru и http://domain.ru/

                  Как сделать маршрутизацию, чтобы при обращении по этим адресам (со слешем в конце и без) они адресовались на ОДНУ страницу.

                  • +1
                    Михаил Ушенин Михаил Ушенин Webasyst 23 января 2017 17:20 #

                    Если ваш сайт работает на собственном хостинге, то для этого потребуется настройка перенаправления с помощью файла .htaccess или путём изменения конфигурации веб-сервера. Как это сделать, вы можете спросить в общем хабе поддержки.

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

                    Ваше замечание передали разработчикам, спасибо!

                    • +1
                      VladimirZ VladimirZ 24 января 2017 13:15 #

                      Как перенаправить через .htaccess мне понятно. Вопрос был в том, можно ли это сделать средствами движка.

                      Как я понял из ответа, пока нельзя.

                    • +1
                      Eugene Avramchuk Eugene Avramchuk 23 ноября 2017 16:54 #

                      Решил обратиться сюда, промучившись не один месяц...


                      Мне нужно следующее главное меню:


                      1. Главная страница - на приложении "Сайт". (У меня получилось так, что на вкладке браузера - 404. Страница не найдена. Но страница в главном меню отобразилась.

                      2. Далее - сам "Магазин" и несколько страниц к нему же (Доставка, Оплата и т.д.)

                      3. Еще три страницы на приложении "Блог".

                      4. Дополнительный вопрос - как сделать так, чтобы Каталог Магазина не отображался в прочих приложениях (Сайт и Блог), но только на страницах Магазина)? Это к изготовителю дизайна обращаться?


                      Все страшно глючит, особенно добавление страниц в магазине. Не успеваю что-то написать в нужном поле, как поле желтеет и намертво глючит. Что это? Как это побороть?

                      • +1
                        Михаил Ушенин Михаил Ушенин Webasyst 23 ноября 2017 17:12 #

                        Статья ­про настройку структуры сайта. А ваш вопрос — про главное меню. Одно может в некоторых случаях определять другое, но это совсем не обязательно.

                        Задайте свой вопрос в отдельной теме в общем хабе поддержки, пожалуйста, или поищите ответ на него с помощью функции поиска. Если вам нужно более срочное и квалифицированное решение, возможно, вам стоит обратиться к партнёрам Webasyst.

                        В целом ситуация такая: внешний вид и структура главного меню на разных сайтах с разными дизайнами очень отличаются. Сделать универсальный конструктор меню, в котором можно создать любое нужно меню, которое будет правильно работать в любом дизайне — нереальная задача. Поэтому есть такие разные способы её решения.

                        • +1
                          Eugene Avramchuk Eugene Avramchuk 23 ноября 2017 18:40 #

                          То есть всего лишь для того, чтобы настроить главное меню, нужно нанимать кого-то (от 10000 руб.)? Если бы я знал это, то никогда бы не перешел на 5-6, а потом и на 7 версию.
                          Я приобрел несколько новых приложений, плагинов, две темы дизайна и теперь еще должен кого-то нанимать для настройки главного меню? Ваша реклама гласила, что настроить дизайн теперь не будет проблемой для тех, кто не является программистом. А речь всего лишь о главном меню.

                          Это явный перебор.

                          • +1
                            Михаил Ушенин Михаил Ушенин Webasyst 24 ноября 2017 10:42 #

                            Всё зависит от того, как именно вы хотите настроить меню. Если в пределах доступных настроек, то никого нанимать не нужно. Если более сложно, то либо самостоятельно править код дизайна, либо с привлечением специалиста. Так везде: если нужно больше, чем стандартное, нужно либо разбираться в технических тонкостях, либо оплачивать работу того, кто уже разобрался.

                          • +1
                            Андрей Андрей 24 июля 2018 11:15 #

                            Добрый день, возникла сложность:

                            Создал 2 страницы в дополнительной структуре "договора", эти страницы присутствуют в нескольких местах на сайте, в подвале и в корзине. При нахождении на этих страницах и нажатии на логотип, для перехода на главную (https://www.teplosvarka.ru), переходит на https://www.teplosvarka.ru/dog... . Что нужно сделать, чтобы переход был на домен.ру ?

                          • +2
                            Евгения Евгения 28 июля 2018 09:19 #

                            Здравствуйте. После обновления появилась ошибка - Нет правил для приложений «Контакты», «Логи».

                            Что делать? ))

                            • +1

                              Это не ошибка, а информационное сообщение. Оно напоминает о том, что вы не настроили правила в структуре сайта для этих приложений. Это значит, что функциональность этих приложений без правил в структуре сайта может быть ограничена: нет возможности показывать информацию посетителям сайта или получать от них запросы через эти приложения.

                            • +1
                              Юрий Михин Юрий Михин 17 июля 2019 19:19 #

                              Как сделать, чтобы магазин, категории и товары отображались со своим условным префиксом /shop, но и на главной странице отображался бы контент страницы /shop? При этом, чтобы все ссылки товаров и категорий вели на свои правильные адреса с префиксом /shop?

                              Добавить комментарий

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