Мультиязычность и мультисайтовость MODx

Поделиться
HTML-код
  • Опубликовано: 7 янв 2025

Комментарии • 47

  • @ImranExpert1
    @ImranExpert1 4 года назад

    Спасибо, Артем. А можно ли в админку сайта подтянуть контекст уже готового другого сайта? Ведь для этого надо где-то указывать логин/пароль, чтобы подтягивался сторонний сайт? Я о том случае, чтобы из одной админки управлять разными сайтами. Как тогда настраивать контекст? Спасибо.

    • @OpenModx
      @OpenModx  4 года назад

      В админке одной установки modx отображаются только те контексты, которые есть в базе данных этой установки. Подтянуть в одну админку контексты разных, независимых друг от друга установок modx, нельзя.

    • @ImranExpert1
      @ImranExpert1 4 года назад

      @@OpenModx Эх, жаль) Спасибо за скорый ответ, Артем)

  • @liliyagrishina
    @liliyagrishina 5 лет назад

    Артем добрый день, подскажите как быть в этом случае со стандартными сниппитами карты сайта, хлебные крошки url в данном случае будет не полная?

    • @OpenModx
      @OpenModx  5 лет назад

      Стандартные сниппеты карты сайта умеют работать с контекстами. Я имею ввиду pdoSitemap как минимум. Причем здесь хлебные крошки не совсем понял.

    • @liliyagrishina
      @liliyagrishina 5 лет назад

      @@OpenModx то есть ссылки в хлебных крошках и прочих компонентах будут с учетом контекста? вообще сейчас идет выбор делать все в одном контексте или делить на несколько? просто непонятно как поведут себя различные компоненты такие как минишоп и т.д

    • @OpenModx
      @OpenModx  5 лет назад

      @@liliyagrishina Ссылки в прочих компонентах нужно делать относительными, а в head секции сайта указать тег base. Для каждой языковой версии base будет свой, поэтому все ссылки будут рабочими, если они будут указываться относительными.

  • @X900
    @X900 4 года назад

    Здравствуйте! Пытаюсь реализовать следующее, домен site.ru и домен site.com от site.com идёт построение языковых версий таким образом: site.com/de/ site.com/se/ и т.д папка с файлами у доменов одна, домен site.ru основной а для второго указан путь к папке с фалами site.ru, не как не получается сделать чтобы в Babel коректно работало переключение языков, подскажите пожалуйста, вообще такое реально сделать?

    • @OpenModx
      @OpenModx  4 года назад +1

      Здравствуйте! Конечно, реально.
      Нужно:
      1. Корректно настроить конфигурацию .htaccess или nginx (либо и то, и то, если вы используете оба сервера)
      2. Корректно настроить плагин переключения языков.
      Что именно у вас не получается сделать? Если не происходит переключение языков, значит у вас некорректно настроен плагин, в котором происходит вызов switchContext, либо он вообще отсутствует.
      Если у вас на прочих языковых версиях не отображаются файлы картинок, стилей и скриптов, то ищите проблему в конфиге .htaccess или nginx.

    • @X900
      @X900 4 года назад

      @@OpenModx Здравствуйте! Спасибо. Да у меня проблемы с переключением языков а плагин выглядит так:

    • @X900
      @X900 4 года назад

      @@OpenModx Не много уточню и дополню вопрос, языки у меня стали переключаться, но проблема с URL, к примеру находишься на странице site.ru/catalog/ у других вариантов языка при переключении url будет site.com и site.com/de/ а должно быть site.com/catalog/ и site.com/de/catalog/

    • @OpenModx
      @OpenModx  4 года назад

      @@X900 я бы сделал просто проверку по регулярному выражению строки полного адреса URL, чтобы все сделать в одном блоке:
      $actual_link = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
      switch(true){
      case preg_match('#^https?://site\.ru/#ui', $actualLink):
      //Переключаемся в контекст web
      break;
      case preg_match('#^https?://site\.com/de/#ui', $actualLink):
      //Переключаемся в контекст de
      break;
      case preg_match('#^https?://site\.com/#ui', $actualLink):
      //Переключаемся в контекст eng
      break;
      }

    • @OpenModx
      @OpenModx  4 года назад

      @@X900 Для переключения на другие языки используйте сниппет docs.modx.com/current/en/extras/babel/babellinks он автоматически проверит, есть ли у данного ресурса связанные ресурсы из других контекстов и выведет на них соответствующие ссылки. Только не забудьте у других контекстов указать соответствующие настройки (по-моему site_url и cultureKey)

  • @INDIGORUINDIGO
    @INDIGORUINDIGO 5 лет назад

    Только один вопрос к автору. Почему ни выложили код ?

    • @OpenModx
      @OpenModx  5 лет назад

      Сорри ) Но автор тогда ленился ))

    • @INDIGORUINDIGO
      @INDIGORUINDIGO 5 лет назад

      @@OpenModx я так и ни смог настроить по этому видео. Сделал через другое видео. Но там весь код был на странице сайта

    • @OpenModx
      @OpenModx  5 лет назад

      @@INDIGORUINDIGO Я в последних 4-5 видео на канале уже начал выкладывать код на github

    • @INDIGORUINDIGO
      @INDIGORUINDIGO 5 лет назад

      @@OpenModx мне вас посоветовал программист один. Вы наверное думаете что ваш канал ни очень известен из-за просмотров. Но мне кажется это ни так. Вы бы выкладывали разные видео где вы сами сталкиваетесь с трудностями.
      Я например искал как вывести 3 уровня вложенных в папки товары чтобы их можно было отфильтровать как в админке и вот нашел решение.(из коробки решения нет читал)
      Вот код:
      [[pdoResources?
      &parents=`4`
      &limit=`100`
      &sortby=`{ "pm5":"ASC","pm4":"ASC", "pm3":"ASC", "pm2":"ASC", "pm1":"ASC" }`
      &where=`{ "template": 10 }`
      &tpl=`tplSklad`
      &leftJoin=`{
      "p1": {
      "class": "modResource",
      "on": "p1.id = modResource.id"
      },
      "p2": {
      "class": "modResource",
      "on": "p2.id = p1.parent"
      },
      "p3": {
      "class": "modResource",
      "on": "p3.id = p2.parent"
      },
      "p4": {
      "class": "modResource",
      "on": "p4.id = p3.parent"
      },
      "p5": {
      "class": "modResource",
      "on": "p5.id = p4.parent"
      }
      }`
      &select=`{
      "modResource": "*",
      "p1": "COALESCE(p1.menuindex, 999999999) as pm1",
      "p2": "COALESCE(p2.menuindex, 999999999) as pm2",
      "p3": "COALESCE(p3.menuindex, 999999999) as pm3",
      "p4": "COALESCE(p4.menuindex, 999999999) as pm4",
      "p5": "COALESCE(p5.menuindex, 999999999) as pm5"
      }`
      ]]
      Вы бы ни могли описать как и что тут отрабатывает?

    • @OpenModx
      @OpenModx  5 лет назад

      @@INDIGORUINDIGO Все довольно очевидно. Это запрос с джоином одной и той же таблицы, каскадно по полю parent. В выборке будут лежать все ресурсы с шаблоном 10 и 4 вложенных друг в друга товаров, начиная от родительского. Только не понятно, зачем делать дополнительный джоин этого же ресурса? Я про это:
      "p1": {
      "class": "modResource",
      "on": "p1.id = modResource.id"
      },
      В выборке будут все поля ресурcа и поля menuindex вложенных ресурсов, которые будут под псевдониами pm2 pm3 pm4 pm5

  • @DANEX7799
    @DANEX7799 7 лет назад

    Как сделать поддомены сайта для разных городов?

    • @OpencoRu
      @OpencoRu 7 лет назад

      1. Настроить веб-сервер на работу с разными поддоменами
      2. Сделать плагин, который будет парсить поддомен, определять город из поддомена и выставлять соответствующие переменные и плейсхолдеры, характерные для города

  • @gfgddtr6217
    @gfgddtr6217 7 лет назад

    а как сделать переключать языков например в хедере во фронт енде?

    • @OpenModx
      @OpenModx  7 лет назад

      Переключалка языков в данном случае - это просто ссылка на страницу из другого контекста. Я думаю, делать урок о том, как поставить ссылку, не нужно )

    • @gfgddtr6217
      @gfgddtr6217 7 лет назад

      Получается на каждую страницу нужно вручную добавлять ссылки на языковые аналоги, а если страниц 100 и языков 3-4?

    • @OpenModx
      @OpenModx  7 лет назад

      Нет, для того, чтобы не добавлять этого вручную, необходимо поставить расширение Babel и пользоваться его возможностями.

  • @zalixbox
    @zalixbox 7 лет назад +1

    Спасибо за урок. В интернете можно встретить информацию, как работать к контекстами без правки htaccess или настройки веб-сервера. Было бы неплохо об этом поподробнее услышать...

  • @0760kos
    @0760kos 7 лет назад +1

    Спасибо за уроки! Не совсем пока все понятно, но все равно спасибо!

  • @DK-ju4kb
    @DK-ju4kb 7 лет назад

    Здравствуйте. Спасибо за уроки. У меня слейдующая проблема: при переходе между контекстами происходит переход только(и сразу) на стр. 404. В корень контекста (site_url) упорно не желает переходить. Также и при нажатии на "посмотреть" из админки, прописании site_url/?id=номер_ресурса, также не переходит. Контекст как-будто бы закрыт для просмотра, кроме стр. 404. Как это можно исправить?

    • @OpenModx
      @OpenModx  7 лет назад

      Похоже на то, что у вас не переключается контекст. Плагин для переключения контекстов добавили? Проверили, он работает? Каким образом у вас происходит переключение контекстов?

    • @DK-ju4kb
      @DK-ju4kb 7 лет назад

      OpenModx , переключение происходит, т. к. стр. 404 открывается именно из en контекста(у нее содерживоем отличается от стр. 404 web контекста). но при переходе на любую другую страницу en контекста, даже из админки , все-ровно выдает 404 en контекста.

    • @DK-ju4kb
      @DK-ju4kb 5 лет назад

      @ШЕО я, к сожалению, уже не помню. сделал магазин на OP3 а потом и вообще его начали переписывать на ReactJS+Java

  • @megabulk
    @megabulk 7 лет назад

    Всё сделал как в видео - в результате контекст переключается но вот при открытии любой страницы из нового контекста происходит переход на страницу ошибки 404.

  • @akbako
    @akbako 7 лет назад

    У меня после этого путь к assets добавляется язык
    bewbarmak.localhost:81/en/assets/img/icon_qatar/icc1.png
    Как можно решить?

    • @OpenModx
      @OpenModx  7 лет назад

      Абсолютно верно. Именно для этого я видео уделяю внимание настройке веб-сервера, чтобы он игнорировал /en в URL при обращении к статичным ресурсам

    • @akbako
      @akbako 7 лет назад

      Можно такой же rule переписать для htaccess

    • @akbako
      @akbako 7 лет назад

      Все решил.

  • @YANGELbd
    @YANGELbd 6 лет назад

    Если можно, добавляй еще и сам код (может на что -то типо jsfiddle) - реально мелковатый шрифт, чтобы разглядеть все).