Не дождавшись новейшей версии сниппета, опробовал последнюю имеющуюся. Ну что могу сказать – впервые удалось пройти полностью путь покупки, но ошибок все равно слишком много.
1. Самое главное – добавление в корзину на некоторых страницах работает, а не некоторых – нет. Причем HTML-код вызова абсолютно одинаковый, что самое странное.
Там, где не работает, возникает такая ошибка:
Ошибка: document.getElementById("infoblock") has no properties
Источник: assets/snippets/shop/nopcart.js
Строка: 850
Вообще-то и там работает, то есть товар в корзину добавляется, но никаких сообщений не появляется, так что пользоваться нормально нельзя.
2. Как ранее отмечалось, если страница прокручена, сообщение о добавлении товара появляется в невидимой области. Надо определять видимую область перед выводом.
3. Настоятельно рекомендую в начале сниппета поставить
$youremail = isset($youremail)? $youremail:$modx->config['emailsender'];
а не какой-то неизвестный адрес.
4. Ну, удалите позорные устаревшие строки
<a href="http://www.netscape.com">Netscape</a> и
<a href="http://www.microsoft.com/ie">Microsoft</a>
бесплатные браузеры, которые имеют поддержку Java скриптов.
которые, кстати, встречаются дважды.
5. Тексты надо писать более грамотно. Например, язык называется JavaScript а не Java скрипт, и обращение к пользователю «вы», «вас», а не «Вы», «Вас». Последний вариант правильный, если обращение идет к конкретному человеку, а если к неизвестному, то надо начинать со строчной буквы. Есть и другие ошибки.
6. Разберитесь все же с кодировками. Во-первых, просто ведь сделать два файла ru и ru-utf8, причем, как мне кажется, кодировка utf8 должна стоять по умолчанию. Также необходимо исправить проблему с кодировкой utf8 в приходящем письме.
7. Закончите, все же, перевод на русский язык. Например, переведите:
I\'m sorry, but you must provide the following field(s) before continuing:\n" + strFields
8. Следует разобраться с полями при оформлении заказа. Их очень много, причем практически все они не нужны, если планируется курьерская доставка. Зато не хватает других полей (например, код домофона, подъезд, этаж, квартира и так далее). И зачем разные адреса для доставки счета и доставки товара? Вообще, что такое для нашей действительности «адрес доставки счета»? Вообще-то локализация подразумевает не просто перевод слов, а учет местных реалий. Например, в России есть регионы, районы, населенные пункты и так далее, и поля «область» и «город» не отражают существующее территориальное деление (недостаточно штат США назвать областью).
Так как поля используются в разных местах программы, самостоятельное исправление может привести к нарушению работы корзины. Необходим простой и понятный механизм работы с формой оформления заказа, а также разумные установки по умолчанию.
9. MonetarySymbol по умолчанию лучше поставить «руб.»
10. Повторю, что рекомендация вручную добавить строки в заголовок страницы неудачна. Нередко используется один шаблон для разных страниц, и его изменение нежелательно. Проще написать на странице вызов сниппета, который только добавит в заголовок ссылку на нужный файл с программой.
И напоследок важное замечание. При следующих релизах пишите, что было исправлено, а что нет. Просто некоторые замечания повторяются с прошлых версий, и как-то пропадает желание тестировать, если нарываешься на ту же ошибку. Хотелось бы заранее знать, на что пока не стоит обращать внимание, и что было изменено, а, следовательно, требует повышенного внимания.