Технический сбой

Сайт временно работает в режиме только для чтения, идут восстановительные работы. Приносим свои извинения за неудобства.
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как сделать, чтобы повторное нажатие на лайк убирало его?

Как сделать, чтобы повторное нажатие на лайк убирало его?


     лайк, хак    Общие вопросы по PHP, Хаки    1053

вопрос
Использую в новостях систему лайков - Только 'Нравится'.
Сейчас при нажатии на лайк, рейтинг добавляется на 1 значение, а при повторном нажатии выводит "Вы уже выставили свою оценку для данной статьи".

Как сделать, чтобы повторное нажатие убирало лайк, как будто его и не ставили?

Ответил: TeraMoune


Файл: ajax/rating.php

Заменить

$db->close();
	
echo "{\"error\":true, \"errorinfo\":\"{$lang['rating_error2']}\"}";
die();


На

$db->query( "UPDATE " . PREFIX . "_post_extras SET rating=rating-'{$go_rate}', vote_num=vote_num-1 WHERE news_id ='{$news_id}'" );
$db->query( "DELETE FROM " . PREFIX . "_logs WHERE news_id ='{$news_id}' AND {$where}" );
	
if ( $config['allow_alt_url'] AND !$config['seo_type'] ) $cprefix = "full_"; else $cprefix = "full_".$news_id;
clear_cache( array( 'news_', $cprefix ) );
	
$db->close();

6 комментариев

hippahap
Юзер

hippahap - -

TERAMOUNE, спасибо большое! Подскажи ещё, возможно ли как-то выделить кнопку, если стоит лайк?
Грубо говоря, добавить активный класс, а когда снимаешь лайк, то кнопка становится обычной.

TeraMoune
Эксперт

TeraMoune - -

Возможно

Тестовый репозиторий установки плагинов: teramoune

hippahap
Юзер

hippahap - -

TeraMoune,
Если не сложно, подскажи, как это сделать?

TeraMoune
Эксперт

TeraMoune - -

Не сложно но это и не значит, что я должен взять и сделать для тебя это бесплатно. С этим уже нужно больше времени, нужно придумать и сделать.

Тестовый репозиторий установки плагинов: teramoune

hippahap
Юзер

hippahap - -

TeraMoune, не буду тебя утруждать своими просьбами, я благодарен тебе и за первое решение, спасибо!
Странно, что разрабы DLE сами не додумались добавить активный класс кнопке...

TeraMoune
Эксперт

TeraMoune - -

Думаю додумались (как и по многим вопросам), просто решили не тратить время на такой пустяк, решив оставить эти мелочи как и многие функции для отдельных плагинов\модулей расширяющих функционал.

Система ведь имеет теперь полноценную систему плагинов (хоть и не идеальную наверное) но тем не менее. И это означает, что CMS не будет являться аналогом швейцарского ножа в котором будет всё из коробки. Большая часть возможностей будет исключительным правом лишь отдельных модификаций.

Тестовый репозиторий установки плагинов: teramoune

Похожие вопросы

наверх