Николай Ланец
24 дек. 2014 г., 5:06

ShopModxBox-2.3.0 и modxSite-1.2.2

Вышла новая сборка магазина ShopModxBox-2.3.0. Главная фишка — возможность указывать цены товаров в различных валютах. Это особенно актуально с учетом динамики курсов рубля. Сразу уточню, что это не является полноценным мультивалютным решением (магазин по прежнему будет работать в рублях), но зато цена всегда будет относительно курса валют. Больше подробностей на хабре. Там же написано и как настроить автоматическое регулярное обновление курсов валют.
Вообще был проведен довольно обширный рефакторинг кода, изменений много, и коснулись они и пакета modxSite, но в целом все на уровне файлов, особо логика не менялась, так что если кто-то думает обновить уже имеющийся магазин на ShopModxBox, и если скин сайта был нормально скопирован перед редактированием, и в имеющиеся getdata-процессоры особо не лезли, то можно попробовать просто затянуть изменения с гита просто командой git pull (само собой на копии сайта экспериментируем, и про бэкапы не забываем). Единственное что вам дополнительно понадобится сделать в самой админке — это создать TV-поле currency_rate (в которое будет писаться актуальный курс валюты по отношению к рублю), создать системную настройку shopmodx.exchange_rate_tv и указать в нее id этого TV-поля, создать шаблон Валюта (и привязать к нему это TV-поле, а так же указать этот шаблон документам-валютам), и вроде как все.
курс почему-то не обновляется, если просто набрать
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 )
что где мог забыть?
поставил на другой домен чистый модх 2.3.2 и shopmodxbox 2.4.0, там курсы обновляются. буду дальше копать
и да, как заменить «RUR» на сайте на «руб.» к примеру?
Видимо у вас просто не актуальная версия ShopModxBox была, этого процессора там не было.
Это уже просто шаблончики подправьте.
хм… курсы обновляются, но цены товара остаются прежними, так ведь не должно быть?
1. Вы на свежей сборке 1.4.0 пробуете или нет? 2. Все должно работать, если ничего особенного не делали с процессором web/catalog/products/getdata. После обновления курсов валют в контексте spravochniki в соответствующих документах валют в TV-поле exchange_rate (Курс валюты) должно стоять соответствующее значение курса этой валюты по отношению к рублю. Этот курс и будет использоваться для пересчета цен товаров, указанных в рублях. Так же следует отметить, что все работает именно для рублей. Другие валюты как основные пока еще не поддерживаются.
да, модх 2.3.2 + сборка 1.4.0 вот он этот коварный тестовый сайт wl2.ru.swtest.ru/
Так у вас там все работает. Только не забывайте товарам указывать валюту, отличную от рубля joxi.ru/eAOqaVNf6y96mo
И пароль для админа измените. Не секурно даже для тестового сайта.
Добрый день, Николай. Установил этот апдейт себе в магазин, валюты обвновляются все нормально. А вот постраничность перестала отображаться, я так понял дело тут в функциях prepareResponse и outputArray. Они были перемещены из site/web/resources/getdata.class.php в site/web/getlist.class.php. Как только возвращаю их в процессор getdata — постраничность появляется а вот цена показывается не везде, делаю как у Вас в getlist — постраничность пропадает зато с ценой все нормально. Помогите разобраться!
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"}
Шаблон pagination.tpl добавил себе, постраничность не появилось. Я так понял там и другие шаблоны поменялись и причина кривой работы постраничности именно в них. Не помню какая версия у меня движка стоит, самое главное что цены нормально работают — валюты обновляются цены везде показываются. У вас есть список шаблонов, которые были обновлены, чтоб не тыкаться? Апдейт делал путем внесения изменения в файлы которые у перечислены в статье на гитхабе…
Никакие другие шаблоны не могут быть здесь причастны. Вы вставляли как есть мой код? У вас точно больше записей на выход чем limit? Точно результат выполнения процессора набивается в переменную $result?
Код вставлять сюда надо: shop/catalog/list.tpl?
Да куда угодно вставляйте. Это для теста. Будет выполнена выборка всех доступных документов (у вас их наверняка больше пяти). Если в этом случае не заработает пагинация, тогда будет глубже разбираться.
Я так понимаю надо написать {include file=«common/pagination/pagination.tpl»} вместо {include «common/pagination/pagination.tpl»}
Не важно. Можно и так и так. Такие вещи спрашивать не обязательно, можно поэкспериментировать. Смарти очень жесткая, и если что-то не так, получите фатальную ошибку.
так сделал тестовый шаблон с этой записью — выводит постраничность без самих ресурсов это надо думать связано с тем что я не указал шаблон вывода ресурсов
это надо думать связано с тем что я не указал шаблон вывода ресурсов
Таки да. Вы спрашивали про постраничность. Я подсказал как ее делать. А далее уже смотрите сами что и как делать и где у вас что не так. Скорее всего у вас или результат процессора не а $result набивается, или шаблон пагинатора не там инклюдите. Рабочий код есть вам для примера, разбирайтесь.
Спасибо! Буду чинить!

Добавить комментарий