Рейтинг пользователя

Материал из Umicms
Версия от 21:36, 24 мая 2014; Velross (обсуждение | вклад) (Новая страница: «Актуально для версии 2.9.6 ---- '''Задача:''' Подсчитывать рейтинг пользователя при голосовании…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

Актуально для версии 2.9.6


Задача: Подсчитывать рейтинг пользователя при голосовании за его материалы и комментарии на сайте другими пользователями.

Решение:

1. В типе данных "Пользователь" создадим новое поле "Рейтинг пользователя" с идентификатором rate_user 2. Напишем кастомный макрос. Макрос можно написать как в общем кастоме /classes/modules/custom.php, так и в кастоме для модуля голосования.

    //TODO: Write your own macroses here
    public function userKarma ($pageId, $rate) {
	//Получим экземпляр страницы через ее id
	$pageElement = umiHierarchy::getInstance()->getElement($pageId);
	//Получим объект оцениваемой страницы
	$pageObjectId = $pageElement->objectId;
	$pageObject = umiObjectsCollection::getInstance()->getObject($pageObjectId);
	//Узнаем Id владельца объекта
	$userId = $pageObject->getOwnerId();		
	//Получим объект пользователя
	$userObject = umiObjectsCollection::getInstance()->getObject($userId);
	// Получим текущий рейтинг, увеличим его на переданное значение и сохраним изменения
	$currentRateUser = $userObject->getValue("rate_user");
	$sumRateUser = $currentRateUser + (int) $rate;
	$userObject->setValue("rate_user", $sumRateUser);
	$userObject->commit();
}

3. Добавим дополнительный ajax-вызов в функцию jQuery('.votes div a').click(function(){} находящуюся в файле /templates/demodizzy/js/__common.js

jQuery.ajax({
	url: "/udata://custom/userKarma/" + element_id + "/" + params[0].split('_').pop() + ".json",
	type: "GET",
	dataType : 'json',
});