У меня не срабатывает(
Буду ковырять дальше
ЦитироватьУ меня не срабатывает(
Буду ковырять дальше
так а куда вы вставляете, в какую ноду, какой доступ к переменным, естественно document(concat('upage://(', substring-after(result/page/@link, result/@pre-lang) ,')'))//group[@name='slider'] достаточно образный запрос, если нет доступа к result/page/@link result/@pre-lang, то их можно задать как переменные или параметры в корневом шаблоне
естественно если мы в языковой версии по-умолчанию, то там это не сработает, так что можно использовать xsl:choose c проверкой на result/@pre-lang
Рекомендую посмотреть в сторону Выборки из БД: протокол USel (http://dev.docs.umi-cms.ru/shablony_i_makrosy/xslt-shablonizator_umi_cms/vyborki_iz_bd_protokol_usel/) и построить usel://getOriginPage/?pagePath=/foo/bar/&group=slider или usel://getOriginPage/(/foo/bar/)/slider/ это пример использования, еще надо сам запрос построить см. доку.
Решил получить ID страницы из основного языка <xsl:value-of select="document(concat('upage://(',substring-after(result/page/@link, result/@pre-lang),')'))/result/@pageId"/>
В выводе отсутсвует ID
ага, точно upage выводит из текущей языковой версии, даже и не знал об этом, тогда я бы написал кастомный метод, те же манипуляции с адресом, а потом по адресу получаешь id страницы с помощью метода getidbypath, ну а дальше можешь id через upage или сразу через extGroupsЦитироватьРешил получить ID страницы из основного языка <xsl:value-of select="document(concat('upage://(',substring-after(result/page/@link, result/@pre-lang),')'))/result/@pageId"/>
В выводе отсутсвует ID
upage не отдает result, там udata/page/@id
А какой смысл делать выборку usel ради одной страницы?
Upage должен решить мою задачу, вопрос почему он не хочет отрабатывать корректно?
А какой смысл делать выборку usel ради одной страницы?
Upage должен решить мою задачу, вопрос почему он не хочет отрабатывать корректно?
Используя Upage также происходит выборка и теоретически она будет работать в рамках текущей языковой версии т.е. не получить в EN страницу RU (не проверял, могу ошибаться).
Я предлагаю Usel т.е. вместо выборки которую реализует протокол Upage использовать Usel полностью полностью контролируемую выборку с возможностью оптимизировать запрос под задачу. Так же, в данном случае, это лучшая альтернатива реализации кастомнного метод в котором тоже придется решать через выборку,
А какой смысл делать выборку usel ради одной страницы?
Upage должен решить мою задачу, вопрос почему он не хочет отрабатывать корректно?
Используя Upage также происходит выборка и теоретически она будет работать в рамках текущей языковой версии т.е. не получить в EN страницу RU (не проверял, могу ошибаться).
Я предлагаю Usel т.е. вместо выборки которую реализует протокол Upage использовать Usel полностью полностью контролируемую выборку с возможностью оптимизировать запрос под задачу. Так же, в данном случае, это лучшая альтернатива реализации кастомнного метод в котором тоже придется решать через выборку,
набросал кастом
public function getLanguageId($url, $lang_prefix)
{
$pattern = "/\/$lang_prefix/";
$lang_prefix_new = preg_replace($pattern,'' ,$url);
$hierarchy = umiHierarchy::getInstance();
//Получим id страницы по ее url'у
$elementId = $hierarchy->getIdByPath($lang_prefix_new);
return "$elementId";
}
Но все равно возвращает id из текущей языковой версии(
$errors = array();
$elementId = $hierarchy->getIdByPath($elementPath, false, $errors, false, $langId);
$baseLangPrefix = 'ru';
$langId = langsCollection::getInstance()->getLangId($baseLangPrefix);
$langId = langsCollection::getInstance()->getDefaultLang()->getId();
upage думаю будет работать если использовать id страницы, а не путь...
$page = umiHierarchy::getInstance()->getElement($pageId);
...и врядли upage можно назвать выборкой, это скорее всего просто обращение к странице...
... Если речь о производительности, то как раз вместо usel лучше использовать кастомный метод без всяких выборок и прочего.
define('SQL_QUERY_DEBUG', true);
define('DEBUG_SQL_SELECTOR', true);
UPage и другие протоколы и тоже в своей реализации так или иначе используют выборки к базе.ок, я то думал все из воздуха берется!) речь об оптимальном выборе решения задачи
Кастомный метод не волшебник и данные без обращения к базе не предоставит, кроме случая когда данные находятся в другом месте.Евгений говорил как-то что лучше использовать кастом с селектором, нежели подобный usel, я поверил на слово
Код: [Выделить]$errors = array();
$elementId = $hierarchy->getIdByPath($elementPath, false, $errors, false, $langId);