Перейти к содержимому


Загрузка Только Центральной Части Сайта, Без Обёртки Шаблоном "Html"


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 61

#1 support

support

    Активный участник

  • Модераторы
  • 3 686 сообщений
  • ГородМосква

Отправлено 13 Декабрь 2012 - 19:20

Добавили использование специальной переменной, переданной POST либо GET методом
only_body
Она позволяет загружать только центральную часть сайта, без обёртки шаблоном HTML.

Суть в том что по умолчанию сайт загружается как шаблон HTML, внутри которого через переменную
{BODY}
выдаётся модуль, например в случае с отображением страницы товара сначала отображается код из шаблона "HTML", а внутри через переменную {BODY} отображается шаблон "Товар":
only_body.jpg

Использование в запросе переменной
?only_body=1
позволяет загружать только
{BODY}
, без обёрточного шаблона.

Зачем это нужно?
Например если Вам нужно сделать загрузку следующей страницы списка товаров, без нажатия на следующую страницу 2,3,5... с помощью ajax, как это сделано например в ленте вконтакте или на pinterest-е. Для этого ajax скрипом создаём запрос на страницу 2, но с указанием параметра only_body, в этом случае загрузится лишь шаблон второй страницы товаров, который можно вставить после первой.

Для скрытия лишних элементов внутри шаблона, в данном случае "Товары" можно использовать условия:
{% IFNOT ONLY_BODY %}
...
блок верхней навигации
...
{% ENDIF %}


...
Список товаров
...

{% IFNOT ONLY_BODY %}
...
блок нижней навигации
...
{% ENDIF %}

Это позволит при обычном просмотре увидеть сайт как обычно с нужными блоками навигации, социальных кнопок и прочих скриптов, а при запросе через ajax загрузить лишь список товаров.

#2 Братишка

Братишка

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 66 сообщений

Отправлено 13 Декабрь 2012 - 22:56

А можно при помощи этой переменной переключать модификации товара? Наверное, можно... Быстрее ведь получится, страницу каждый раз не грузить заново... Напишете, как осуществить?

Заодно, может, поможете решить вопрос из этой темы, а то никто не берется его основательно разрулить.

Сообщение отредактировал Братишка: 13 Декабрь 2012 - 22:59


#3 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 353 сообщений

Отправлено 14 Декабрь 2012 - 01:42

По умолчанию переключение модификаций осуществляется по такому же принципу т.е без перезагрузки всей страницы.

#4 support

support

    Активный участник

  • Модераторы
  • 3 686 сообщений
  • ГородМосква

Отправлено 14 Декабрь 2012 - 01:56

Просмотр сообщенияVaccina (14 Декабрь 2012 - 01:42) писал:

По умолчанию переключение модификаций осуществляется по такому же принципу т.е без перезагрузки всей страницы.
Все модификации уже загружены на странице товара, они переключаются на javascript-е, без использования ajax. Эта опция сделана для иных целей.
Все модификации на странице товара доступны в массиве:
goods_modifications
Для отображения всех переменных и массивов на странице используйте:
{print_r}


#5 551

551

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 650 сообщений
  • ГородМосква

Отправлено 05 Май 2013 - 18:03

А как сделать отображание товаров на одной странице, используя эту переменную?

#6 support 2.0

support 2.0

    Активный участник

  • Модераторы
  • 4 950 сообщений

Отправлено 06 Май 2013 - 16:12

Просмотр сообщения551 (05 Май 2013 - 18:03) писал:

А как сделать отображание товаров на одной странице, используя эту переменную?

О какой станице идет речь? Как именно Вы хотите отобразить товары?

#7 551

551

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 650 сообщений
  • ГородМосква

Отправлено 06 Май 2013 - 22:21

Просмотр сообщенияsupport 2.0 (06 Май 2013 - 16:12) писал:

О какой станице идет речь? Как именно Вы хотите отобразить товары?

О любой категории каталога. Хочу сделать так, чтобы прокручивая страницу вниз, товары сами подгружались.

#8 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 07 Май 2013 - 03:38

Данный вопрос ранее обсуждался на форуме. Почитайте следующую тему форума http://forum.storela...кой/#entry54723

#9 Flor@@

Flor@@

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 1 959 сообщений

Отправлено 08 Май 2013 - 03:20

Просмотр сообщенияsupport (13 Декабрь 2012 - 19:20) писал:

Добавили использование специальной переменной, переданной POST либо GET методом
only_body
Она позволяет загружать только центральную часть сайта, без обёртки шаблоном HTML.

Суть в том что по умолчанию сайт загружается как шаблон HTML, внутри которого через переменную
{BODY}
выдаётся модуль, например в случае с отображением страницы товара сначала отображается код из шаблона "HTML", а внутри через переменную {BODY} отображается шаблон "Товар":
Прикрепленный файл only_body.jpg

Использование в запросе переменной
?only_body=1
позволяет загружать только
{BODY}
, без обёрточного шаблона.

Зачем это нужно?
Например если Вам нужно сделать загрузку следующей страницы списка товаров, без нажатия на следующую страницу 2,3,5... с помощью ajax, как это сделано например в ленте вконтакте или на pinterest-е. Для этого ajax скрипом создаём запрос на страницу 2, но с указанием параметра only_body, в этом случае загрузится лишь шаблон второй страницы товаров, который можно вставить после первой.

Для скрытия лишних элементов внутри шаблона, в данном случае "Товары" можно использовать условия:
{% IFNOT ONLY_BODY %}
...
блок верхней навигации
...
{% ENDIF %}


...
Список товаров
...

{% IFNOT ONLY_BODY %}
...
блок нижней навигации
...
{% ENDIF %}

Это позволит при обычном просмотре увидеть сайт как обычно с нужными блоками навигации, социальных кнопок и прочих скриптов, а при запросе через ajax загрузить лишь список товаров.

Поясните поподробнее, что дает эта функция? делает ли она сайт более "легким"??

#10 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 353 сообщений

Отправлено 08 Май 2013 - 04:47

Данная функция сама по себе не делает сайт легким. Данная реализация применяется например тут http://forum.storela...ой/page__st__40

Т.е в данном случае можно реализовывать подгрузку информации.

#11 Flor@@

Flor@@

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 1 959 сообщений

Отправлено 08 Май 2013 - 06:20

что конкретно дает эта подгруз ка информации? Повышает юзабилити? Как конкретно влияет на вес сайта и конкретной страницы с товарами?

#12 Koderhan

Koderhan

    Активный участник

  • Модератоpы
  • 6 227 сообщений

Отправлено 08 Май 2013 - 10:10

Просмотр сообщенияotdyh-i-son.ru (08 Май 2013 - 06:20) писал:

что конкретно дает эта подгруз ка информации? Повышает юзабилити? Как конкретно влияет на вес сайта и конкретной страницы с товарами?
Страница не перезагружается полностью. Как описано в первом сообщение, подгружаются только товары. В некоторых ситуациях это может быть удобно.
Такая подгруздка на вес сайта вряд ли значительно влияет.

#13 support

support

    Активный участник

  • Модераторы
  • 3 686 сообщений
  • ГородМосква

Отправлено 09 Май 2013 - 19:59

Просмотр сообщенияKoderhan (08 Май 2013 - 10:10) писал:

Страница не перезагружается полностью. Как описано в первом сообщение, подгружаются только товары. В некоторых ситуациях это может быть удобно.
Такая подгруздка на вес сайта вряд ли значительно влияет.
Для оптимизации лучше всего пользоваться вот такими инструментами: http://www.webpagetest.org/
Они позволяют быстро понять, что ещё можно оптимизировать на сайте. Фоновые картинки например пережать, убрать лишние элементы которые большие и не используются.
В целом для повышения конверсии сайта есть смысл использовать такие сервисы, как http://abtest.ru/
Например для вашего сайта очевидно, что если убрать ряд кнопок с ссылками на сторонние ресурсы конверсия должна подрасти. Если они например требуют от Вас обязательного наличия этих кнопок на сайте, можно сделать отдельную страницу, хоть в корне сайта, где разместить их, но то что они портят конверсию на 5-10% это точно. Тут важно понять сколько они несут пользы для вашего сайта. Просто думаю человек, который искал матрас даже если зайдёт на сайт ТИЦ-PR, но маловероятно что это их аудитория, которая была им нужна. Т.е. на этих кнопка с большой вероятностью Вы теряете покупателей, которые могли сделать реальную покупку, а кнопачники получают трафик, который просто нагружает сервера, но не приносит им ничего кроме самодовольства, что к нам на сайт зашло 100500 человек за сегодня.

Для проверки моей теории можно воспользоваться как раз ABtest-ом, что позволит определить точные цифры и понять эффективность подобных изменения с довольно высокой точностью

#14 551

551

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 650 сообщений
  • ГородМосква

Отправлено 13 Май 2013 - 22:12

А можно каталог (категорию каталога) вывести без обертки в всплывающем окне в фрейме, как описано здесь http://forum.storela...окно/#entry7911 ?

#15 551

551

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 650 сообщений
  • ГородМосква

Отправлено 16 Май 2013 - 16:17

Добрый день.

Вы мне так и не ответили, решил попробовать сделать самостоятельно и у меня кое-что получилось. Изначально мне нужно сделать следующее: у меня на сайте при покупке товара на сумму более 2000 рублей покупателю дается возможность выбрать подарок - в корзине появляется ссылка на страницу каталога с подарками. При этом посетитель, чтобы выбрать подарок должен перейти на другую страницу - т.е. покинуть корзину и прервать оформление заказа. После миллионов отрицательных ответов о возможности реализации вывода этих подарков прямо на странице корзины, с этой темой у меня появилась надежда.

В итоге, взяв из какой-то другой темы код вывода фрейма в всплывающем окне, я сделал следующее:

<a href="#" id="openFlippingBook2">тест</a>
<script type="text/javascript">
$('a#openFlippingBook2').click(function(e) {
e.preventDefault();
var width = 800;
var height = 500;
var content = '<iframe width="795" height="495" src="http://babylook.me/catalog/podarki?only_body=1" frameborder="0" allowfullscreen></iframe>';
$.fn.nyroModalManual({
width: width,
height: height,
content: content,
minWidth: width,
minHeight: height,	
gallery: null
});
return(false);
});
</script>

И, по этой ссылке "тест" действительно открывается раздел каталога с подарками и при большом желание оттуда можно даже что-то положить в корзину. Но все работает очень коряво. Начиная с того, как это выглядит:

BabyLook.png

Т.е. выводится помимо самих товаров и всякая ненужная информация типа переключения режима просмотра, текст описания категории и т.д.

Кроме этого, как видно из скриншота - все стили слетели. Как все это поправить? И вообще, можно ли так сделать?

Я вижу дальнейшую возможность класть товар в корзину из такого окна так - в шаблоне список товаров через "if категория подарков" добавить кнопку купить и убрать ссылки с товаров на их карточки (т.е. покупатель не сможет войти в сам товар, а сможет только положить его в корзину). Но еще как-то нужно закрывать окно при добавлении товара в корзину.

Или еще есть вариант: выводить эту категорию товаров без всплывающего окна в корзине при условии товара в ней на 2000 рублей и более. Причем у меня сейчас в корзине стоит условие - при добавление товара с нулевой ценой (подарка), ссылка на список подарков исчезает. Таким образом можно и убирать этот список подарков при добавлении одного из них в корзину.

Помогите мне разобраться, как лучше это сделать.

#16 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 17 Май 2013 - 01:48

Почитайте следующую тему форума http://forum.storela...__40#entry59241

В ней рассказывается на примере отзывов о возможности получения информации с любой страницы, и последующая её фильтрация на содержимое. По сути это можно применить и для вашего случая.

#17 551

551

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 650 сообщений
  • ГородМосква

Отправлено 17 Май 2013 - 11:39

Просмотр сообщенияСake (17 Май 2013 - 01:48) писал:

Почитайте следующую тему форума http://forum.storela...__40#entry59241

В ней рассказывается на примере отзывов о возможности получения информации с любой страницы, и последующая её фильтрация на содержимое. По сути это можно применить и для вашего случая.

Спасибо! Отлично. Но остался вопрос, как правильно этот выводимый блок привести к нужному виду. А именно убрать ссылки на подробное описание этих подарков и добавить кнопку в корзину. Я думаю будет примерно так (шаблон товары):

<!-- Список товаров. Таблица -->
	  <table>
		<tr>
		  {% FOR goods %}
			<td class="goodsListItem"> 
		   

			  <div class="goodsListItemBlock withBorder cornerAll">
			 
			  {%IF goods.MAX_DISCOUNT_EXPIRED_AT%}
   <div style="position: absolute; right:0; top:0; background: url(http://files.storeland.ru/web/upload/sitefiles/5/424/423733/sale_mini2.png); width: 50px; height: 30px; z-index: 2;"></div>
{%ENDIF%}
			 
			 {% IF goods.MIN_PRICE_NOW>=2000 %}
<div style="position:absolute; right:0; top:0; background:url(http://files.storeland.ru/web/upload/sitefiles/4/384/383353/gift24_2.png); width:50px; height:30px;z-index:2;"></div>
{%ENDIF%}

{% IF goods.OPINION_RATING_VALUE %}
										<div style="position: absolute; left:5px; top:5px;"><img src="{FORALL_IMAGES_PATH}stars/{goods.OPINION_RATING_VALUE|number_format("0", "", "")}.gif" alt="{goods.OPINION_RATING_VALUE|number_format("0", "", "")}" class="valignMiddle" style="padding-right:1em;" />
															</div>	{% ENDIF %}
				<table class="goodsListItemImage">
				  <tr>
					<td>
{% IF CATEGORY_NAME=Выберите подарок %}
<img src="{% IF goods.IMAGE_EMPTY %}{ASSETS_IMAGES_PATH}no-photo-other.png{% ELSE %}{goods.IMAGE_OTHER}{% ENDIF %}" alt="{goods.NAME}" />{% ELSE %}
					  <a href="{goods.URL}" title="Перейти на страницу &laquo;{goods.NAME}&raquo;"><img src="{% IF goods.IMAGE_EMPTY %}{ASSETS_IMAGES_PATH}no-photo-other.png{% ELSE %}{goods.IMAGE_OTHER}{% ENDIF %}" alt="{goods.NAME}" /></a>{% ENDIF %}
					</td>
				  </tr>
				</table>
{% IF CATEGORY_NAME=Выберите подарок %}	<h3 class="goodsListItemName">{goods.NAME}</h3>   
<div class="goodsListItemPriceNew">
				  {goods.MIN_PRICE_NOW | money_format}
				</div> 
				<div class="goodsListItemPriceOld">
				  {% IF goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT>goods.MIN_PRICE_NOW %}
					{goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT | money_format}
				  {% ELSEIF goods.MIN_PRICE_OLD>goods.MIN_PRICE_NOW %}
					{goods.MIN_PRICE_OLD | money_format}
				  {% ENDIF %}
				</div>
[color=#000000][font=Helvetica, Arial, 'Droid Sans', sans-serif]<p>[/font][/color]
[color=#000000][font=Helvetica, Arial, 'Droid Sans', sans-serif]<form action="{CART_ADD_GOODS_MODIFICATION_URL | url_amp}" method="post" id="goodsListFormId{related_goods.MIN_PRICE_NOW_ID}" class="goodsListForm">[/font][/color]
[color=#000000][font=Helvetica, Arial, 'Droid Sans', sans-serif]<div align="center">[/font][/color]
[color=#000000][font=Helvetica, Arial, 'Droid Sans', sans-serif]<input type="hidden" name="hash" value="{HASH}" />[/font][/color]
[color=#000000][font=Helvetica, Arial, 'Droid Sans', sans-serif]<input type="hidden" name="form[goods_from]" value="{related_goods.GOODS_FROM}" />[/font][/color]
[color=#000000][font=Helvetica, Arial, 'Droid Sans', sans-serif]<input type="hidden" name="form[goods_mod_id]" value="{related_goods.MIN_PRICE_NOW_ID}" />[/font][/color]
[color=#000000][font=Helvetica, Arial, 'Droid Sans', sans-serif]<a class="readmore" onclick="$('#goodsListFormId{related_goods.MIN_PRICE_NOW_ID}').submit(); return false;" title="Положить &laquo;{related_goods.NAME}&raquo; в корзину" href="#">Купить</a>[/font][/color]
[color=#000000][font=Helvetica, Arial, 'Droid Sans', sans-serif]</div>[/font][/color]
[color=#000000][font=Helvetica, Arial, 'Droid Sans', sans-serif]</form> [/font][/color]
[color=#000000][font=Helvetica, Arial, 'Droid Sans', sans-serif]</p>[/font][/color]
	 {% ELSE %}
				<h3 class="goodsListItemName"><a href="{goods.URL}" title="Перейти на страницу &laquo;{goods.NAME}&raquo;">{goods.NAME}</a></h3>
				<div class="goodsListItemPriceNew">
				  <a href="{goods.URL_MIN_PRICE_NOW}">{goods.MIN_PRICE_NOW | money_format}</a>
				</div> 
				<div class="goodsListItemPriceOld">
				  {% IF goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT>goods.MIN_PRICE_NOW %}
					<a href="{goods.URL_MIN_PRICE_NOW_WITHOUT_DISCOUNT}" class="lineThrough">{goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT | money_format}</a>
				  {% ELSEIF goods.MIN_PRICE_OLD>goods.MIN_PRICE_NOW %}
					<a href="{goods.URL_MIN_PRICE_OLD}" class="lineThrough">{goods.MIN_PRICE_OLD | money_format}</a>
				  {% ENDIF %}
				</div>{% ENDIF %}
			   <div class="mods">
				{% FOR mods %}
				 {% FOR v %}
				 {% IF goods.mods.v.NAME=Размер || goods.mods.v.NAME=Цвет/размер%}
				   <span class="mods_name">{goods.mods.v.NAME}:</span>
				   {goods.mods.v.VALUE}<span class="razd">,</span>
				 {% ENDIF %}{% ENDFOR %}
				{% ENDFOR %}
			   
			   
			   
			   </div>

		   
			  </div>
			 
			 
			 
			</td>
		  {goods.index | is_divided("3","</tr><tr>","")}
		  {% ENDFOR goods %}
		</tr>
	  </table>
	<!-- /Список товаров. Таблица -->

Правильно?

#18 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 353 сообщений

Отправлено 18 Май 2013 - 05:25

Вам не нужно изменять стандартный код шаблона "Товары", так как это можно сделать на js. Например в шаблоне "Товары" есть стандартный код отображения товаров в виде таблицы

<!-- Список товаров. Таблица -->
	  <table>
		<tr>
		  {% FOR goods %}
			<td class="goodsListItem"> 
			  <div class="goodsListItemBlock withBorder cornerAll">
				<table class="goodsListItemImage">
				  <tr>
					<td>
					  <a href="{goods.URL}" title="Перейти на страницу &laquo;{goods.NAME}&raquo;"><img class="goods-image-other" src="{% IF goods.IMAGE_EMPTY %}{ASSETS_IMAGES_PATH}no-photo-other.png{% ELSE %}{goods.IMAGE_OTHER}{% ENDIF %}" alt="{goods.NAME}" /></a>
					</td>
				  </tr>
				</table>
			   
				<h3 class="goodsListItemName"><a href="{goods.URL}" title="Перейти на страницу &laquo;{goods.NAME}&raquo;">{goods.NAME}</a></h3>
				<div class="goodsListItemPriceNew">
				  <a href="{goods.URL_MIN_PRICE_NOW}">{goods.MIN_PRICE_NOW | money_format}</a>
				</div> 
				<div class="goodsListItemPriceOld">
				  {% IF goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT>goods.MIN_PRICE_NOW %}
					<a href="{goods.URL_MIN_PRICE_NOW_WITHOUT_DISCOUNT}" class="lineThrough">{goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT | money_format}</a>
				  {% ELSEIF goods.MIN_PRICE_OLD>goods.MIN_PRICE_NOW %}
					<a href="{goods.URL_MIN_PRICE_OLD}" class="lineThrough">{goods.MIN_PRICE_OLD | money_format}</a>
				  {% ENDIF %}
				</div>
			  </div>
			</td>
			{% IFNOT goods.last %}{goods.index | is_divided("3","</tr><tr>","")}{% ENDIF %}
		  {% ENDFOR %}
		</tr>
	  </table>
	<!-- /Список товаров. Таблица -->

Обвернем этот блок в спец. блок

<div id="inject-goods-list">
	  <!-- Список товаров. Таблица -->
	  <table>
		<tr>
		  {% FOR goods %}
			<td class="goodsListItem"> 
			  <div class="goodsListItemBlock withBorder cornerAll">
				<table class="goodsListItemImage">
				  <tr>
					<td>
					  <a href="{goods.URL}" title="Перейти на страницу &laquo;{goods.NAME}&raquo;"><img class="goods-image-other" src="{% IF goods.IMAGE_EMPTY %}{ASSETS_IMAGES_PATH}no-photo-other.png{% ELSE %}{goods.IMAGE_OTHER}{% ENDIF %}" alt="{goods.NAME}" /></a>
					</td>
				  </tr>
				</table>
			   
				<h3 class="goodsListItemName"><a href="{goods.URL}" title="Перейти на страницу &laquo;{goods.NAME}&raquo;">{goods.NAME}</a></h3>
				<div class="goodsListItemPriceNew">
				  <a href="{goods.URL_MIN_PRICE_NOW}">{goods.MIN_PRICE_NOW | money_format}</a>
				</div> 
				<div class="goodsListItemPriceOld">
				  {% IF goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT>goods.MIN_PRICE_NOW %}
					<a href="{goods.URL_MIN_PRICE_NOW_WITHOUT_DISCOUNT}" class="lineThrough">{goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT | money_format}</a>
				  {% ELSEIF goods.MIN_PRICE_OLD>goods.MIN_PRICE_NOW %}
					<a href="{goods.URL_MIN_PRICE_OLD}" class="lineThrough">{goods.MIN_PRICE_OLD | money_format}</a>
				  {% ENDIF %}
				</div>
			  </div>
			</td>
			{% IFNOT goods.last %}{goods.index | is_divided("3","</tr><tr>","")}{% ENDIF %}
		  {% ENDFOR %}
		</tr>
	  </table>
	<!-- /Список товаров. Таблица -->
	</div>

Далее в шаблоне "Корзина" например перед формой

<form action="{CART_URL}" method="post" class="cartForm">

вставим

{%IF CART_SUM_NOW >= 500%}
  <strong>Вы можете выбрать подарок:</strong>
  <div id="insert-goods-list"></div>
{%ENDIF%}

остается только корректно сформировать js код в main.js
$(function() {
  var url = 'http://domain.ru/catalog/Категория?goods_view_type=2';
  var id = '#insert-goods-list'; // Из примера это insert-goods-opinion-list
  var injid = '#inject-goods-list'; // Из примера это inject-goods-opinion-list
  if(id && injid && $(id).length) {
	 $.get(url, function(html) {
		 $(id).html(filterGoodsHTML($(html).find(injid).html()));
	 });
  }
});
function filterGoodsHTML(html) {
  var good = $('<div>').addClass('goods-list');
  html = $(html).find('a').each(function() {
	$(this).removeAttr('href').addClass('not-link');
  }).end();
  return($(good).append(html));
}

Функция filterGoodsHTML служит в роли фильтра, в данном примере фильтр удаляет все href у ссылок и добавляет класс not-link к ссылкам, через этот класс можно простилизовать все ссылки(убрать подчеркивание и сделать эмуляцию что это обычный текст). Так же ко всему списку добавляется класс goods-list, так что можно простилизовать и сами блоки с товарами. Попробуйте использовать данный код. Так же вам необходимо будет вставить кнопку покупки для товаров отображения таблицей(если у вас этого еще не сделано). В итоге при нажатии на кнопку страница будет обновлена и в корзине будет лежать подарок.

#19 551

551

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 650 сообщений
  • ГородМосква

Отправлено 21 Май 2013 - 16:38

Просмотр сообщенияVaccina (18 Май 2013 - 05:25) писал:

Вам не нужно изменять стандартный код шаблона "Товары", так как это можно сделать на js. Например в шаблоне "Товары" есть стандартный код отображения товаров в виде таблицы

<!-- Список товаров. Таблица -->
	 <table>
	 <tr>
		 {% FOR goods %}
		 <td class="goodsListItem">
			 <div class="goodsListItemBlock withBorder cornerAll">
			 <table class="goodsListItemImage">
				 <tr>
				 <td>
					 <a href="{goods.URL}" title="Перейти на страницу &laquo;{goods.NAME}&raquo;"><img class="goods-image-other" src="{% IF goods.IMAGE_EMPTY %}{ASSETS_IMAGES_PATH}no-photo-other.png{% ELSE %}{goods.IMAGE_OTHER}{% ENDIF %}" alt="{goods.NAME}" /></a>
				 </td>
				 </tr>
			 </table>
			
			 <h3 class="goodsListItemName"><a href="{goods.URL}" title="Перейти на страницу &laquo;{goods.NAME}&raquo;">{goods.NAME}</a></h3>
			 <div class="goodsListItemPriceNew">
				 <a href="{goods.URL_MIN_PRICE_NOW}">{goods.MIN_PRICE_NOW | money_format}</a>
			 </div>
			 <div class="goodsListItemPriceOld">
				 {% IF goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT>goods.MIN_PRICE_NOW %}
				 <a href="{goods.URL_MIN_PRICE_NOW_WITHOUT_DISCOUNT}" class="lineThrough">{goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT | money_format}</a>
				 {% ELSEIF goods.MIN_PRICE_OLD>goods.MIN_PRICE_NOW %}
				 <a href="{goods.URL_MIN_PRICE_OLD}" class="lineThrough">{goods.MIN_PRICE_OLD | money_format}</a>
				 {% ENDIF %}
			 </div>
			 </div>
		 </td>
		 {% IFNOT goods.last %}{goods.index | is_divided("3","</tr><tr>","")}{% ENDIF %}
		 {% ENDFOR %}
	 </tr>
	 </table>
<!-- /Список товаров. Таблица -->

Обвернем этот блок в спец. блок

<div id="inject-goods-list">
	 <!-- Список товаров. Таблица -->
	 <table>
	 <tr>
		 {% FOR goods %}
		 <td class="goodsListItem">
			 <div class="goodsListItemBlock withBorder cornerAll">
			 <table class="goodsListItemImage">
				 <tr>
				 <td>
					 <a href="{goods.URL}" title="Перейти на страницу &laquo;{goods.NAME}&raquo;"><img class="goods-image-other" src="{% IF goods.IMAGE_EMPTY %}{ASSETS_IMAGES_PATH}no-photo-other.png{% ELSE %}{goods.IMAGE_OTHER}{% ENDIF %}" alt="{goods.NAME}" /></a>
				 </td>
				 </tr>
			 </table>
			
			 <h3 class="goodsListItemName"><a href="{goods.URL}" title="Перейти на страницу &laquo;{goods.NAME}&raquo;">{goods.NAME}</a></h3>
			 <div class="goodsListItemPriceNew">
				 <a href="{goods.URL_MIN_PRICE_NOW}">{goods.MIN_PRICE_NOW | money_format}</a>
			 </div>
			 <div class="goodsListItemPriceOld">
				 {% IF goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT>goods.MIN_PRICE_NOW %}
				 <a href="{goods.URL_MIN_PRICE_NOW_WITHOUT_DISCOUNT}" class="lineThrough">{goods.MIN_PRICE_NOW_WITHOUT_DISCOUNT | money_format}</a>
				 {% ELSEIF goods.MIN_PRICE_OLD>goods.MIN_PRICE_NOW %}
				 <a href="{goods.URL_MIN_PRICE_OLD}" class="lineThrough">{goods.MIN_PRICE_OLD | money_format}</a>
				 {% ENDIF %}
			 </div>
			 </div>
		 </td>
		 {% IFNOT goods.last %}{goods.index | is_divided("3","</tr><tr>","")}{% ENDIF %}
		 {% ENDFOR %}
	 </tr>
	 </table>
<!-- /Список товаров. Таблица -->
</div>

Далее в шаблоне "Корзина" например перед формой

<form action="{CART_URL}" method="post" class="cartForm">

вставим

{%IF CART_SUM_NOW >= 500%}
<strong>Вы можете выбрать подарок:</strong>
<div id="insert-goods-list"></div>
{%ENDIF%}

остается только корректно сформировать js код в main.js
$(function() {
var url = 'http://domain.ru/catalog/Категория?goods_view_type=2';
var id = '#insert-goods-list'; // Из примера это insert-goods-opinion-list
var injid = '#inject-goods-list'; // Из примера это inject-goods-opinion-list
if(id && injid && $(id).length) {
	 $.get(url, function(html) {
		 $(id).html(filterGoodsHTML($(html).find(injid).html()));
	 });
}
});
function filterGoodsHTML(html) {
var good = $('<div>').addClass('goods-list');
html = $(html).find('a').each(function() {
$(this).removeAttr('href').addClass('not-link');
}).end();
return($(good).append(html));
}

Функция filterGoodsHTML служит в роли фильтра, в данном примере фильтр удаляет все href у ссылок и добавляет класс not-link к ссылкам, через этот класс можно простилизовать все ссылки(убрать подчеркивание и сделать эмуляцию что это обычный текст). Так же ко всему списку добавляется класс goods-list, так что можно простилизовать и сами блоки с товарами. Попробуйте использовать данный код. Так же вам необходимо будет вставить кнопку покупки для товаров отображения таблицей(если у вас этого еще не сделано). В итоге при нажатии на кнопку страница будет обновлена и в корзине будет лежать подарок.

Попробовал сделать - получилось, спасибо! Но, как теперь к этой категории добавить кнопку "купить"? В шаблоне товаров добавил следующее:

{% IF CATEGORY_NAME = Выберите подарок %}
<p>
<form action="{CART_ADD_GOODS_MODIFICATION_URL | url_amp}" method="post" id="goodsListFormId{goods.MIN_PRICE_NOW_ID}" class="goodsListForm">
<div align="center">
<input type="hidden" name="hash" value="{HASH}" />
<input type="hidden" name="form[goods_from]" value="{goods.GOODS_FROM}" />
<input type="hidden" name="form[goods_mod_id]" value="{goods.MIN_PRICE_NOW_ID}" />
<a onclick="$('#goodsListFormId{goods.MIN_PRICE_NOW_ID}').submit(); return false;" title="Положить &laquo;{goods.NAME}&raquo; в корзину" href="#"><strong>Добавить в корзину</strong></a>
</div>
</form>
</p>
{% ENDIF %}

Не работает. Причем если убрать условие - кнопка появляется. Условие вроде правильно прописал. Почему не работает?

#20 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 22 Май 2013 - 04:50

Если кнопка появляется только без условия {% IF CATEGORY_NAME = Выберите подарок %} значит это условие не верно. Проверьте верно ли задано имя категории. Так же попробуйте убрать отступы так {%IF CATEGORY_NAME=Выберите подарок%} или переименовать категорию просто в "Подарок" и поставить условие {%IF CATEGORY_NAME=Подарок%}




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных