Пока знатоки молчат, начал сам разбираться:
Шаг 1Сделал копию mod_zooitem, переименовал в mod_zoovisitem, установил.
Получил отдельные шаблоны для вывода просмотренных товаров и возможность не потерять стандартный модуль.
Шаг 2Разбил
этот код на две части:
a) Создание куков засунул в форму вывода карточки товара ../renderer/item/full.php:
$zoovisitem = (isset($_COOKIE['zoovisitem']))?$_COOKIE['zoovisitem']:array();
$visited = $this->app->route->item($item).'~!~'.$item->name.'~!~'.$item->id; // link, name, id
if (!in_array($visited, $zoovisitem)){
if (count($zoovisitem)==20) array_shift($zoovisitem); // amount
$config = JFactory::getConfig();
$cookie_domain = $config->get('cookie_domain', '');
$cookie_path = $config->get('cookie_path', '/');
$zoovisitem[]= $visited;
$j=0;
$ntime = time() + 365 * 86400; // save 365
foreach ($zoovisitem as $link){
setcookie('zoovisitem['.$j.']', $zoovisitem[$j], $ntime, $cookie_path, $cookie_domain);
$j++;
}
}Как видно во второй строке передаю ссылку, название и id.
б) Вывод результата в главный php-файл модуля mod_zoovisitem:
defined('_JEXEC') or die('Restricted access'); // no direct access
require_once(JPATH_ADMINISTRATOR.'/components/com_zoo/config.php'); // load config
$zoo = App::getInstance('zoo'); // get app
$zoo->system->language->load('com_zoo'); // load zoo frontend language file
$path = dirname(__FILE__); // init vars
$zoo->path->register($path, 'mod_zoovisitem'); //register base path
/*
// Standart function - delete in the end
if ($application = $zoo->table->application->get($params->get('application', 0))) {
$items = $zoo->module->getItems($params);
$renderer = $zoo->renderer->create('item')->addPath(array($zoo->path->path('component.site:'), dirname(__FILE__))); // set renderer
$layout = $params->get('layout', 'default');
include(JModuleHelper::getLayoutPath('mod_zoovisitem', $params->get('theme', 'list')));
}
*/
// Cookies result
$zoovisitem = (isset($_COOKIE['zoovisitem']))?$_COOKIE['zoovisitem']:array();
if (count($zoovisitem)>0){
echo '<h3 class="visited-items">Visited recently <span>('.count($zoovisitem).')</span></h3>';
echo '<ul class="visited-items">';
foreach ($zoovisitem as $visdata){
$visdata = explode('~!~', $visdata);
echo '<li><a href="'.$visdata[0].'" title="'.$visdata[1].'">'.$visdata[1].'</a></li>';
}
echo '</ul>';
}Таким образом модуль выводит список ссылок с названиями-анкорами.
Как я не извращался, мне не удалось сделать ни $renderer группы $items, ни $renderer одного $item'а из массива.
Внимание вопросГоспода кодеры и прогеры, подскажите, как имея id товаров ($visdata[2]) сделать вывод шаблона как в стандартном блоке?
...
$items = $zoo->module->getItems($params); // - I WANT MY ITEMS HERE
$renderer = $zoo->renderer->create('item')->addPath(array($zoo->path->path('component.site:'), dirname(__FILE__))); // set renderer
...