Спасибо, Артем. А можно ли в админку сайта подтянуть контекст уже готового другого сайта? Ведь для этого надо где-то указывать логин/пароль, чтобы подтягивался сторонний сайт? Я о том случае, чтобы из одной админки управлять разными сайтами. Как тогда настраивать контекст? Спасибо.
В админке одной установки modx отображаются только те контексты, которые есть в базе данных этой установки. Подтянуть в одну админку контексты разных, независимых друг от друга установок modx, нельзя.
@@OpenModx то есть ссылки в хлебных крошках и прочих компонентах будут с учетом контекста? вообще сейчас идет выбор делать все в одном контексте или делить на несколько? просто непонятно как поведут себя различные компоненты такие как минишоп и т.д
@@liliyagrishina Ссылки в прочих компонентах нужно делать относительными, а в head секции сайта указать тег base. Для каждой языковой версии base будет свой, поэтому все ссылки будут рабочими, если они будут указываться относительными.
Здравствуйте! Пытаюсь реализовать следующее, домен site.ru и домен site.com от site.com идёт построение языковых версий таким образом: site.com/de/ site.com/se/ и т.д папка с файлами у доменов одна, домен site.ru основной а для второго указан путь к папке с фалами site.ru, не как не получается сделать чтобы в Babel коректно работало переключение языков, подскажите пожалуйста, вообще такое реально сделать?
Здравствуйте! Конечно, реально. Нужно: 1. Корректно настроить конфигурацию .htaccess или nginx (либо и то, и то, если вы используете оба сервера) 2. Корректно настроить плагин переключения языков. Что именно у вас не получается сделать? Если не происходит переключение языков, значит у вас некорректно настроен плагин, в котором происходит вызов switchContext, либо он вообще отсутствует. Если у вас на прочих языковых версиях не отображаются файлы картинок, стилей и скриптов, то ищите проблему в конфиге .htaccess или nginx.
@@OpenModx Не много уточню и дополню вопрос, языки у меня стали переключаться, но проблема с URL, к примеру находишься на странице site.ru/catalog/ у других вариантов языка при переключении url будет site.com и site.com/de/ а должно быть site.com/catalog/ и site.com/de/catalog/
@@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; }
@@X900 Для переключения на другие языки используйте сниппет docs.modx.com/current/en/extras/babel/babellinks он автоматически проверит, есть ли у данного ресурса связанные ресурсы из других контекстов и выведет на них соответствующие ссылки. Только не забудьте у других контекстов указать соответствующие настройки (по-моему site_url и cultureKey)
@@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" }` ]] Вы бы ни могли описать как и что тут отрабатывает?
@@INDIGORUINDIGO Все довольно очевидно. Это запрос с джоином одной и той же таблицы, каскадно по полю parent. В выборке будут лежать все ресурсы с шаблоном 10 и 4 вложенных друг в друга товаров, начиная от родительского. Только не понятно, зачем делать дополнительный джоин этого же ресурса? Я про это: "p1": { "class": "modResource", "on": "p1.id = modResource.id" }, В выборке будут все поля ресурcа и поля menuindex вложенных ресурсов, которые будут под псевдониами pm2 pm3 pm4 pm5
1. Настроить веб-сервер на работу с разными поддоменами 2. Сделать плагин, который будет парсить поддомен, определять город из поддомена и выставлять соответствующие переменные и плейсхолдеры, характерные для города
Спасибо за урок. В интернете можно встретить информацию, как работать к контекстами без правки htaccess или настройки веб-сервера. Было бы неплохо об этом поподробнее услышать...
Здравствуйте. Спасибо за уроки. У меня слейдующая проблема: при переходе между контекстами происходит переход только(и сразу) на стр. 404. В корень контекста (site_url) упорно не желает переходить. Также и при нажатии на "посмотреть" из админки, прописании site_url/?id=номер_ресурса, также не переходит. Контекст как-будто бы закрыт для просмотра, кроме стр. 404. Как это можно исправить?
Похоже на то, что у вас не переключается контекст. Плагин для переключения контекстов добавили? Проверили, он работает? Каким образом у вас происходит переключение контекстов?
OpenModx , переключение происходит, т. к. стр. 404 открывается именно из en контекста(у нее содерживоем отличается от стр. 404 web контекста). но при переходе на любую другую страницу en контекста, даже из админки , все-ровно выдает 404 en контекста.
Всё сделал как в видео - в результате контекст переключается но вот при открытии любой страницы из нового контекста происходит переход на страницу ошибки 404.
Спасибо, Артем. А можно ли в админку сайта подтянуть контекст уже готового другого сайта? Ведь для этого надо где-то указывать логин/пароль, чтобы подтягивался сторонний сайт? Я о том случае, чтобы из одной админки управлять разными сайтами. Как тогда настраивать контекст? Спасибо.
В админке одной установки modx отображаются только те контексты, которые есть в базе данных этой установки. Подтянуть в одну админку контексты разных, независимых друг от друга установок modx, нельзя.
@@OpenModx Эх, жаль) Спасибо за скорый ответ, Артем)
Артем добрый день, подскажите как быть в этом случае со стандартными сниппитами карты сайта, хлебные крошки url в данном случае будет не полная?
Стандартные сниппеты карты сайта умеют работать с контекстами. Я имею ввиду pdoSitemap как минимум. Причем здесь хлебные крошки не совсем понял.
@@OpenModx то есть ссылки в хлебных крошках и прочих компонентах будут с учетом контекста? вообще сейчас идет выбор делать все в одном контексте или делить на несколько? просто непонятно как поведут себя различные компоненты такие как минишоп и т.д
@@liliyagrishina Ссылки в прочих компонентах нужно делать относительными, а в head секции сайта указать тег base. Для каждой языковой версии base будет свой, поэтому все ссылки будут рабочими, если они будут указываться относительными.
Здравствуйте! Пытаюсь реализовать следующее, домен site.ru и домен site.com от site.com идёт построение языковых версий таким образом: site.com/de/ site.com/se/ и т.д папка с файлами у доменов одна, домен site.ru основной а для второго указан путь к папке с фалами site.ru, не как не получается сделать чтобы в Babel коректно работало переключение языков, подскажите пожалуйста, вообще такое реально сделать?
Здравствуйте! Конечно, реально.
Нужно:
1. Корректно настроить конфигурацию .htaccess или nginx (либо и то, и то, если вы используете оба сервера)
2. Корректно настроить плагин переключения языков.
Что именно у вас не получается сделать? Если не происходит переключение языков, значит у вас некорректно настроен плагин, в котором происходит вызов switchContext, либо он вообще отсутствует.
Если у вас на прочих языковых версиях не отображаются файлы картинок, стилей и скриптов, то ищите проблему в конфиге .htaccess или nginx.
@@OpenModx Здравствуйте! Спасибо. Да у меня проблемы с переключением языков а плагин выглядит так:
@@OpenModx Не много уточню и дополню вопрос, языки у меня стали переключаться, но проблема с URL, к примеру находишься на странице site.ru/catalog/ у других вариантов языка при переключении url будет site.com и site.com/de/ а должно быть site.com/catalog/ и site.com/de/catalog/
@@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;
}
@@X900 Для переключения на другие языки используйте сниппет docs.modx.com/current/en/extras/babel/babellinks он автоматически проверит, есть ли у данного ресурса связанные ресурсы из других контекстов и выведет на них соответствующие ссылки. Только не забудьте у других контекстов указать соответствующие настройки (по-моему site_url и cultureKey)
Только один вопрос к автору. Почему ни выложили код ?
Сорри ) Но автор тогда ленился ))
@@OpenModx я так и ни смог настроить по этому видео. Сделал через другое видео. Но там весь код был на странице сайта
@@INDIGORUINDIGO Я в последних 4-5 видео на канале уже начал выкладывать код на github
@@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"
}`
]]
Вы бы ни могли описать как и что тут отрабатывает?
@@INDIGORUINDIGO Все довольно очевидно. Это запрос с джоином одной и той же таблицы, каскадно по полю parent. В выборке будут лежать все ресурсы с шаблоном 10 и 4 вложенных друг в друга товаров, начиная от родительского. Только не понятно, зачем делать дополнительный джоин этого же ресурса? Я про это:
"p1": {
"class": "modResource",
"on": "p1.id = modResource.id"
},
В выборке будут все поля ресурcа и поля menuindex вложенных ресурсов, которые будут под псевдониами pm2 pm3 pm4 pm5
Как сделать поддомены сайта для разных городов?
1. Настроить веб-сервер на работу с разными поддоменами
2. Сделать плагин, который будет парсить поддомен, определять город из поддомена и выставлять соответствующие переменные и плейсхолдеры, характерные для города
а как сделать переключать языков например в хедере во фронт енде?
Переключалка языков в данном случае - это просто ссылка на страницу из другого контекста. Я думаю, делать урок о том, как поставить ссылку, не нужно )
Получается на каждую страницу нужно вручную добавлять ссылки на языковые аналоги, а если страниц 100 и языков 3-4?
Нет, для того, чтобы не добавлять этого вручную, необходимо поставить расширение Babel и пользоваться его возможностями.
Спасибо за урок. В интернете можно встретить информацию, как работать к контекстами без правки htaccess или настройки веб-сервера. Было бы неплохо об этом поподробнее услышать...
Спасибо за уроки! Не совсем пока все понятно, но все равно спасибо!
Здравствуйте. Спасибо за уроки. У меня слейдующая проблема: при переходе между контекстами происходит переход только(и сразу) на стр. 404. В корень контекста (site_url) упорно не желает переходить. Также и при нажатии на "посмотреть" из админки, прописании site_url/?id=номер_ресурса, также не переходит. Контекст как-будто бы закрыт для просмотра, кроме стр. 404. Как это можно исправить?
Похоже на то, что у вас не переключается контекст. Плагин для переключения контекстов добавили? Проверили, он работает? Каким образом у вас происходит переключение контекстов?
OpenModx , переключение происходит, т. к. стр. 404 открывается именно из en контекста(у нее содерживоем отличается от стр. 404 web контекста). но при переходе на любую другую страницу en контекста, даже из админки , все-ровно выдает 404 en контекста.
@ШЕО я, к сожалению, уже не помню. сделал магазин на OP3 а потом и вообще его начали переписывать на ReactJS+Java
Всё сделал как в видео - в результате контекст переключается но вот при открытии любой страницы из нового контекста происходит переход на страницу ошибки 404.
У меня после этого путь к assets добавляется язык
bewbarmak.localhost:81/en/assets/img/icon_qatar/icc1.png
Как можно решить?
Абсолютно верно. Именно для этого я видео уделяю внимание настройке веб-сервера, чтобы он игнорировал /en в URL при обращении к статичным ресурсам
Можно такой же rule переписать для htaccess
Все решил.
Если можно, добавляй еще и сам код (может на что -то типо jsfiddle) - реально мелковатый шрифт, чтобы разглядеть все).