Приветствую!
Для тех кто использует Ace Shop (связка Joomla + OpenCart). Чтобы установить модуль придется немного поупражнятся :)
Я ставил на версию AceShop 2.0, внутри него OpenCart 1.5.4.1
Итак!
Распаковываем, модуль, копируем его в каталог /components/com_aceshop/opencart. Идем в админку, убеждаемся что модуль появился в списке модулей, добавляем таблицу связей в базу (нажав предназначенную для этого кнопочку). Если кнопка исчезла, а ошибок не появилось - значит все ок, и таблица в базу добавилась. Проверить можно зайдя myAdmin и поискав таблицу с названием типа jos_aceshop_category_related.
Идем в админку категорий товаров, и видим что не появилась нужная вкладка - "Связи". Печалимся, и лезем в логи Vqmod менеджера. Обнаруживаем там сообщение вида
modFile : /ext/www/tdev/beermag/components/com_aceshop/opencart/vqmod/xml/rcategory.xml
id : Related category
version : 1.0.0
vqmver : 2.1.3
author : made by zubovd
SEARCH NOT FOUND (ABORTING MOD): <div id="tabs" class="htabs"><a href="#tab-general"><?php echo $tab_general; ?></a><a href="#tab-data"><?php echo $tab_data; ?></a><a href="#tab-design"><?php echo $tab_design; ?></a></div>
Это значит что при обработке патчей, Vqmod не смог найти нужную строчку и прекратил работу. Виной этому один из модулей самого AceShopa который правит эту же строчку, но немного раньше.
Исправляем положение. Для начала - отключаем кэш VqMod в настройках AceShop. на этапе отладки он только мешается.
Деинсталлируем мод Related Category (ссылка uninstall, не ошибетесь :) )
Идем в /components/com_aceshop/opencart/vqmod/xml/, открываем файл rcategory.xml, находим там блок:
<file name="admin/view/template/catalog/category_form.tpl">
<operation>
<search position="replace"><![CDATA[
<div id="tabs" class="htabs"><a href="#tab-general"><?php echo $tab_general; ?></a><a href="#tab-data"><?php echo $tab_data; ?></a><a href="#tab-design"><?php echo $tab_design; ?></a></div>
]]></search>
<add><![CDATA[
<div id="tabs" class="htabs"><a href="#tab-general"><?php echo $tab_general; ?></a><a href="#tab-data"><?php echo $tab_data; ?></a><a href="#tab-links"><?php echo $tab_links; ?></a><a href="#tab-design"><?php echo $tab_design; ?></a></div>
]]></add>
</operation>
изменяем на вот это:
<file name="admin/view/template/catalog/category_form.tpl">
<operation>
<search position="replace" error="log"><![CDATA[
<a href="#tab-data"><?php echo $tab_data; ?></a>
]]></search>
<add><![CDATA[
<a href="#tab-data"><?php echo $tab_data; ?></a><a href="#tab-links"><?php echo $tab_links; ?></a>
]]></add>
</operation>
Сохраняемся, чистим кэш VqMod (на всякий случай) и снова инсталлируем мод Related Category.
Идем в администрирование категорий товара. Если вкладка связи появилась, а ошибок нет, значит все хорошо, и эта часть сделана.
Заполняем связи категорий, идем на сайт, открываем товар и... И ничего не видим. Начинается вторая часть :)
Лезем в /components/com_aceshop/opencart/catalog/controller/module/ и открываем файл rcategory.php
Ищем блок:
if(isset($this->request->get['path'])){
$parts = explode('_', $this->request->get['path']);
$category_id = end($parts);
и меняем его на:
if(isset($this->request->get['path'])){
if (preg_match ("/\_/", isset($this->request->get['path'])))
{
$parts = explode('_', $this->request->get['path']);
$category_id = end($parts);
}
else
{
$category_id= trim ($this->request->get['path']);
}
перед блоком:
$this->data['products'][] = array(
'product_id' => $result['product_id'],
'thumb' => $image,
'name' => $result['name'],
'price' => $price,
'special' => $special,
'rating' => $rating,
'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
'href' => $this->url->link('product/product', 'product_id=' . $result['product_id'])
);
добавляем блок:
$path = '';
if (preg_match ("/\_/", isset($this->request->get['path'])))
{
foreach (explode('_', $this->request->get['path']) as $path_id)
{
if (!$path)
{
$path = $path_id;
}
else
{
$path .= '_' . $path_id;
}
}
}
else
{
$path=trim ($this->request->get['path']);
}
и далее заменяем строку:
'href' => $this->url->link('product/product', 'product_id=' . $result['product_id'])
на
'href' => $this->url->link('product/product', 'path=' . $path . '&product_id=' . $result['product_id']));
Сохраняемся, по привычке чистим кэш VqMod, и снова открываем товар. появился модуль сопутствующих? Замечательно, значит ничего важного не удалили :).
Остались сущие пустяки, поправить шаблон вывода модуля.
идем в /components/com_aceshop/opencart/catalog/view/theme/default/template/, открываем файл rcategory.tpl
строку:
<div class="rating"><img src="catalog/view/theme/default/image/stars-<?php echo $product['rating']; ?>.png" alt="<?php echo $product['reviews']; ?>" /></div>
меняем на
<div class="rating"><img src="components/com_aceshop/opencart/catalog/view/theme/default/image/stars-<?php echo $product['rating']; ?>.png" alt="<?php echo $product['reviews']; ?>" /></div>
и проверяем в начале файла тэг начала php кода. в моей версии тэг был короткий, строка выглядела так
<? if(!empty($products)){ ?>
^^^^
короткая форма начала php кода (<?) на некоторых хостингах приводит к ошибке 500, так что имеет смысл поправить на полную форму (<?php).
На этом все :)
прикладываю файлы, которые правились, для тех кому ковырять не охота :)
wbr
/Grizly
rcategory-1_0_1-aceshop-patch.zip