Добрый день!
Разрабатываю плагин показа случайного товара VirtueMart 2.0 на Joomla 2.5 во всплывающем окне для каждого нового посетителя.
Отслеживаю по сессии.
Это мой первый плагин, поэтому не все мне понятно.
Хотел узнать вызов какого события нужно использовать вместо
public function onContentAfterDisplay($context, &$article, &$params, $limitstart)
{
Так же хотел узнать как можно передать переменные из параметров плагина (время отображение окна, скорость анимации) в javascript.
Скрипт имеет такой вид
function showJustBuy(time) {
setTimeout(function() {
$j('#justBuy').animate({
'right': '+=250px'
}, 1000);
}, time);
}
Если это неверный подход, то скажите пожалуйста как сделать по фэн-шую.
Заранее спасибо.
На всякий случай сразу выложу код.
<?php
// no direct access
defined('_JEXEC') or die;
class vmRandomItem extends JPlugin
{
public function onContentAfterDisplay($context, &$article, &$params, $limitstart)
{
$document = & JFactory::getDocument();
$document->addStyleSheet(JURI::base(). "plugins/content/vmrandomitem/vmrandomitem.css");
$document->addScript(JURI::base(). "plugins/content/vmrandomitem/vmrandomitem.js");
$page_num = set_page_num();
$rand_num_start = set_rand_num_start();
$rand_num_end = set_rand_num_end();
$start_to_show = set_start_to_show();
$show_time = set_show_time();
$animation_speed = set_animation_speed();
function set_page_num() {
if($this->params->get('page-nums'))
return str_to_arr($this->params->get('page-nums'));
else
return [1];
}
function set_rand_num_start() {
if($this->params->get('rand-num-start'))
return str_to_int($this->params->get('rand-num-start'));
}
function set_rand_num_end() {
if($this->params->get('rand-num-end'))
return str_to_int($this->params->get('rand-num-end'));
}
function set_start_to_show() {
if($this->params->get('start-to-show'))
return str_to_int($this->params->get('start-to-show'));
else
return 0;
}
function set_show_time() {
if($this->params->get('show-time'))
return str_to_int($this->params->get('show-time'));
else
return -1;
}
function set_animation_speed() {
if($this->params->get('animation-speed'))
return str_to_int($this->params->get('animation-speed'));
else
return 1;
}
function str_to_arr($str) {
return array_map('intval', explode(",", $str);
}
function str_to_int($str) {
return intval($str);
}
if (isset($_SESSION['counter']) && isset($_SESSION['show_num'])) {
$_SESSION['counter']++;
if($_SESSION['counter'] == $_SESSION['show_num']) { ?>
<script type="text/javascript">
function showJustBuy(time) {
setTimeout(function() {
$j('#justBuy').animate({
'right': '+=250px'
}, 1000);
}, time);
}
function hideJustBuy(time) {
$j('#justBuy').animate({
'right': '-=250px'
}, time);
}
function waitingSomeSeconds(time, hideTime) {
setTimeout(function() {
hideJustBuy(hideTime);
}, time);
}
</script>
<?php }
} else {
$_SESSION['counter']=0;
if($this->params->get('rand-num-start') && $this->params->get('rand-num-end')) array_push($page_num, rand($rand_num_start, $rand_num_end));
if($this->params->get('page-nums')) $_SESSION['show_num'] = $page_num;
}
}
}
?>