К содержанию

Мультиязычность

Как можно сделать на modx revo мультиязычный (2-3 языка) магазин на основе стандартных компонентов?
Aleksey
Aleksey
05 марта 2013, 09:41
modx.pro
5 099
Реклама

Комментарии: 21

Василий Наумкин
Василий Наумкин Администратор
05 марта 2013, 13:50
На miniShop1 этого нормально не сделать.

На miniShop2 сделать, но там еще нет инструмента связи товаров через контексты, придётся юзать Babel.

Про остальных не знаю.
    Aleksey
    Aleksey Старожил
    05 марта 2013, 14:15
    Простых вариантов нет — это точно. Может быть miniShop2 порадует.
      Василий Наумкин
      Василий Наумкин Администратор
      05 марта 2013, 14:24
      Вот прямо сейчас делаю, чтобы чанки писем заказа оформлялись на языке того контекста, в котором он сделан.

      То есть, MS2 пишется с расчётом на мультиязычность. Другой вопрос, насколько удобно получится?
        Галич Сергей
        Галич Сергей Старожил
        05 марта 2013, 14:33
        нормульно будет, если babel поддерживает)

        в модиксе мультиязычность намного удобнее чем в других платформах например.
          Смирнов Николай
          Смирнов Николай
          29 мая 2013, 11:02
          В MODX мультиязычность совсем не удобно реализована.
          удобнее чем в других платформах
          Пример платформ приведите, если не затруднит, чтобы не быть голословным.
            Галич Сергей
            Галич Сергей Старожил
            30 мая 2013, 02:49
            из наиболее распространненных: joomla, opencart, устроит?)

            незнаю просто ваш опыт, и пробовали ли на модиксе сделать мультиязычность) потому что она реализована идеально :) я лучше не могу придумать, да и не видел
          Aleksey
          Aleksey Старожил
          06 марта 2013, 08:17
          Тут больше вопрос не в заказах, а в товарах и категориях. Одни и те же товары и категории на разных языках, а вот заказы как раз можно и на одном.
        Владимир
        Владимир Старожил
        28 мая 2013, 22:14
        Василий привет… а если я готов проспонсировать мультиязычность для minishop2, это может как то ускорить создание такой фичи? или вам сейчас не до этого?
      Владимир
      Владимир Старожил
      02 июня 2013, 11:30
      попробовал babel прикрутить к minishop вроде получилось. чтоб каждому товару не загружать одинаковые картинки написал сниппет небольшой. Берет id документа, получает alias, затем по alias ищет id в главном контексте и выводит фото товара. Подскажите правильно это?
      $res = $modx->getObject('modResource',array('id' => $id));
      $alias = $res->get('alias');
      $resources = $modx->getCollection('modResource', array(
      'alias' => $alias,
      'context_key' => 'web'
      ));
      foreach ($resources as $resource) {
      return($resource->get('id'));
      break;
      }
      посмотреть можно тут testvgrish.tmweb.ru/
        Василий Наумкин
        Василий Наумкин Администратор
        02 июня 2013, 12:03
        Если используешь babel, то гораздо проще и правильнее получать id другой страницы из его ТВ.

        Типа
        return $modx->resource->getTVValue('babel');
        Не уверен насчет имени ТВ только.
          Владимир
          Владимир Старожил
          02 июня 2013, 12:17
          так он выдаст в формате web:10;english:11;de:12
          а как отсюда выдрать номер ресурса под web я не сообразил(((
            Василий Наумкин
            Василий Наумкин Администратор
            02 июня 2013, 12:44
            $tv = $modx->resource->getTVValue('babel');
            if (preg_match('/web\:(\d+)/'), $tv, $matches) {
            	return $matches[1];
            }
              Владимир
              Владимир Старожил
              02 июня 2013, 13:15
              что то не то...500 ую ошибку выкидывает. а регулярка вроде правильная
                Владимир
                Владимир Старожил
                02 июня 2013, 13:35
                наверно несоответствие какое то… может надо tv в строку преобразовать?
                  Владимир
                  Владимир Старожил
                  02 июня 2013, 13:52
                  if (preg_match('/web\:(\d+)/', $modx->resource->getTVValue('babelLanguageLinks'), $matches)) {
                  	return($matches[1]);
                  }
                  вот так работает!)))
                  СПАСИБО ВАСИЛИЙ!
                Василий Наумкин
                Василий Наумкин Администратор
                02 июня 2013, 14:31
                Дык, я скобочку забыл закрывающую.

                Не расслабляйся при копипасте =)
                  Сергей С
                  Сергей С Старожил
                  09 апреля 2015, 15:03
                  Василий не подскажешь как выводить превью (thumbnail) картинку для товара который в другом контексте с помощью msProducts?
          Сергей С
          Сергей С Старожил
          09 апреля 2015, 14:59
          Спасибо за идею, воспользовался снипетом.
          На странице товара выводит галерею из основного языка, а как вы реализовали это в выводе товаров в категории (то что выводит msProducts)?
            Kirill A. Rusanov
            Kirill A. Rusanov Старожил
            05 октября 2015, 16:27
            Я для себя решил эту проблему следующим образом.
            Небольшой сниппет, который делает выборку товаров из указанной категории и из нужного (основного) контекста, leftjoin нужных картинок из msProductFiles, includeTVs babelLanguageLinks. Сниппет разбирает babelLanguageLinks и ставит плейсхолдеры вида [[+префикс.id ресурса в текущем контесте]] => [[url картинки из основного контекста]].
            Потом обычный вывод msProducts без includeThumbs, в шаблоне прописываем наш плейсхолдер.
            Минусы: плюс один запрос, отдельный чанк для вывода товара в каждом контексте.
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          21