Итак, у нас имеется сайт на базе компонента sCatalog и спустя время, в связи с расширением, клиенту нужно создать английскую версию сайта. Для чего мы будем использовать панацею многоязычности — JoomFish. Но как быть с переводом контента каталога? Вот тут мы сталкиваемся с проблемой, поскольку официального плагина sCatalog для JoomFish не существует. Проблема усугубляется тем, что каталог позволяет пользователю создавать дополнительные поля, но как их учитывать в плагине JoomFish? Мы не стали мудрствовать лукаво и заточили плагин под конкретные нужды сайта, т.е. с минимальной конфигурацией (автором модификации и плагина является Era, за что ему объявляется благодарность).
Этап 1. Создаём плагин для JoomFish. Категории sCatalog.
Создаём плагин и кладём в /administrator/components/com_joomfish/contentelements/scatalog_categories.xml:
1.
<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>
2.
<table name=
"scatalog_categories"
></table>
3.
<component> </component> </reference> </joomfish>
Этап 2. Создаём плагин для JoomFish. Товары sCatalog.
Создаём плагин и размещаем его в /administrator/components/com_joomfish/contentelements/scatalog_products.xml:
1.
<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>
2.
<table name=
"scatalog_products"
></table>
3.
<component> </component> </reference> </joomfish>
Этап 3. Вносим небольшую модификацию в компонент sCatalog.
Для поддержки перевода в модуле категорий добавлены строчки в /components/com_scatalog/models/category.php в функцию getNodes. Между строками:
1.
foreach
(
$prods
as
&
$row
)
$row
->link = JRoute::_(
'index.php?option=com_scatalog&view=product&catid='
.
$cslug
.
'&id='
.
$row
->slug);
$res
=
array_merge
(
$res
,
$prods
); }
и строками:
1.
return
$res
; }
function
getCatTree() {
Добавляем модификацию:
1.
// 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
Источник: joomlablog.ru