[Помощь] Прикрутить плагин Extra Vote 1.6.0 к товарам VirtueMart 2.0.6

Ребят, кому-нибудь удалось решить проблему?
неа, он не пашет на новых версих.

//подскажите пожалуйста, как вывести рейтинг с плагином microformats votes на странице категории?

тоже нет)) - он выводит рейтинг в одиночном виде на странице, причем привит исх код, соответственно интегрировать более одного чисто технически не выйдет.
лично я перерыл все - так не смог найти, что можно бы было вывести на страницу категорий((
 
Решение взято из курса (Там более подробно можно посмотреть)
Виктор Гавриленко | Интернет-магазин на Joomla (2014) [ISO]
(3 диск, 3 блок, 5 видео)
Опробовано на J2.5 и VM 2.6.6
// Доработка плагина под VM
// Хак файла установки плагина (Перед его установкой)

Файл /plg_extravote/sql/install.sql // Создает т_БД для данных плагина + Хак в полях
Код:
CREATE TABLE IF NOT EXISTS  `#__content_extravote` (
    `vmproduct_id` INT(11) NOT NULL,    -- Первоночально был `content_id`
     --`extra_id` INT(11) NOT NULL,        -- Автор удалил данное поля (За ненадобностью)
    `lastip` VARCHAR(50) NOT NULL,
    `rating_sum` FLOAT NOT NULL,
    `rating_count` INT(11) NOT NULL,
    KEY `extravote_idx` (`vmproduct_id`)  -- Указать ключевое поля
     );

// Хак файла установки плагина (Перед установкой или после)
/plg_extravote/extravote.xml // Файл с помощью которого выполняется установка плагина
Содержит параметры плагина - Можно удалить, те которые не будут использоваться

Архивируем хакнутый плагин + Устанавливем + Активируем (Тип Content -> ExtraVote)

// Настройки
Автор оставляет как есть (Показывать, Счетчик, Система оценки (Круглая оценка, с половиной), Группа пользователей которая имеет право оставлять рейтинг, Размер Звезд и др.)
{extravote #} // Конструкция для вставки плагина в тело материала -- Автор убрал данную настройку (Я пока не стал удалять настройки плагина)

// Логика работы плагина
/plg_extravote/extravote.php //Главный фал плагина (Логика работы)
plgContentExtraVote // Основной класс плагина, наследует главный плагин Joomla class plgContentExtraVote extends JPlugin
protected $vmproduct_id; // Был $article_id (id материала)
protected $params_c; // Создали объект для декодирования данных строки json
// print_r($config); // Параметры конфигурации плагина
$this->view = JRequest::getCmd('view'); // Получаем название макета, который обрабатывает данные
$this->params_c = json_decode($config['params']); // Декодировали данные строки json (Настройки плагина) в объект
// Метод ExtraVotePrepare
$regex = "/{extravote\s*([0-9]+)}/i"; // Строка для поиска строки json на странице макета view -> там будет вставка рейтинга
Автор сделал так, что рейтинг должен отображаться на всех товарах сайта, вне зависимости от тега {extravote}
protected function ExtraVotePrepare( $article, &$params )
protected function ExtraVotePrepare( $product ) // Было ( $article, &$params ), где $produc - объект товара
protected function plgContentExtraVoteReplacer(&$matches ) // Метод, принимает совпадения {extravote}. ЗАКОМЕНТИРОВАЛИ
Автор удалил весь первоночальный функционал данного метода
Везде заменяем $article на $product

// Метод ContentExtraVote
protected function ContentExtraVote(&$article) // Метод, отображает готовый HTML рейтинга, удалили второй параметр (&$article, &$params)
Комментируем за ненадобностью первые три строки
Вместо $params->get('show_vote') Используем $this->$params_c->show_rating // Если в админке вкл. функция показать рейтинг
$table = "#__content_extravote"; // Обозначаем таблицу для выборки
$rating_count=$rating_sum=0;
$html=$ip='';
$db = JFactory::getDBO(); // Подключаемся к БД
$query='SELECT * FROM ' . $table . ' WHERE vmproduct_id='.$this->article_id; // vmproduct_id Вмсето content_id // $this->vmproduct_id Вместо $this->article_id // Удалил . ($table == '#__content_extravote' ? ' AND extra_id = 0' : '')
$db->setQuery($query); // Выборка
$vote=$db->loadObject(); // Загрузка выборки в переменную
$html .= $this->plgContentExtraVoteStars( $this->vmproduct_id, $rating_sum, $rating_count, $product->xid, $ip ); // $this->vmproduct_id Вместо $this->article_id

// Метод plgContentExtraVoteStars
Возвращает готовый html код рейтинга товара
$show_counter = $this->params_c->show_counter; // Было $this->params->get('show_counter',1);
$show_rating = $this->params_c->show_rating; // Было $this->params->get('show_rating',1);
$rating_mode = $this->params_c->rating_mode; // Было $this->params->get('rating_mode', 1);
$show_unrated = $this->params_c->show_unrated; // Было $this->params->get('show_unrated',1);
//$initial_hide = $this->params_c->initial_hide; // Было $this->params->get('initial_hide',0);

// Метод onContentBeforeDisplay

Обрабатывает данные плагина перед отображением Рейтинга на сайте
public function onContentBeforeDisplay($context, &$product) // Было onContentBeforeDisplay($context, &$product, &$params, $limitstart = 1)
if (strpos($context, 'com_virtuemart') !== false) { // Было 'com_content' // Теперь будет рабоать только с VM
$this->vmproduct_id = $product->virtuemart_product_id; // Было $this->article_id = $article->id; // Получили id товара VM
$this->ExtraVotePrepare($product); // Было ExtraVotePrepare($product, $params)

// Файл /plg_extravote/assets/ajax.php
Обрабатывает запросы к БД ajax-ом
content_id Заменяем на vmproduct_id
Код:
$query = "SELECT * FROM ".$table." WHERE vmproduct_id = ".$cid; //.($table == '#__content_extravote' ? ' AND extra_id = '.$xid : '');
$query = "INSERT INTO ".$table." ( vmproduct_id," . /*".($table == '#__content_extravote' ? ' extra_id,' : '')."*/ " lastip, rating_sum, rating_count )" . "\n VALUES ( " . $cid . ", "./*($table == '#__content_extravote' ? $xid.',' : '')." " .*/ $db->Quote( $currip ) . ", " . $user_rating . ", 1 )";
$query = "UPDATE ".$table . "\n SET rating_count = rating_count + 1, rating_sum = rating_sum + " .   $user_rating . ", lastip = " . $db->Quote( $currip ) . "\n WHERE vmproduct_id = ".$cid; //.($table == '#__content_extravote' ? ' AND extra_id = '.$xid : '');

// Файлы локолизации
Для русской локализации либо создать новые, либо отредактировать en_EN
 
Решение взято из курса (Там более подробно можно посмотреть)
Виктор Гавриленко | Интернет-магазин на Joomla (2014) [ISO]
(3 диск, 3 блок, 5 видео)
Опробовано на J2.5 и VM 2.6.6

А уже готового, переделанного плагина нет случайно? за ответ в любом случае спасибо! буду пробовать
 
А уже готового, переделанного плагина нет случайно? за ответ в любом случае спасибо! буду пробовать
Там оригинал + Переделаный

Выводить в макете товара:
Код:
<?php echo $this->product->product_vote;?>
 

Вложения

  • extravotePeradelani.zip
    42,4 KB · Просмотры: 34
  • plg_extravote.zip
    40,5 KB · Просмотры: 9
Последнее редактирование:
здравствуйте, подскажите, это для какой версии virtuemart?
Решение взято из курса (Там более подробно можно посмотреть)
Виктор Гавриленко | Интернет-магазин на Joomla (2014) [ISO]
(3 диск, 3 блок, 5 видео)
Опробовано на J2.5 и VM 2.6.6

Но думаю посмотрев данный ВидеоХак вы сможете оптимизировать под VM3 (Сам под VM3 не пробовал пока еще приспособить)
 
Но думаю посмотрев данный ВидеоХак вы сможете оптимизировать под VM3 (Сам под VM3 не пробовал пока еще приспособить)
увы((( потому и спросил, на 3й вирт пока не находил работающего решения
 
увы((( потому и спросил, на 3й вирт пока не находил работающего решения
Посмотрите пожалуйста вот эту тему еще (Там альтернатива данному плагину)
Плагин Vrvote (Рейтинг товаров VM)
Настройка написана под VM2, но люди в комментариях пишут что настроили и под VM3

Нашел, проверенно работает VirtueMart 3.0.12 + Joomla! 3.4.8
1. Изменить в файле /plugins/content/vrvote/vrvote.php проверку(у меня 36-41 строка)
Код:
if ( empty($result) )
        {
        $result->rating_sum = 0;
        $result->rating_count = 0;
        }
Код:
if ( empty($result) )
        {
        $result = new stdClass();
        $result->rating_sum = 0;
        $result->rating_count = 0;
        }

2. Изменить строку (у меня 26 ) /plugins/content/vrvote/assets/ajax.php
Код:
$params->loadJSON($plugin->params);
Код:
$params->loadString($plugin->params);

P.S. время будет переделяю плагин Extra vote (Рейтинг материалов + Товаров) под VM3 - сразу отпишусь и хаки скину
 
Посмотрите пожалуйста вот эту тему еще (Там альтернатива данному плагину).....P.S. время будет переделяю плагин Extra vote (Рейтинг материалов + Товаров) под VM3 - сразу отпишусь и хаки скину

смотрел) там также про данный плагин и под 2й вирт, в комментах взяты с этого форума хаки для 3го вирта, я пробовал, но увы, плагин выдавал ошибку и сайт рушился... искал альтернативы - но нет нигде возможности вывода рейтинга в товарных категориях, а только в товарах
 
Евгений96, спасибо за переделку. На VM 2.6.6 на локалхосте стал сразу. На хосте в базе в таблице __content_extravote первое поле вручную переименовал на `vmproduct_id` и все заработало. до этого не ставились оценки.
 
Назад
Сверху