При разработке одного интернет-магазина на UMI.CMS Shop мне довелось столкнуться с тем, что для изменения текста, который пользователь видит сразу после помещения товара в корзину, недостаточно поменять его лишь в файле локализации.
За основу при разработке сайта был взят интернет-магазин "современный" на базе XSLT-шаблонизатора. По умолчанию в этом магазине помещение товара в корзину со страницы рубрики происходит без перезагрузки страницы: при клике на кнопку "добавить в корзину" меняется количество товаров, написанное на данной кнопке, и при этом же меняется текст в плавающем информационном блоке в шапке сайта.
После замены текста в файле локализации /xsltTpls/i18n/constants.ru.dtd с:
<!ENTITY basket-add "Добавить в корзину">
<!ENTITY basket-empty "В корзине нет ни одного товара">
<!ENTITY basket-items-text "товаров на сумму ">
на:
<!ENTITY basket-add "В корзину">
<!ENTITY basket-empty "Вы пока ничего не выбрали">
<!ENTITY basket-items-text "</span></div><div><span class='label'>сумма</span>">
выяснилось, что из этого файла текст подхватывается лишь при перезагрузке страницы. При добавлении товара в корзину с помощью AJAX по-прежнему показывались старые значения.
Небольшое исследование показало, что искомый старый текст находится в файле /js/site/basket.js и его там много. Нужно:
1. В строке 9 заменить текст на кнопке:
add_basket_button_text = 'Добавить в корзину',
на свой, например:
add_basket_button_text = 'В корзину',
2. Дальше в строке 53 нужно изменить текст для информатора корзины со старого:
text = e.summary.amount + ' шт товаров на сумму ' + text;
на новый:
text = '<div><span class="label">товаров</span><span class="num">' + e.summary.amount + '<span class="dim">шт.</span></span></div><div><span class="label">сумма</span><span class="num">' + text;
3. В строке 56 надо отредактировать сообщение для информатора корзины, которое показывается в случае, если корзина пуста:
text = 'В корзине нет ни одного товара.';
написать что-то своё:
text = 'Вы пока ничего не выбрали';
4. Для того, чтобы содержимое плавающего блока корзины выводилось как корректный HTML, следует заменить ещё в строке 61 формат вывода HTML:
jQuery('.basket_info_summary').text(text);
на:
jQuery('.basket_info_summary').html(text);
5. И наконец нужно изменить сам шаблон корзины /xsltTpls/modules/emarket/basket.xsl
<xsl:template match="summary[amount > 0]" mode="basket">
<div><span class="label">товаров</span><span class="num"><xsl:apply-templates select="amount" /></span></div>
<div><span class="label">сумма</span><span class="num"><xsl:apply-templates select="price/actual" /></span><span class="dim">руб.</span></div>
</xsl:template>
Способ трудно назвать красивым, возможно скажете вы. И я с вами соглашусь. Корректнее было бы использовать в js-файле константы для значений на кнопках и в информаторе.
Комментарии
Замечательно, я предполагал
mamatechde, 05 Авг 2012 at about 17:34.Замечательно, я предполагал все ровно наоборот. Открыли глаза, спасибо!!!
Редко найдешь материал на эту
liwardwebpe, 30 Сен 2012 at about 16:05.Редко найдешь материал на эту тему. Ждем продолжения...
Освежили давно забытые идеи
softrestsnythan, 22 Дек 2012 at about 05:48.Освежили давно забытые идеи