VamShop + RSS = Интеграция с Xoops

Вариант использования RSS + CMS на примере xoops, в данном случае.

Просто расскажу, в общих чертах, что нужно сделать в xoops, что б показывать rss каналы (товары) в привычном для VamShop виде.

Сначала ссылки, откуда можно скачать всё необходимое:

  1. xoops 2.2.3 - http://www.xoops.org/modules/core/visit.php?cid=7&lid=121&type=1

  2. xhld 3.0.2 - http://www.peak.ne.jp/xoops/md/mydownloads/visit.php?cid=1&lid=60&extension=zip

Как известно, одно дело отдавать RSS, это VamShop, другое дело, показывать данные каналы в нужном нам виде на другом сайте, в нашём примере это будет xoops.

Теперь нам нужно что б RSS парсеры (скрипты, читающие RSS каналы) в CMS выводили RSS каналы из VamShop так как нам нужно, а нужно что б товары выводились по типу боксов VamShop (мне во всяком случае так кажется), т.е. картинка, ниже название и стоимость.

Как это сделать на примере xoops 2.x?

1. Скачиваем xoops с официального сайта xoops.org, устанавливаем xoops, устанавливаем русификатор, если нужно.

2. Скачиваем модуль xhld, устанавливаем. Данный модуль как раз и является rss парсером.

3. Здесь же появляется первая проблема. Стандартный модуль xhld не умеет читать тэг enclosure, т.е. картинку товара из rss. Исправляем данную ошибку.

Открываем файл /includes/modules/xhld0/class/xmlrss2parser.php

Ищем:

		$this->addTagHandler(new XhldRssSourceHandler());

Добавляем после:

		$this->addTagHandler(new XhldRssEnclosureHandler());

Внизу, до ?> добавляем следующий код:

class XhldRssEnclosureHandler extends XmlTagHandler
{
	function XhldRssEnclosureHandler()
	{
	}
	function getName()
	{
		return 'enclosure';
	}
	function handleBeginElement(&$parser, &$attributes)
	{
		if ($parser->getParentTag() == 'item') {
			$parser->setTempArr('enclosure_url', $attributes['url']);
		}
	}
	function handleCharacterData(&$parser, &$data)
	{
		if ($parser->getParentTag() == 'item') {
			$parser->setTempArr('enclosure', $data);
		}
	}
}

Всё, поддержка тэга enclosure добавлена.

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

4. Открываем файл /includes/modules/xhld0/templates/xhld0_block.html и меняем его содержимое на следующее:

<table>
<tr>
<{section name=i loop=$items}>
<td>
  <{if $items[i].title != ""}>
  <{* <a href="<{$mod_url}>/index.php?id=<{$site_id}>#<{$items[i].link}>"><{if $items[i].enclosure_url}><center><img src="<{$items[i].enclosure_url}>" border="0" alt="<{$items[i].title}>"></center><br><{/if}><center><{$items[i].title}></center></a> *}>
	<a href="<{$items[i].link}>" target="_blank"><{if $items[i].enclosure_url}><center><img src="<{$items[i].enclosure_url}>" border="0" alt="<{$items[i].title}>"></center><br><{/if}><center><{$items[i].title}></center></a><{if $items[i].comments}><br><{/if}>
  </li>
  <{/if}>
</td>

<{if $smarty.section.i.iteration % 3 == 0}>
  </tr>
  <tr>
<{/if}>
<{/section}>
</tr>
</table>

Обратите внимение на строку:

<{if $smarty.section.i.iteration % 3 == 0}>

Здесь указывается количество rss элементов (количество товара) в одной строке, в данном примере 3. Меняйте данное значения по своему усмотрению.

5. В Админке - Модули, в списке модулей обязательно напротив модуля xhld нажимаем кнопку Обновить, иначе шаблон не изменится, т.к. в xoops'e всё кэшируется и если Вы вносите изменения в шаблоны нужно обязательно обновлять тот модуль, в шаблоны которого вносятся изменения.

6. Теперь просто в Админке - Модули - xhld добавляем нужные rss каналы. Например, добавим rss канал новинки - http://ваш-магазин.ру/rss2.php?feed=new_products

7. Затем добавляем новый блок по центру в Админке - Блоки - Новостные заголовки0. Называем его Новинки, к примеру. В настройке количество столбцов указываем 1.

В блоке должны выводиться товары из rss канала интернет-магазина, а именно новинки интернет-магазина.

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

Да, забыл, вот скриншот, что в итоге можно получить, воспользовашись моим советом. Сколько выводить товаров в боксе, сколько в одной строке бокса, всё это настраивается в xoops'e.

Все товары берутся из RSS каналов VamShop и выводятся в xoops в таком виде:

Рис. 1.

Рис. 1.