посмотри страницу с товаром в виде xml (например странице site.ru/catalog_tovarov_tovar1 ты дописываешь site.ru/catalog_tovarov_tovar1.xml и видишь xml код) там смотришь как выводиться поле в котором должно выводиться "нет в наличии" (кстати в каком именно поле менеджер будет указывать это значение, что за тип у данного поля) и вот когда ты увидишь в xml что меняется, пропишешь соответствующее условие в своем шаблоне .
например у тебя поле со значение "нет в наличии" будет с именем "nalichie" иметь тип поля "выпадающий список. при просмотре в xml варианте такое поле при выбранном пунте "нет в наличии" будет выглядеть примерно так.
<property id="123" name="nalichie" type="relation">
<title>Наличие</title>
<value>
<item id="333" name="Опубликован" type-id="1234" ownerId="14" xlink:href="uobject://333"/>
</value>
</property>
соответственно пункт "нет в наличии" имеет id=333 (в твоем случае конечно будут другие цифры)
Тогда в шаблоне для вывода товара укажем условие которое проверяет что если есть поле с именем "nalichie" и его значение не равно 333 то выводить код кнопки
<xsl:if test="not(//property[@name='nalichie']/value/item/@id=333)">
..html код кнопки добавить...
</xsl:if>
все, что меняется в ссылке после добавления в корзину (если ты работаешь на основе demodizzy и у тебя прикручен ajax работа с корзиной), добавляется в js файле /js/site/basket.js
в строчках
if (detect_options.amount) {
var add_basket_button = jQuery('#add_basket_' + detect_options.id);
if (add_basket_button[0].tagName.toUpperCase() == 'A') {
add_basket_button.text(add_basket_button_text + ' (' + detect_options.amount + ')');
}
else add_basket_button.val(add_basket_button_text + ' (' + detect_options.amount + ')');
}
там же добавь, средствами js, ссылку на корзину, которая будет выводиться около ссылку "положить в корзину", которая фигурирует в приведенном выше коде как add_basket_button
ну например такой код
if (detect_options.amount) {
var add_basket_button = jQuery('#add_basket_' + detect_options.id);
if (add_basket_button[0].tagName.toUpperCase() == 'A') {
add_basket_button.text(add_basket_button_text + ' (' + detect_options.amount + ')');
}
else add_basket_button.val(add_basket_button_text + ' (' + detect_options.amount + ')');
jQuery(add_basket_button).after('<a href="/emarket/cart/">Перейти в корзину</a>');
}
Да, действительно:) что может быть проще использования еще раз проверки которая уже делалась.
<xsl:if test="$cart_items/item[page/@id = $document-page-id]">
<p><a href="/emarket/cart/">Перейти в корзину</a></p>
</xsl:if>
для всех кто будет использовать этот кусочек кода.
Не забывайте про то, что переменная $cart_items должна быть определена в начале данного шаблона
<xsl:variable name="cart_items" select="document('udata://emarket/cart/')/udata/items" />
Предложили такой вот вариант:
var flag = 0;
if (detect_options.amount) {
var add_basket_button = jQuery('#add_basket_' + detect_options.id);
if (add_basket_button[0].tagName.toUpperCase() == 'A') {
add_basket_button.text(add_basket_button_text + ' (' + detect_options.amount + ')');
if (flag == 0){
jQuery(add_basket_button).after('<a href="/emarket/cart/">Перейти в корзину</a>');
flag=1;
else {}
}
Действительно, ссылка Перейти в корзину появляется только один раз, сколько бы не кликали на Добавить в корзину, но...
теперь страница стала перезагружаться. и все очень долго.
может есть какой вариант отображать ссылку не перезагружая страницу и не дублируя саму ссылку столько сколько кликнули?