Fi1osof 24 декабря 2014 0 21
Вышла новая сборка магазина ShopModxBox-2.3.0. Главная фишка — возможность указывать цены товаров в различных валютах. Это особенно актуально с учетом динамики курсов рубля. Сразу уточню, что это не является полноценным мультивалютным решением (магазин по прежнему будет работать в рублях), но зато цена всегда будет относительно курса валют. Больше подробностей на хабре. Там же написано и как настроить автоматическое регулярное обновление курсов валют.

Вообще был проведен довольно обширный рефакторинг кода, изменений много, и коснулись они и пакета modxSite, но в целом все на уровне файлов, особо логика не менялась, так что если кто-то думает обновить уже имеющийся магазин на ShopModxBox, и если скин сайта был нормально скопирован перед редактированием, и в имеющиеся getdata-процессоры особо не лезли, то можно попробовать просто затянуть изменения с гита просто командой git pull (само собой на копии сайта экспериментируем, и про бэкапы не забываем). Единственное что вам дополнительно понадобится сделать в самой админке — это создать TV-поле currency_rate (в которое будет писаться актуальный курс валюты по отношению к рублю), создать системную настройку shopmodx.exchange_rate_tv и указать в нее id этого TV-поля, создать шаблон Валюта (и привязать к нему это TV-поле, а так же указать этот шаблон документам-валютам), и вроде как все.
21 комментарий
m
modxNoob 05 января 2015г в 15:34 #
курс почему-то не обновляется, если просто набрать
domain.ru/assets/components/modxsite/connectors/connector.php?pub_action=currencies/update_courses

получаю строку
{"success":false,"message":"\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u043b\u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e","total":0,"data":[],"object":[]}

что означает
Действие не существует или не может быть выполнено

и в логе modx тоже
[2015-01-05 14:30:45] (ERROR @ /assets/components/modxsite/connectors/connector.php) modWebPublicActionProcessor - Действие не существует или не может быть выполнено
[2015-01-05 14:30:45] (ERROR @ /assets/components/modxsite/connectors/connector.php) Array
(
    [pub_action] => currencies/update_courses
)

что где мог забыть?
m
modxNoob 05 января 2015г в 17:04 #
поставил на другой домен чистый модх 2.3.2 и shopmodxbox 2.4.0, там курсы обновляются. буду дальше копать
Fi1osof1
Fi1osof 05 января 2015г в 23:21 #
Видимо у вас просто не актуальная версия ShopModxBox была, этого процессора там не было.
m
modxNoob 05 января 2015г в 17:22 #
и да, как заменить «RUR» на сайте на «руб.» к примеру?
Fi1osof1
Fi1osof 05 января 2015г в 23:22 #
Это уже просто шаблончики подправьте.
m
modxNoob 06 января 2015г в 08:39 #
хм… курсы обновляются, но цены товара остаются прежними, так ведь не должно быть?
Fi1osof1
Fi1osof 06 января 2015г в 08:52 #
1. Вы на свежей сборке 1.4.0 пробуете или нет?
2. Все должно работать, если ничего особенного не делали с процессором web/catalog/products/getdata. После обновления курсов валют в контексте spravochniki в соответствующих документах валют в TV-поле exchange_rate (Курс валюты) должно стоять соответствующее значение курса этой валюты по отношению к рублю. Этот курс и будет использоваться для пересчета цен товаров, указанных в рублях. Так же следует отметить, что все работает именно для рублей. Другие валюты как основные пока еще не поддерживаются.
m
modxNoob 06 января 2015г в 09:44 #
да, модх 2.3.2 + сборка 1.4.0
вот он этот коварный тестовый сайт wl2.ru.swtest.ru/
Fi1osof1
Fi1osof 06 января 2015г в 09:54 #
Так у вас там все работает. Только не забывайте товарам указывать валюту, отличную от рубля joxi.ru/eAOqaVNf6y96mo

И пароль для админа измените. Не секурно даже для тестового сайта.
a
ashtray 27 апреля 2015г в 18:42 #
Добрый день, Николай. Установил этот апдейт себе в магазин, валюты обвновляются все нормально. А вот постраничность перестала отображаться, я так понял дело тут в функциях prepareResponse и outputArray. Они были перемещены из site/web/resources/getdata.class.php в site/web/getlist.class.php. Как только возвращаю их в процессор getdata — постраничность появляется а вот цена показывается не везде, делаю как у Вас в getlist — постраничность пропадает зато с ценой все нормально. Помогите разобраться!
Fi1osof1
Fi1osof 27 апреля 2015г в 18:56 #
site/web/resources/getdata.class.php расширяет site/web/getlist.class.php, так что если говорить конкретно о перемещаемых кусках кода из расширяющего процессора в расширяемый, то никаких проблем с этим не должно возникать. Скорее всего там еще другой код изменен. Изменилось две вещи:
1. Раньше использовался для постраничности сниппет getPage, а сейчас используется Смарти-шаблон common/pagination/pagination.tpl.
2. Раньше процессор из глобального массива $_GET получал значение переменной page (номер запрошенной страницы). А сейчас он на это не реагирует, ожидает явную передачу в него параметра page.
Пример, который должен работать, если все ОК:
{$params = [
    "limit"    => 5,
    "page"    => $smarty.get.page
]}
{processor action="web/resources/getdata" ns="modxsite" params=$params assign=result}
{include "common/pagination/pagination.tpl"}

a
ashtray 27 апреля 2015г в 19:21 #
Шаблон pagination.tpl добавил себе, постраничность не появилось. Я так понял там и другие шаблоны поменялись и причина кривой работы постраничности именно в них. Не помню какая версия у меня движка стоит, самое главное что цены нормально работают — валюты обновляются цены везде показываются. У вас есть список шаблонов, которые были обновлены, чтоб не тыкаться? Апдейт делал путем внесения изменения в файлы которые у перечислены в статье на гитхабе…
Fi1osof1
Fi1osof 27 апреля 2015г в 19:28 #
Никакие другие шаблоны не могут быть здесь причастны. Вы вставляли как есть мой код? У вас точно больше записей на выход чем limit? Точно результат выполнения процессора набивается в переменную $result?
a
ashtray 27 апреля 2015г в 19:51 #
Код вставлять сюда надо: shop/catalog/list.tpl?
Fi1osof1
Fi1osof 27 апреля 2015г в 19:55 #
Да куда угодно вставляйте. Это для теста. Будет выполнена выборка всех доступных документов (у вас их наверняка больше пяти). Если в этом случае не заработает пагинация, тогда будет глубже разбираться.
a
ashtray 27 апреля 2015г в 20:06 #
Я так понимаю надо написать {include file=«common/pagination/pagination.tpl»} вместо {include «common/pagination/pagination.tpl»}
Fi1osof1
Fi1osof 27 апреля 2015г в 20:08 #
Не важно. Можно и так и так. Такие вещи спрашивать не обязательно, можно поэкспериментировать. Смарти очень жесткая, и если что-то не так, получите фатальную ошибку.
a
ashtray 27 апреля 2015г в 20:21 #
так сделал тестовый шаблон с этой записью — выводит постраничность без самих ресурсов это надо думать связано с тем что я не указал шаблон вывода ресурсов
Fi1osof1
Fi1osof 27 апреля 2015г в 20:34 #
это надо думать связано с тем что я не указал шаблон вывода ресурсов
Таки да. Вы спрашивали про постраничность. Я подсказал как ее делать. А далее уже смотрите сами что и как делать и где у вас что не так. Скорее всего у вас или результат процессора не а $result набивается, или шаблон пагинатора не там инклюдите. Рабочий код есть вам для примера, разбирайтесь.
a
ashtray 27 апреля 2015г в 21:02 #
Спасибо! Буду чинить!
Fi1osof1
Fi1osof 27 апреля 2015г в 21:08 #
Пожалуйста!
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.