Вы не зашли.
Я и говорю, попробую засунуть в tpl, сейчас если просто засунуть работать не будет
Картинки он берет через пути, которые ты указываешь в \lang\russian\main.ini
act_delete = "<img src="/engine/plugins/bookmarks/img/delete.gif" />"
act_add = "<img src="/engine/plugins/bookmarks/img/add.gif" />"
Специально выносил в файл, чтобы всем было удобно исправлять. К сожалению в CMS нет никаких вариантов предоставить свой lang пакет вместе с шаблоном. Попробую засунуть этот конфигурационный файл в папку к шаблону
Он и так работает на 0.9.3 и в настройках есть пункт выбора шаблонов
я правильно вывожу {plugin_similar_tags} просто в код сайта !
Что ты имеешь ввиду под "код сайта"? Если main.tpl то нет, надо в news.full.tpl
Подозреваю в админ-панели в настройках плагина ты не включил
Показывать блок "похожие новости" ({plugin_similar_tags})
Да - блок "похожие новости" будет показываться
Нет - блок показываться не будет
vitaly, is_array оставить конечно
Правда function ipcheck будет работать кривовато в итоге при таком подходе, на главной странице или в любом месте где выводится список новостей через news_showlist все будет ОК, а вот в полной новости список $list_id мы уже не будем иметь на руках. Так что нужно проверять еще в showNews если новость короткая, то есть $mode['style'] == 'short' , то использовать глобальный массив, который мы надеемся заполнен, а если полная ( $mode['style'] == 'full' ), то нужно делать другой запрос к таблице рейтига самостоятельно.
Обновил выше весь кусок
Жесть конечно
if(is_array($list_id) && count($list_id)){ // проверяем что $list_id - это массив, в нем что-то есть =)
for ($a = 1; $a <= count($list_id); $a++) {
$out_db=$out_db."news_id='".$list_id[$a-1]."' or "; // создаем кусок запроса к БД: "news_id=xx or news_id=xx ...."
}
$rating_out_db=$mysql->select("select news_id from ".prefix."_rating WHERE (user_id='".intval($userROW['id'])."' or ip=".db_squote($ip).") and (".substr($out_db, 0, strlen($out_db)-3).")"); // ищем все новости из списка ID`шников, за которые голосовал этот IP
for ($a = 1; $a <= count($rating_out_db); $a++) {
$rating_array[$a]=$rating_out_db[$a-1]['news_id']; // создаем массив (глобальный) с ID`шниками новостей за которые голосовал этот IP
}
вместо этого можно написать
$ids = array();
foreach($list_id as $id)
$ids[] = "news_id = {$id}";
$rating_out_db=$mysql->select("select news_id from ".prefix."_rating WHERE (user_id='".intval($userROW['id'])."' or ip=".db_squote($ip).") and (".implode(' OR ', $ids).")");
$rating_array = array();
foreach($rating_out_db as $id)
$rating_array[] = $id;
Нужно конечно, можно давать выключить, но по умолчанию должно быть, потому что это круто.
Ты мне скажи, что значит
Данный код защищен авторскими правами
Лицензия плагина какая?
Никак не относится
В ядро можно будет перетащить, Виталий кажется так и хотел сделать. Точнее не в само ядро, а оставить плагином, только обязательно включенным по умолчанию и с вставленными переменными в шаблоне админ-панели.
Wolverine, проблема в том, что полный список ID'шников ты узнаёшь в самом конце
Мысли на самом деле есть, возможно успею сделать до релиза
По идее можно сделать в showlist не
foreach ($mysql->select($query['result']) as $row) {
$i++;
$nCount++;
а
$blablabla = $mysql->select($query['result']); # запихивам информацию о всех новостях
в global пишем ID'шники
foreach($blablabla as $row) $global_var[] = $row['id'];
а дальше уже проходиться по каждой новости, генерируя её отображение, но в каждом вызове showNews уже будет доступна $global_var
foreach ($blablabla as $row) {
$i++;
$nCount++;
% Для статических страниц (при их отображении) добавлена глобальная переменная $SYSTEM_FLAGS['static']['db.id'] с ID статической страницы
% Для полной новости добавлена глобальная переменная $SYSTEM_FLAGS['news']['db.categories'] со списком ID категорий, которым принадлежит новость
ikv777vlg, в твоей реализации полный список новостей ты получаешь на самой последней новости, при этом даже не знаешь какая из них будет последней
По идее надо делать
global $TemplateCache;
if(!isset($TemplateCache['plugin']['rating']['info']))
$TemplateCache['plugin']['rating']['info'] = получаем_данные_для всех_новостей;
Потом используем здесь же в новости, как if($TemplateCache['plugin']['rating'][$newsID] == true) Ну в зависимости от структуры данных на предыдущем этапе. Нам и знать не надо в какой из новостей получается список, данные получили при первом вызове, а во всех остальные они уже будут доступны без запросов.
И за 6 обращений к функции, вывод в браузер получается такой:
1;
1;
1;2;
1;2;
1;2;5;
1;2;5;по 2 обращения на каждую новость
Вот именно, поэтому у тебя и запросы с дубликатами. Зачем у тебя два раза отрабатывает логика на каждую новость?
Ты хотел сказать news_showlist()?
ага
Надо vitaly спрашивать о внедрении такой возможности в news_showone, которая отображает все новости. Данные нужные там есть, осталось из записать в какую-нить глобальную переменную, типа $SYSTEM_FLAGS
На странице у тебя отображается не 100 новостей, а пять, например. Вопрос в том, как получить список ID этих новостей, отображаемых на данной странице, чтобы засунуть их в глобальную переменную для последующего решения давать голосовать или нет. Вроде как штатно такая информация нигде не содержится...
Можно.
Ничего не выгадаешь
Первый вариант, второй не учитывает возможности разбить новость на страницы
is_array($userROW) выдает ID пользователя, а что?
не, is_array определяет, является ли переданный параметр массивом
В твоем случае UserID не нужен, один хрен разрешать голосовать или нет ты разрешаешь только по IP. В предложении Виталия предлагается дать возможность для голосования с одного IP, тебе это вроде как не нужно. Можно сделать две версии защиты, например, жестко считать только IP или давать возможность разным пользователям головать с одного IP
vitaly, всех кого ты хвалишь за быстрый старт потом пропадают