Редактирование рейтинга через админку DLE
Представляем вам такой модуль который позволит выставлять, а также изменять существующий рейтинг у новостей прямо через админ-панель DLE. Редактирование рейтинга происходит на самой странице списка всех новостей. Можете посмотреть на скриншоте как это все выглядит ниже в этой статье. При нажатии на сам рейтинг, он становится редактируемым. При записи нового значения и при нажатии Enter, он сохраняется.
1. Загрузить из архива edit_rating.php в папку engine/ajax/.
2. Открыть engine/inc/editnews.php и найти (строка ~511):
<td class="news-list-tab" style="width: 60px"><i class="icon-eye-open tip" data-original-title="{$lang['st_views']}"></i></td>
Добавить ниже:
<td class="news-list-tab" style="width: 60px"><i class="icon-star"></i></td>
Найти еще (строка ~285):
$entries .= "<a title='{$lang['edit_act']}' href=\"?mod=editnews&action=editnews&id={$row['id']}\">{$title}</a>
<td class=\"news-list-tab\" style=\"text-align: center\"><a data-original-title=\"{$lang['st_views']}\" class=\"status-info tip\" href=\"{$full_link}\" target=\"_blank\">{$row['news_read']}</a></td><td class=\"news-list-tab\" align=\"center\">" . $comm_link;
Заменить на:
$entries .= "<a title='{$lang['edit_act']}' href=\"?mod=editnews&action=editnews&id={$row['id']}\">{$title}</a>
<td class=\"news-list-tab\" style=\"text-align: center\"><a data-original-title=\"{$lang['st_views']}\" class=\"status-info tip\" href=\"{$full_link}\" target=\"_blank\">{$row['news_read']}</a></td><td class=\"news-list-tab\" style=\"text-align: center\"><a href=\"#\" class='my_rating' data-id=\"".$row['eid']."\">".$row['rating']."</a></td><td class=\"news-list-tab\" align=\"center\">" . $comm_link;
Найти еще (строка ~186):
$db->query( "SELECT p.id, p.date, p.title, p.category, p.autor, p.alt_name, p.comm_num, p.approve, p.fixed, e.news_read, e.votes FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) " . $where . " ORDER BY " . $order_by . " LIMIT $start_from,$news_per_page" );
Заменить на:
$db->query( "SELECT p.id, p.date, p.title, p.category, p.autor, p.alt_name, p.comm_num, p.approve, p.fixed, e.news_read, e.votes, e.eid, e.rating FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) " . $where . " ORDER BY " . $order_by . " LIMIT $start_from,$news_per_page" );
Добавить в самый конец:
<script>
$(function(){
$(document).on("click", ".my_rating", function(){
var rating_id = $(this).attr("data-id");
var old_rating = $(this).text();
$(this).replaceWith('<input type="text" class="edit_rating" style="width: 40px; height: 18px; text-align: center;" value="'+old_rating+'" data-id="'+rating_id+'">');
$(".edit_rating").select();
return false;
})
$(document).on("keydown", ".edit_rating", function(event){
var el = $(this);
var rating_id = $(this).attr("data-id");
var new_rating = $(this).val();
if(event.keyCode==13){
$.ajax({
type: 'POST',
url: "<?php echo $config["http_home_url"]; ?>engine/ajax/edit_rating.php",
dаta: {
"new_rating": new_rating,
"eid": rating_id
},
dataType: 'text',
success: function(data){
if(data == 1){
if(new_rating.length <= 1) new_rating = new_rating + ".0";
el.replaceWith('<a href="#" class="my_rating" data-id="'+rating_id+'">'+new_rating+'</a>');
}
else alert(data);
}
});
return false;
}
});
})
</script>
3. Найти в базе данных таблицу dle_post_extras и изменить тип поля rating с INT на DECIMAL со значением 2,1 (если хотите рейтинг типа IMBD): ( смотрите скриншот 2 )
4. Чтобы с сайта никто не мог выставить рейтинг, в engine/ajax/rating.php на строке 17 просто добавить:
exit;
5. Для вывода рейтинга в новостях, следует добавить в любое место shortstory.tpl и fullstory.tpl:
{my-rating}
6. Открыть engine/modules/show.short.php и найти (строка ~388):
else {
$tpl->set( '{rating}', "" );
$tpl->set( '{vote-num}', "" );
$tpl->set_block( "'\\[rating\\](.*?)\\[/rating\\]'si", "" );
$tpl->set_block( "'\\[rating-plus\\](.*?)\\[/rating-plus\\]'si", "" );
$tpl->set_block( "'\\[rating-minus\\](.*?)\\[/rating-minus\\]'si", "" );
}
Добавить ниже:
$tpl->set( '{my-rating}', $row['rating'] );
7. Открыть engine/modules/show.full.php, найти строки с кодом как в предыдущем пункте (строка ~768) и добавить ниже:
$tpl->set( '{my-rating}', $row['rating'] );
Все!
- Версия DLE: 11.x
- Кодировка: utf-8
- Категория: Модули
- Автор: Kylaksizov
- Комплектация: модуль
Войдите на сайт
Все собранные средства будут переданы автору этой статьи - DEN
Сумма перевода от 10.00 рублей