Практические решения

Дружим sCatalog и JoomFish на Joomla 1.5

Joomla
Добавление в избранное
Сохранить

Плагин Scatalog для JoomFish

Итак, у нас имеется сайт на базе компонента sCatalog и спустя время, в связи с расширением, клиенту нужно создать английскую версию сайта. Для чего мы будем использовать панацею многоязычности - JoomFish. Но как быть с переводом контента каталога? Вот тут мы сталкиваемся с проблемой, поскольку официального плагина sCatalog для JoomFish не существует. Проблема усугубляется тем, что каталог позволяет пользователю создавать дополнительные поля, но как их учитывать в плагине JoomFish? Мы не стали мудрствовать лукаво и заточили плагин под конкретные нужды сайта, т.е. с минимальной конфигурацией (автором модификации и плагина является Era, за что ему объявляется благодарность).

Scatalog и JoomFish

Этап 1. Создаём плагин для JoomFish. Категории sCatalog.

Создаём плагин и кладём в /administrator/components/com_joomfish/contentelements/scatalog_categories.xml:

 

 <joomfish type="contentelement"> <name>SCatalog Categories</name> <author>A. Balashov</author> <version>1.0.0</version> <description>SCatalog Category Items Translate</description> <copyright>2011, Balashov Aleksandr, aka Era</copyright> <reference><field type="referenceid" name="id" translate="0">ID</field><field type="titletext" name="title" translate="1">Title</field><field type="htmltext" name="short_desc" translate="1">Short Description</field><field type="htmltext" name="desc" translate="1">Description</field>
<table name="scatalog_categories"></table>
<component> </component> </reference> </joomfish>

Этап 2. Создаём плагин для JoomFish. Товары sCatalog.

Создаём плагин и размещаем его в /administrator/components/com_joomfish/contentelements/scatalog_products.xml:

 <joomfish type="contentelement"> <name>SCatalog products</name> <author>A. Balashov</author> <version>1.0.0</version> <description>SCatalog Tovars Items Translate</description> <copyright>2011, Balashov Aleksandr, aka Era</copyright> <reference><field type="referenceid" name="id" translate="0">ID</field><field type="titletext" name="title" translate="1">Title</field><field type="htmltext" name="short_desc" translate="1">Short Description</field><field type="htmltext" name="desc" translate="1">Description</field>
<table name="scatalog_products"></table>
<component> </component> </reference> </joomfish>

Этап 3. Вносим небольшую модификацию в компонент sCatalog.

Для поддержки перевода в модуле категорий добавлены строчки в /components/com_scatalog/models/category.php в функцию getNodes. Между строками:

 foreach($prods as &$row) $row->link = JRoute::_('index.php?option=com_scatalog&view=product&catid='.$cslug.'&id=' .$row->slug); $res = array_merge($res, $prods); } 

и строками:

 return $res; } function getCatTree() { 

Добавляем модификацию:

 // era edited: added start if (count($res) and file_exists(JPATH_SITE.DS.'components'.DS.'com_joomfish')) { $itms = array(); foreach($res as $r) { $itms[] = str_replace('cat-', '', $r->id); } if (count($itms)) { $this->_db->setQuery("SELECT id, title FROM #__scatalog_categories WHERE id IN (".implode(",", $itms).")"); $res_items = $this->_db->loadObjectList(); if (count($res_items)) { for($i = 0; $i < count($res); $i++) { foreach($res_items as $res_item) { if ('cat-'.$res_item->id == $res[$i]->id) { $res[$i]->name = $res_item->title; } } } } } } // era edited: added end 

 

скачать плагин Joomla

Скачать архив с модификациями(это не установочный пакет, распакуйте и скопируйте файлы в соответствующие директории):

{phocadownload view=file|id=4|target=s}

Протестировано:

  • Joomla 1.5.23
  • sCatalog 1.9.3
  • JoomFish 2.1.7

Поблагодарить автора:

{yandexmoney}

Eugene Sivokon
Предприниматель, менеджер проектов, Joomla-энтузиаст. Занимаюсь созданием сайтов с 2002 года. Координатор нескольких Joomla проектов. Обожаю путешествовать, интересуюсь историей и изучаю иностранные языки.

Подпишитесь на рассылку новостей CMScafe