Настройка маршрутизации (структуры) сайта в 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()}, указанных в «Настройках» приложения «Сайт»,
  • из названий основных страниц приложения «Сайт»,
  • из названий основных страниц другого установленного приложения,
  • произвольным набором ссылок, вручную вписанный в исходный код темы дизайна.

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

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

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

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

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

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

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

      • +1
        Clashmind Clashmind 8 декабря 2016 14:03 #

        а товар, размещенный как domen/shop/... не исчезнет с сайта?

        • +1
          Михаил Ушенин Михаил Ушенин Webasyst 12 декабря 2016 11:26 #

          Товары сами по себе с сайта не исчезают, а только в результате каких-то действий. Вы имеете в виду какие-то конкретные условия? Какие именно?

        • +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. Попробуйте отредактировать его вручную.

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

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

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

                • +1
                  Илья Анисифоров Илья Анисифоров 18 ноября 2015 07:46 #

                  Не могу поменять витрину сайта, как только загружаю тему дизайна CUSTOM или Clear, то выдает ошибку, по возвращении прежней темы- Default, становится все на свои места.

                  Помогите сменить тему, пожалуйста.

                • +1
                  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
                          Андрій Андрій 26 июня 2017 15:55 #

                          После созднаия сайта и страницы на главной два раздела - Страница с адресом домен/* и сама страница с текстом. Как оставить на главной только страницу с текстом? Поселение не менял, только создал страницу для главной. Спасибо за помощь!

                          • +1
                            После созднаия сайта и страницы на главной два раздела - Страница с адресом домен/* и сама страница с текстом.

                            Покажите на снимке экрана, как это выглядит. Не уверен, что понимаю, что значит "на главной два раздела".

                          • +1
                            Андрій Андрій 27 июня 2017 11:45 #

                            Страница - поселение и Страница - как информационная страница

                            • +1

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

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

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