Вы не зашли.
Я и говорю, попробую засунуть в 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, всех кого ты хвалишь за быстрый старт потом пропадают