Тема: Ajax-vote для Strawberry 1.1.1 MySQL
Ajax - голосование за новость.
Оговорюсь сразу, что разработка базировалась на описаной здесь http://strawberry.goodgirl.ru/forum/topic/646/ Stark, но так как пришлось частично переписать файл stars.php и чутка prototype.js , а файл ajax.php переписать целиком, выложил как отдельную разработку.
Скрипт работает с БД движка, а значит все голосования сделаные в версии Stark, будут потеряны, а голосования сделаные стандартным способом, т.е. с занесением в БД будут отображаться корректно. Импорт голосований из файлов мне делать в ломы, да и глупо, так как там идёт привязка путём занесения IP голосовавшего в файл. В этой версии учёт оценок ведётся как и в самой Strawberry, т.е. через куки. А это в означает, что все голосования сделаные до установки скрипта будут учтены.
Установка:
Ajax-vote for Strawberry 1.1.1 MySQL
Установка скрипта:
1) Копируем файлы из архива:
-В корень сайта(в папку с вашим index.php)
prototype.js
stars.php
ajax.php
папку img, c файлами:
star_e_small.gif
star_f_small.gif
star_o_small.gif
2) Открываем главный файл вашего сайта - index.php
и перед тегом </head> пишем:
<script language="javascript" type="text/javascript" src="prototype.js"></script>
3) В шаблонах новостей (в файлах active.tpl и full.tpl), в месте где вы бы хотели видеть звездочки вставляете этот код
<? include 'stars.php'; ?>Для запрета на голосование не авторизированым или незарегеным советую в шаблоне применять конструкцию:
<? if ($tpl['if-logged']) { include 'stars.php';} ?> Вэтом случае возможность голосовать будет только у авторизированого пользователя.
Для отображения результата голосований без возможности голосовать можно использовать функцию:
function Votes ($sum, $vot) {
$val = @round($sum/ $vot);
$i = 0;
while($i < $val)
{
echo "<img src=img/star_f_small.gif border=0 align=\"top\">";
@$i++;
}
while($i < 5)
{
echo "<img src=img/star_e_small.gif border=0 align=\"top\">";
$i++;
}
}Вызывая её Votes($row['rating'], $row['votes']) или Votes($tpl['post']['rating'], $tpl['post']['votes'])
P.S. Функцию можно вставиь в файл rating.php находящемся в папке plugins и тогда она будет доступна в любом месте вашего шаблона.
Демонстрацию работы скрипта можно смотреть здесь http://samizdatt.net на главной приведена работа без возможности голосования, но с выводом оценок, голосование возможно лишь при просмотре полного текста публикации.
Если будут вопросы спрашивайте, постараюсь на них ответить. Скрипты в приаттаченом архиве ajax-vote.zip
2 дня, 17 часов и 17 минут спустя:
Сорри, забыл кое-что написать, т.е. когда отлаживал скрипт на локале думал добавить, но извиняюсь забыл. Вставьте в ajax.php 8-ой и 9-той строками
$pid = intval($pid);
$rid = intval($rid);На всякий пожарный, а то вдруг кто попробует приинжектить запрос вражеский, сам не копался насколько это возможно, но как говориться бережёного бог бережёт.
Отредактировано w1a9 (05 Jun 2009 14:47:02)