Мультиязычность и поселения Есть решение

Всем привет.

Столкнулись с небольшой проблемой при создании мультиязычного сайта.

Допустим есть сайт 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 ответ

  • 2

    Так выведет все страницы в массиве, исключая Неопубликованные страницы + дополнительные параметры к странице. Наверное можно как-то сделать при помощи фишек фреймворка, но я честно говоря не знаю как)

    <?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;

    }

    }

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

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