Внешние данные для позиций магазина

#
Внешние данные для позиций магазина
Есть позиции товара в магазине, есть внешняя БД. Нужно взять некое поле товара, сделать запрос к внешней БД с этим параметром, получить в результате несколько значений, которые вывести в описании товара.

Это реализуемо?
Модератор
#
Re: Внешние данные для позиций магазина
VAshot,
В типовой делаете запрос, через external_propertry передаете код в метод.
#
Re: Внешние данные для позиций магазина
Что запрос в типовой - это понятно. Как передать множество параметров через external_propertry тоже.
Но остаются вопросы.
Как заполнить массив параметров? Вернее, как в типовой получить некоторое свойство для всех позиций для дальнейшего запроса к внешней базе?
Потом еще надо будет этот массив внешних свойств как то обработать в XSL...

Пример, каталог товаров. У каждого товара есть индивидуальный id2. по этому id2 обращаемся к внешней БД и получаем prop1, prop2, которые выводятся в каталоге рядом с описанием этого товара.

Две мысли пришли в голову. 1. Реализовать через innerHTML, в этом случае в XSL просто формируем скрипт с ссылкой на базе свойства id2, но нужен серверный скрипт для обработки запросов и существенно увеличивается число запросов к серверу от клиента.
2. добавить товару нужные дополнительные свойства и напрямую через sql периодически синхронизировать их с полями внешней БД. Тут тоже нужен скрипт, но можно и без него, если таблицы внешней БД поместить в основную базу сайта.

есть ли другое красивое решение?
#
Re: Внешние данные для позиций магазина
Во! оказывается нет ничего невозможного

есть такое чудо: http://www.php.net/manual/en/xsltprocessor.registerphpfunctions.php

Где прописать нужную функцию? в ТДС? С этим позже разберемся.

Но самое главное, нужно сделать вызов
$proc->registerPHPFunctions();

видимо, в Xsl.class.php, но он закодирован.

Можно раскрыть код или добавить вызов туда?

(если функция прописанная в ТДС таким образом не подцепится, то нужно еще будет "подинклудить" скрипт с функциями перед вызовом registerPHPFunctions)
#
Re: Внешние данные для позиций магазина
Тут конечно вопросы с закрытостью кода и обновлениями...
Как вариант: после
$xsl = new XSLTProcessor;

добавить проверку на существование и включение стороннего PHP файла.

А пользователь сам решит, нужно ему такой функционал или нет. если нужен, то создаст этот самый файл с нужными функциями и вызовом registerPHPFunctions.

Не огорчайте На улице солнышко и я нашел решение от своей "головной боли".


А это будет полезно многим многим, если мозги не растопились еще мои , то это вполне себе вариант благополучно обходится без XSLT 2.0 и дальше. По крайней мере всякие преобразования LowCase и т.п. тут будут на ура.
Модератор
#
Re: Внешние данные для позиций магазина
VAshot писал(а):
Вернее, как в типовой получить некоторое свойство для всех позиций для дальнейшего запроса к внешней базе?

Поясните вопрос.

VAshot писал(а):
Потом еще надо будет этот массив внешних свойств как-то обработать в XSL…

Передаете через external_property и обрабатываете в XSL.

VAshot писал(а):
У каждого товара есть индивидуальный id2. по этому id2 обращаемся к внешней БД и получаем prop1, prop2, которые выводятся в каталоге рядом с описанием этого товара.

не вижу проблем в реализации.

Если Вам нужно просто добавить registerPHPFunctions, то мы добавили. Запросить файл обновления можно в поддержке.
#
Re: Внешние данные для позиций магазина
>>Если Вам нужно просто добавить registerPHPFunctions, то мы добавили. Запросить файл обновления можно в поддержке.

Благодарю.


>>не вижу проблем в реализации.
А я в ступоре... например, совсем не знаю как цикл по массиву external_property сделать, чтобы выбрать элемент со значениями для нужного товара... хотя... можно по индексу. Или как вот узнать id товаров, которые будут выведены на страницу в ТДС. Точнее это можно, но похоже код усложнится серьезно.
registerPHPFunctions - как-то более красивый и простой способ.
Модератор
#
Re: Внешние данные для позиций магазина
VAshot писал(а):
registerPHPFunctions — как-то более красивый и простой способ.

Без проблем, файлик для обновления Вам выслали.
#
Re: Внешние данные для позиций магазина
Уже опробовал такая мелочь, а счастлив как детё.

Спасибо, еще раз.
Модератор
#
Re: Внешние данные для позиций магазина
Пример замены строк на PHP в XSL:
Смотрите пример: http://www.php.net/manual/en/xsltprocessor.registerphpfunctions.php#84309
<xsl:value-of select="php:functionString('str_replace', 'ЧТО МЕНЯЕМ', 'НА ЧТО МЕНЯЕМ', string(ИМЯ_ТЕГА_XML))">
Авторизация