Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 23 Ответов
  • 6560 Просмотров
*

Тигрусик

  • Новичок
  • 5
  • 0 / 0
Плагин рейтинга для Joomla
« : 09.10.2011, 15:23:29 »
Всем привет, помогите пожалуйста глупой девушке ибо перерыла уже все просторы инета в поисках нужного плагина, к сожалению безрезультатно(
В общем мне нужно чтобы:
К примеру 6 человек оставили хорошие комментарии, 3 оставили плохие, то-есть у новости рейтинг получается 3, а у другой новости которой 7 хороших отзывов и 2 плохих рейтинг 5. Это первое что должно отображаться, а второе, нужно чтобы та новость у которой больше рейтинг автоматом поднималась выше тех у которых он ниже.( для тех кто не понял это далекий аналог Пикабу.ру), только у меня будет голосование естественно нужны стрелочки вверх вниз либо плюсики и минусики, всякие звездочки тут не рулят.
очень надеюсь на вашу помощь,заранее большое спасибо!
*

voland

  • Легенда
  • 11030
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Плагин рейтинга для Joomla
« Ответ #1 : 09.10.2011, 15:28:54 »
Речь про вывод материалов определенном порядке?
Тут плагин не подойдет, можно немного переписать в шаблоне вывод материалов, но это в платный раздел
*

Тигрусик

  • Новичок
  • 5
  • 0 / 0
Re: Плагин рейтинга для Joomla
« Ответ #2 : 09.10.2011, 19:51:46 »
ну не именно вывод материалов, а, например, вывод названия новости.
 то-есть вы хотите сказать, что таких плагинов нет и нужно только платить?
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Re: Плагин рейтинга для Joomla
« Ответ #3 : 09.10.2011, 20:24:32 »
в ядре же есть свой плагин рейтинга статей. И при выводе есть возможность отсортировать по рейтингу. Н не совсем понятно, как считается рейтинг. Как узнать какой коммент является хорошим, а какой плохим? Я для своих целей переделал стандартный плагин немного. Выглядит так:
*

Тигрусик

  • Новичок
  • 5
  • 0 / 0
Re: Плагин рейтинга для Joomla
« Ответ #4 : 09.10.2011, 20:33:00 »
Супер это то, что нужно, вот тока я переделывать не умею :'( :'( тямы не хватает. А это сильно тяжело? Есть какие-нибудь мануалы прочитав которые я смогу такое же сделать как и у вас?
Цитировать
Н не совсем понятно, как считается рейтинг. Как узнать какой коммент является хорошим, а какой плохим?
ну я думала люди будут комментить и нажимать вот типа ваших рук вверх вниз и уже будет ясно хороший или плохой.
*

voland

  • Легенда
  • 11030
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Плагин рейтинга для Joomla
« Ответ #5 : 09.10.2011, 20:36:13 »
в ядре же есть свой плагин рейтинга статей. И при выводе есть возможность отсортировать по рейтингу. Н не совсем понятно, как считается рейтинг. Как узнать какой коммент является хорошим, а какой плохим? Я для своих целей переделал стандартный плагин немного. Выглядит так:

В ядре чего? 1,7?
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Re: Плагин рейтинга для Joomla
« Ответ #6 : 09.10.2011, 20:37:59 »
В моем случае 1.5. Последние версии не смотрел толком, но там вроде тоже есть. Стандартный плагин выглядит не так как у меня. там пять радио-кнопок стоит.
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Re: Плагин рейтинга для Joomla
« Ответ #7 : 09.10.2011, 20:38:58 »
Супер это то, что нужно, вот тока я переделывать не умею :'( :'( тямы не хватает. А это сильно тяжело? Есть какие-нибудь мануалы прочитав которые я смогу такое же сделать как и у вас?
Я то код привести могу, но насколько вы сможете его использовать? дайте минут десять - скопирую
*

Тигрусик

  • Новичок
  • 5
  • 0 / 0
Re: Плагин рейтинга для Joomla
« Ответ #8 : 09.10.2011, 20:55:22 »
я буду очень признательна за код, и понимаю, что наглею, но не могли бы вы указать путь куда именно его вставлять? Я просто ещё новичок во всем этом.
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Re: Плагин рейтинга для Joomla
« Ответ #9 : 09.10.2011, 21:14:08 »
Файл plugins\content\vote.php выглядит так (можно заменить содержимое файла)
Код
<?php
/**
* @version $Id: vote.php 14401 2010-01-26 14:10:00Z louis $
* @package Joomla
* @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
* @license GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/

// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

$mainframe->registerEvent( 'onBeforeDisplayContent', 'plgContentVote' );

function plgContentVote( &$row, &$params, $page=0 )
{
$id = $row->id;
$html = '<span id="voting">';

if (isset($row->rating_count) && $params->get( 'show_vote' ) && !$params->get( 'popup' ))
{
// look for images in template if available
$ImageOn = JHTML::_('image.site',  'ico_up.png', '/images/M_images/' );
$ImageOff = JHTML::_('image.site',  'ico_down.png', '/images/M_images/' );
$rating = 0;
if($row->rating_sum) $rating = $row->rating_sum;

$html .= '<a href="javascript:void(0)" title="Не нравится" onclick="StoreVote(1, '.$row->id.')">'.$ImageOff.'</a>';
$html .= '<span class="plgrating" id = "plgrating"> '.$rating.' </span>';
$html .= '<a href="javascript:void(0)" title="Нравится" onclick="StoreVote(2, '.$row->id.')">'.$ImageOn.'</a>';
$html .= '<span class="plgvoted"> Голосов: <span id="plgvoted">'.$row->rating_count.' </span></span>';

$html .= '</span>';
}
return $html;
}

Дальше где-то надо вставить JS-код. Я это делаю в файле, который подключается к шаблону.  В вашем случае не знаю как удобнее.
Код такой:
Код
function ajax() {
 var xmlhttp;
 try { // определить метод поддержки
        xmlhttp=new ActiveXObject('Msxml2.XMLHTTP');
    } catch (e) {
        try {
            xmlhttp=new ActiveXObject('Microsoft.XMLHTTP'); // сработает в Internet Explorer
        } catch (e) {
            if(window.XMLHttpRequest){ // сработает в Mozilla и Safari
               xmlhttp=new XMLHttpRequest();
            }
        }
}
 return xmlhttp;
}

function StoreVote(lev, con){
var req = ajax();
req.onreadystatechange = function() {  
        if (req.readyState == 4) {
            if(req.status == 200) {
var arr = req.responseText.split(",")
              document.getElementById("plgrating").innerHTML = " "+arr[0]+" ";
document.getElementById("plgvoted").innerHTML = arr[1];
            }
        }
if(req.readyState == 1){

}
    }
    req.open('GET', 'index.php?option=com_content&task=setvote&format=raw&type='+encodeURIComponent(lev)+'&con='+encodeURIComponent(con));  
    req.send(null);
}

Далее в файле components\com_content\controller.php в самом конце перед закрывающей фигурной скобкой добавляем:
Код
function setvote(){
$type = JRequest::getInt('type');
$id = JRequest::getInt('con');

if(($type==1) || ($type==2)){
$userIP =  $_SERVER['REMOTE_ADDR'];
$db = & JFactory::getDBO();

$query = 'SELECT *' .
' FROM #__content_rating' .
' WHERE content_id = '.(int) $id;
$db->setQuery($query);
$rating = $db->loadObject();

if (!$rating)
{
switch($type){
case 1:
$rate = -1;
break;
case 2:
$rate = 1;
break;
default:
$rate = 0;
}
// There are no ratings yet, so lets insert our rating
$query = 'INSERT INTO #__content_rating ( content_id, lastip, rating_sum, rating_count )' .
' VALUES ( '.(int) $id.', '.$db->Quote($userIP).', '.(int) $rate.', 1 )';
$db->setQuery($query);
if (!$db->query()) {
JError::raiseError( 500, $db->stderr());
}
else{
echo $rate.',1';
}
}
else
{
if ($userIP != ($rating->lastip))
{
$oldrating = $rating->rating_sum;
$oldratingcount = $rating->rating_count;
switch($type){
case 1:
$rate = $oldrating -1;
break;
case 2:
$rate = $oldrating + 1;
break;
default:
$rate = $oldrating;
}
//echo "old".$oldrating;
// We weren't the last voter so lets add our vote to the ratings totals for the article
$query = 'UPDATE #__content_rating' .
' SET rating_count = rating_count + 1, rating_sum = '.(int)$rate.', lastip = '.$db->Quote($userIP).
' WHERE content_id = '.(int) $id;
$db->setQuery($query);
if (!$db->query()) {
JError::raiseError( 500, $db->stderr());
}
else{
echo $rate.','.($oldratingcount+1);
//echo "123";
}
}
else
{
echo $rating->rating_sum.','.$rating->rating_count;
}
}
}
else{
echo '@';
}
}

Соответственно в папке images/M_image должны лежать файлы со стрелками ico_down.png и ico_up.png
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Re: Плагин рейтинга для Joomla
« Ответ #10 : 09.10.2011, 21:28:43 »
И еще одно изменение:
Файл components\com_content\helpers\query.php
Найти функцию buildVotingQuery (в самом конце) и заменить там строку (примерно 113 строчка)
Код
$select = ' , ROUND( v.rating_sum / v.rating_count ) AS rating, v.rating_count';
на строку
Код
$select = ' , v.rating_sum, v.rating_count';
*

Тигрусик

  • Новичок
  • 5
  • 0 / 0
Re: Плагин рейтинга для Joomla
« Ответ #11 : 09.10.2011, 21:31:55 »
так подробно супер!
Спасибо огромнейшее, буду пробовать, надеюсь получится.
Еще раз большое спасибо за столь быстрый и подробный ответ.
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Re: Плагин рейтинга для Joomla
« Ответ #12 : 09.10.2011, 21:42:14 »
так подробно супер!
Спасибо огромнейшее, буду пробовать, надеюсь получится.
Еще раз большое спасибо за столь быстрый и подробный ответ.
Пользуйтесь на здоровье))
*

paleak

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Re: Плагин рейтинга для Joomla
« Ответ #13 : 14.08.2012, 18:33:59 »
Дальше где-то надо вставить JS-код. Я это делаю в файле, который подключается к шаблону.  В вашем случае не знаю как удобнее.

подскажите пожалуйста,что за файл который подключается к шаблону ?
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Re: Плагин рейтинга для Joomla
« Ответ #14 : 14.08.2012, 20:26:41 »
В папке с Вашим шаблоном создаете папку js, а в ней файл, например, my.js
В него записываете указанный код. Далее в index.php Вашего шаблона дописываете что-то вроде
Код
<script type="text/javascript" src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/js/my.js"></script>
*

paleak

  • Осваиваюсь на форуме
  • 19
  • 0 / 0
Re: Плагин рейтинга для Joomla
« Ответ #15 : 14.08.2012, 22:49:51 »
прошу прощения
а есть рабочий вариант данного скрипта ?

мне выдается ошибка 

Fatal error: Call to a member function registerEvent() on a non-object in /home/palea258/domains/planetastatusov.ru/public_html/plugins/content/vote/vote.php on line 5

все сделал по вашим указаниям
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Re: Плагин рейтинга для Joomla
« Ответ #16 : 15.08.2012, 07:53:11 »
А у Вас какая версия Joomla? Подозреваю, что 2.5. А данное решение для Joomla 1.5
*

ssttaass

  • Осваиваюсь на форуме
  • 33
  • 0 / 1
Re: Плагин рейтинга для Joomla
« Ответ #17 : 13.04.2013, 17:32:57 »
Скажите пожалуйста и помогите у меня такая проблема Joomla 1.5.6 Выбираю статью, жму голосовать - а голос не учитывается. Но Joomla после этого уже определяет как проголосовавший и не дает 2й раз проголосовать другим участникам рейтинга ?

Вот пример.   http://doskainfo.com/index.php/the-news/153-o-delfinax.html

*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Re: Плагин рейтинга для Joomla
« Ответ #18 : 13.04.2013, 23:24:14 »
Во-первых, ваша версия очень старая. Обновитесь до 1.5.26 срочно, если не хотите потом от вирусов и шеллов лечиться.

Вы, я так понимаю, используете стандартный плагин без изменений? Посмотрите, добавляется ли информация о голосовании в БД? Включен ли плагин Система-Кеш (не помню точное название)? Возможно проблема в настройках хостинга и у всех юзеров один IP-адрес. В общем, так просто тяжело сказать. Мало информации.

ЗЫ: приведите в порядок скрипты. У Вас там ошибка jQuery
*

ssttaass

  • Осваиваюсь на форуме
  • 33
  • 0 / 1
Re: Плагин рейтинга для Joomla
« Ответ #19 : 29.04.2013, 22:09:24 »
Во-первых, ваша версия очень старая. Обновитесь до 1.5.26 срочно, если не хотите потом от вирусов и шеллов лечиться.

Вы, я так понимаю, используете стандартный плагин без изменений? Посмотрите, добавляется ли информация о голосовании в БД? Включен ли плагин Система-Кеш (не помню точное название)? Возможно проблема в настройках хостинга и у всех юзеров один IP-адрес. В общем, так просто тяжело сказать. Мало информации.

ЗЫ: приведите в порядок скрипты. У Вас там ошибка jQuery
Спасибо большее за ответ, проверил и выяснил что в БД присваивает всем один и тот же IP как это исправить ?
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Re: Плагин рейтинга для Joomla
« Ответ #20 : 30.04.2013, 08:55:42 »
какой у Вас хостинг? Вы проверяли с компьютеров с разными IP? Что за адрес присваивается?
*

ssttaass

  • Осваиваюсь на форуме
  • 33
  • 0 / 1
Re: Плагин рейтинга для Joomla
« Ответ #21 : 30.04.2013, 14:17:44 »
какой у Вас хостинг? Вы проверяли с компьютеров с разными IP? Что за адрес присваивается?
IP адрес сервера: 195.242.161.237
Сервер расположен в: Украина
DNS сервера:
    ns1.datafly.ru
    ns2.datafly.ru   
заходя с другого компьютера с другим IP а прописывается ip195.242.161.237 сервера
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Re: Плагин рейтинга для Joomla
« Ответ #22 : 30.04.2013, 17:45:06 »
обращайтесь к своему хостеру. Если я правильно понимаю, это его область деятельности
*

ssttaass

  • Осваиваюсь на форуме
  • 33
  • 0 / 1
Re: Плагин рейтинга для Joomla
« Ответ #23 : 30.04.2013, 18:13:08 »
обращайтесь к своему хостеру. Если я правильно понимаю, это его область деятельности
ок буду писать хостеру большое спасибо.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Телефонный справочник для Joomla 4

Автор kunsaid

Ответов: 2
Просмотров: 942
Последний ответ 28.06.2023, 17:35:43
от kunsaid
Где взять корзину для Joomla 4 Joomshoping 5

Автор oleg1015

Ответов: 2
Просмотров: 1100
Последний ответ 13.04.2023, 22:45:28
от sergeytolkachyov
Модуль случайного вывода ссылок на материалы для Joomla! 2.5

Автор Serhio

Ответов: 22
Просмотров: 8659
Последний ответ 15.03.2023, 11:19:27
от Doctor Death
Доступ к FTP через Joomla

Автор Arzamaks

Ответов: 10
Просмотров: 2432
Последний ответ 01.03.2023, 13:20:40
от all_zer
Ищу расширение типа tag meta для Joomla 4

Автор web1

Ответов: 2
Просмотров: 1272
Последний ответ 28.02.2023, 16:01:21
от sergeytolkachyov