Список страниц определенного сайта
Господа эксперты, подскажите пожалуйста! Можно ли как-то вывести список страниц (считай навигационное меню) но определенного сайта? Есть несколько экземпляров приложения сайт размещенных на разных урлах, нужно вывести ссылки только от одного из них. При таком запросе:
$wa->site->pages()
Возвращается список страниц первого попавшегося сайта.
17 ответов
Попробуйте в скобках указать id сайта, страницы которого хотите вывести.
Спасибо за совет! Попробовал передавать route_id в качестве параметра (т.к. другого идентификатора ресурса не нашел):
Получил пустой массив. Также заметил, что в админке при работе с несколькими сайтами webasyst оперирует роутом (pathname). Но как его передать в метод получения списка страниц, я не нашел.
Получается у вас в пределах одного домена несколько поселений Сайт в структуре сделано, а сам сайт у вас всего один. Это так? (скриншот структуры поселений не помешал бы)
Да, именно так. Сайт один, но приложений (или подселений) несколько.
Можно использовать доп. параметры страниц для создания признака, по которому страницы можно разделять по принадлежности к сайту.
Т.е. у всех страниц в пределах определенного сайта должен быть одинаковый доп.параметр.
И таким образом можно делать выборку по этому ключу (site=1, site=2, site=n...)
Соответственно для другого сайта будет другое значение ключа.
Похоже, это единственный способ. Спасибо!
Попробовал данный способ. К сожалению, он тоже не подходит. Т.к. при переходе в другое приложение (подселение),
возвращает пустой массив.
Да ё моё. Ну ведь адаптировать же надо. Это просто пример того как можно этим пользоваться. А пользоваться этим можно успешно. Вы не дописали ряд условий для страниц других ваших сайтов и проверку того, на каком сайте (url) находитесь сейчас, чтобы выборка нужных страниц происходила. Всё разделение страниц делается именно доп. параметрами, но для вашего случая набор условий будет чуть сложнее, чем в примере с одним соответствием $page.site == 1, т.к. у вас не только 1, но и 2 и 3 и более значений параметра может быть.
Готовое решение могу накидать, если совсем в тупик зайдете.
Нет, вы меня не поняли. Давайте подробнее опишу ситуацию. Значит имеется 2 подселения:
Стоит задача, вывести в сайдбаре список новостей – страниц из /news. Для всего сайта. Когда, я допустим нахожусь в разделе каталога или на странице новости (/news/item-1), то все впорядке – следующий код
Возвращает список страниц, среди которых есть и новости. Я могу их отфильтровать и вывести только новости.
Но стоит мне перейти на одну из статичных страниц, скажем /pages/item-1, то код выше перестает работать как ожидается и вместо массива всех страниц сайта возвращает только страницы текущего подселения, т.е. /pages.
Блин, теперь ещё больше запутался. :) Новости. Страницы. Отфильтровать. Поселения... Какое приложение отвечает за новости, а какое за страницы?
Первоначально было два или более сайтов с одним (???) шаблоном, но с разными URL поселений и разным набором страниц, которые требовалось выводить в зависимости от сайта.
"Чужой сайт - потёмки". Надо вдумчиво "въехать" в вашу структуру.
Можно хотя бы увидеть скриншот структуры поселений и скриншот раздела страниц приложения Сайт. Приватные данные можете со скриншотов вырезать.
Так нагляднее. Проблема, что когда я перехожу на любую из страниц "О компании", "Семинары" и пр. $wa->site->pages() начинает возвращать только страницы подселения /pages
Теперь понятно и стало ещё понятнее, когда глянул ваш сайт.
Тут проблема не в том как вывести страницы определенного поселения, а в том, что вы пытались организовать изначально как-то всё очень странно, дважды подключив к структуре приложение Сайт. Возможно таковы были требования ТЗ, но логичным такое решение не выглядит. Я было подумал два сообщения тому назад, что новости у вас реализованы через Блог, что было бы логично, но оказалось, что и он сам по себе. Хотя категории Блога под новости лучше бы подошли на эту роль вместо Сайта. Еще ваша структура приводит к тому, что в sitemap ваши новости сейчас не попадают. Это плохо. И плохо ещё тем, что находясь визуально в пределах одного сайта по факту вы перемещаетесь между двумя разными. Также это создает прецедент такого вида http://fittonia.ru/pages/ , когда "светится" адрес бекенда. Это надо либо "глушить" перенаправлением, либо не создавать изначально.
Думаю вам надо избавляться от второго поселения /news/* т.к. на мой взгляд создавать его было ошибкой изначально, а сами новости организовывать системой дочерних страниц для основной страницы по адресу /news в приложении Магазин.
Страницы новостей и их главную организующую делать надо будет в приложении Магазин, т.к. оно сидит в корне.
С главным меню разобраться надо будет по ходу, если что-то там вылезет не то из-за новой структуры, но это не страшно и делается быстро. Однако судя по всему там все завязано только на pages, поэтому страницы Магазина вылезти не должны, но если даже вылезут, то закрыть их недолго.
Затем в сайдбаре новости вызывать уже как страницы Магазина через $wa->shop->pages(), а не как страницы Сайта.
Короче говоря с выводом страниц другого сайта дольше возни и костылей, чем привести структуру к нормальному виду. Для посетителей и поисковых систем вообще ничего не изменится, а ваша структура станет намного проще. Контента новостей у вас немного. Даже вручную перенести можно за пару часов.
А если совсем упрощать, то Сайт для страниц не особо-то и нужен. Всё это создается в магазине, а новости и статьи строгаются в блоге и делятся на категории либо двумя блогами, либо плагином категории, а выводятся в сайдбаре отбираясь по доп. параметрам постов блога.
Да, спасибо за совет!
Наверное проще всего вынести новости в отдельный блог. А затем уже выводить их на сайте.
Хотя, с моей точки зрения, новости и статичные страницы должны быть частью сайта. Блог и Магазин – это отдельные приложения. Да и вообще, очень странно, что я могу организовать какую-угодно структуру в приложении Сайт, но вот получить эту структуру я не могу.
Группа приложений Сайт, Магазин, Блог и Фото позволяет очень гибко настроить любой проект. Для каждого конкретного случая необходимо индивидуально планировать Структуру как с точки зрения удобства дальнейшего администрирования контента, так и с точки зрения удобства навигации посетителя.
В большинстве случаев создание контента через приложение Сайт можно не использовать т.к. основной функционал создания статики присутствует во всех остальных приложениях. Однако в каких-то проектах без контента Сайта не обойтись, но для этого должна быть 100% необходимость и это нужно четко понимать.
Вашу проблему создал Сайт, дважды поселенный в одном и том же домене по двум адресам /pages/ и /news/. Это породило разделение контента между двумя поселениями, как если бы это было в случае мультивитринной конфигурации с несколькими доменами, хотя визуально весь контент с точки зрения посетителя как был так и остался в пределах одного сайта сети Интернет.
В вашем случае к услугам приложения Сайт можно было и не прибегать совсем, а меню страниц организовать через вложенные страницы ближе к корню сайта в Магазине (см. скриншот примера).
Соответственно страницы новостей пойдут дочерними от страницы /news/ и навигацию не надо будет искать по всем приложениям и собирать в кучу костылями шаблонов. Весь статический контент будет всегда легко доступен без всяких сложных приёмов в одном приложении одного поселения. СЕО тоже будет проще делать, когда структура станет упорядоченной.
Сохранится работа выпадающих менюшек (см. скриншот) и всё станет очень просто организовано.
З.Ы. Недавно пришлось исправлять сайт кафе одного моего знакомого, которому кто-то сделал сайт, завязав всё в такой клубок, что администрировать контент было больно, страшно и неудобно. В итоге всё было перенесено на WA и разложено по полочкам.
"из коробки" никак. решение https://www.webasyst.ru/store/plugin/menu/ensosite/
В чем решение? :) С помощи того же управления меню можно создать и бесплатно (руками ссылки прописать) то что хочет тс
можно и WOW галерею добавить напрямую в шаблоне, но ты сделал плагин и задаешь мне теперь такие дебильные вопросы..