avatar

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

Опубликовал в блог Дополнения и модули для Simpla CMS
0


Иногда требуется возможность отвечать на комментарии прямо из админ-панели Simpla. Данное дополнение позволит вам делать это, при этом комментарии от администратора на сайте — будут выделены отдельным цветом, что даст пользователю знак о том что на комментарий ответил именно администратор, а не кто-то из посетителей, подписавшись именем «Администратор».

Копируем папку simpla из архива в корневую директорию вашего сайта.
Выполняем следующий запрос в базу данных:
ALTER TABLE `s_comments`
ADD `answer` text COLLATE 'utf8_general_ci' NOT NULL AFTER `text`,
COMMENT='';

Открываем файл simpla/IndexAdmin.php находим строчку
'CommentsAdmin'       => 'comments',

ниже пишем
'CommentAdmin'       => 'comments',

Открываем файл api/Comments.php находим строчку
$query = $this->db->placehold("SELECT c.id, c.object_id, c.name, c.ip, c.type, c.text, c.date, c.approved FROM __comments c WHERE id=? LIMIT 1", intval($id));

заменяем её на:
$query = $this->db->placehold("SELECT c.id, c.object_id, c.name, c.ip, c.type, c.text, c.answer, c.date, c.approved FROM __comments c WHERE id=? LIMIT 1", intval($id));

В этом же файле находим строки
$query = $this->db->placehold("SELECT c.id, c.object_id, c.ip, c.name, c.text, c.type, c.date, c.text, c.approved
			FROM __comments c WHERE 1 $object_id_filter $type_filter $keyword_filter $approved_filter ORDER BY id $sort $sql_limit");

заменяем их на:
$query = $this->db->placehold("SELECT c.id, c.object_id, c.ip, c.name, c.text, c.answer, c.type, c.date, c.approved
			FROM __comments c WHERE 1 $object_id_filter $type_filter $keyword_filter $approved_filter ORDER BY id $sort $sql_limit");

Открываем файл simpla/design/html/comments.tpl находим строчку
{$comment->name|escape}

сразу после неё пишем
{if $comment->answer}
	<a class="answer" href="{url module=CommentAdmin id=$comment->id return=$smarty.server.REQUEST_URI}">Изменить ответ</a>
{else}
	<a class="answer" href="{url module=CommentAdmin id=$comment->id return=$smarty.server.REQUEST_URI}">Ответить</a>
{/if}
<style>
	.answer { display: inline-block; font-size: 12px;  margin-left: 10px; text-decoration: none; background: #18a5ff; color: #fff !important; padding: 2px 4px; }
</style>

В этом же файле находим следующие строчки
<div class="comment_text">
	{$comment->text|escape|nl2br}
</div>

после них пишем
{if $comment->answer}
<div class="comment_answer">
	{$comment->answer|escape|nl2br}
</div>
<style>
	.comment_answer { width: 625px; background: #FFED8D; border: 1px dotted #BF9D32; padding: 10px; margin-top: 9px; }
</style>
{/if}

Открываем файл design/default/html/product.tpl находим строчку
{$comment->text|escape|nl2br}

сразу после неё пишем
{if $comment->answer}
<div class="comment_answer">
	<div class="adm">Ответ от <b>Администрации</b>:
</div>
	{$comment->answer|escape|nl2br}
</div>
 {/if}
<style>
.comment_answer { width: 630px; background: #FFED8D; border: 1px dotted #BF9D32; padding: 10px; margin-top: 9px; }
.comment_answer .adm { margin-bottom: 8px; }
</style>

Вот и все, смотрим демо.

ДЕМО

9 комментариев RSS
avatar
когда меняю в файле api/Comments.php. сайт не работает ошибка 500
avatar
Приветствую! что-то не отображается в пользовательской части ответ админа. Все делал по порядку. Что может быть не подскажите?!
avatar
здравствуйте! подскажите, не получается выполнить запрос к базе, выдает ошибку. помогите пожалуйста.
если повлияет: денежку вам кидал, спасибо за труды!
avatar
пришлите более большие скрины, на яндекс диск например
avatar
yadi.sk/i/Qxy-NWPR3DWfzj
yadi.sk/i/9rIi9Cq53DWgHZ
все вроде работает. но на страницы пол.зователя не отображается по чему то.
avatar
Блин… сколько раз замечал по жизни, вроде делаешь все правильно, то что говорят мастера своего дела и если не выходит. Как только стоит задать вопрос специалисту — все само по себе решается))).
Все заработало, спасибо еще раз вам! Как говорится, сработал эффект присутствия))
avatar
На другом своем сайте пробую, ошибка повторилась… написал вам сюда… еще раз проверил- нормально запрос прошел-мистика.:)
Видимо буду переодически писать чтобы работало все ка кнадо*lol*
avatar
Коментарии сразу попадают на страницу. Не подскажите как сделать, чтобы все комментарии сначала проходили модернизацию?! Все облазил -не выходит.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.