Мультиязычность и поселения Есть решение
Всем привет.
Столкнулись с небольшой проблемой при создании мультиязычного сайта.
Допустим есть сайт domain.ru
Структура (порядок как в админке сейчас, изменения порядка ничего не дало):
/en/blog/* - EN Blog
/en/* - EN Site
/blog/* - RU Blog
/* - RU Site
Для всех поселений выводим страницы из приложения Сайт.
Проблема возникает с поселение RU Blog, там выводятся страницы из EN Site. Потому что берется самое верхнее поселение с приложением Сайт. $wa->site->pages()
Собственно ищу решение данной проблемы.
Что пришло в голову:
1) Как-то получать массив страниц не первого приложения Сайт, а всех приложений и по доп. параметру отсеивать ненужные страницы. (lang=ru / lang=en, например)
* не очень удобно, если много страниц
2) Попробовать прописать доп. параметр к самому поселения и в зависимости от него получать массив с нужного приложения, с таким же параметром (lang=ru / lang=en)
Задал данные вопросы в ТП Вебасист, отправили курить мануалы и форум, хотя толком здесь по данному вопросу ничего нет. Что очень "приятно".
Если есть у кого какие-то мысли, был бы премного благодарен)
1 ответ
Так выведет все страницы в массиве, исключая Неопубликованные страницы + дополнительные параметры к странице. Наверное можно как-то сделать при помощи фишек фреймворка, но я честно говоря не знаю как)
<?php
class sitePages
{
public static function getAllPages()
{
$site_pages_model = new sitePageModel();
$site_pages_params_model = new sitePageParamsModel();
$pages = $site_pages_model->select('id,name,url,full_url,status,route,parent_id')
->where('domain_id = ' . siteHelper::getDomainId() . ' && status = 1')
->order('parent_id,sort')
->fetchAll('id');
$params = $site_pages_params_model->order('page_id ASC')->fetchAll();
$domain = siteHelper::getDomain();
foreach ($pages as $key => $value) {
$pages[$key]['domain'] = $domain;
foreach ($params as $param) {
if ($param['page_id'] == $pages[$key]['id']) {
$pages[$key][$param['name']] = $param['value'];
}
}
}
return $pages;
}
}