Вы не зашли.
С помощью данного плагина Вы можете присвоить пользователям ранги.
Максимальное кол-во рангов - 7.....
В файле: /engine/includes/comments.show.php
#1. Найти
$sql = "select c.*, u.avatar from ".prefix."_comments c left join ".uprefix."_users u on c.author_id = u.id where c.post=".db_squote($newsID).($commID?(" and c.id=".db_squote($commID)):'')." order by c.id".($config['reverse_comments']?' desc':'');
#1. Заменить на
$sql = "select c.*, u.avatar, u.com, u.news from ".prefix."_comments c left join ".uprefix."_users u on c.author_id = u.id where c.post=".db_squote($newsID).($commID?(" and c.id=".db_squote($commID)):'')." order by c.id".($config['reverse_comments']?' desc':'');
#2. Найти
$sql = "select c.* from ".prefix."_comments c WHERE c.post=".db_squote($newsID).($comment_id?(" and c.id=".db_squote($comment_id)):'')." order by c.id".($config['reverse_comments']?' desc':'');
#2. Заменить на
$sql = "select c.*, u.com, u.news from ".prefix."_comments c WHERE c.post=".db_squote($newsID).($comment_id?(" and c.id=".db_squote($comment_id)):'')." order by c.id".($config['reverse_comments']?' desc':'');
#3. Найти
exec_acts('comments', $row);
#3. Заменить на
exec_acts('comments', $row, &$tvars);
Плагин прикреплен к сообщению.
Думаю многим будет интересен.:)
Подкинул идейку по оптимизации под NG: Евгений
Автор плагина: SwiZZeR
Помощь по оптимизации: insider
Ставим плюсики в рейтинг!
Изменено Евгений (2009-06-04 15:24:24)
I ♥ NGeneration CMS
Не в сети
Профиль я привел в пример из-за того сколько у меня там постов.
А насчет замены:
Прикрепи к следующему сообщению архив с работающим твоим плагином.
А я прикреплю свой comments.show.php и ты посмотришь может у меня что то не так?
Ок?
http://narod.ru/disk/9524714000/comment … ).php.html
Изменено Евгений (2009-06-05 13:43:46)
I ♥ NGeneration CMS
Не в сети
У меня плагин работает тот, что в первом посту, никакая замена не требуется. Но и с заменой тоже работает.
edit: В выложенном comments.show.php замена #3 не произведена, и зачем надо было трогать?
exec_acts('comments_form', $row);
Изменено insider (2009-06-05 13:48:57)
Не в сети
С помощью данного плагина Вы можете присвоить пользователям ранги.
Максимальное кол-во рангов - 7.....
Плагин прикреплен к сообщению. ...
А где сам плагин то?
P.S. Наткнулся на этот движок совсем случайно, давно искал чтото подобное: легий двиг, возможность легко адаптировать под любые нужды без хаков ядра, только с помошью плагинов, и главное шаблонный дизайн чтоб для смены стиля сайта не нужно было перерывать гору пхп файлов двига.
Но есть и минусы:
Форум поддержки или глючный или настроен криво, я зарегистрировался несколько дней назад и все еще кроме этой темы нигде немогу оставить сообщение, также немогу скачать плагин simple rating, пишет: нет прав для доступа, ему что прав юзера мало? Или его тока админы и модераторы могут скачать а нам смертным недано?
С таким подходом сообшество не расширишь, потому как у новых пользователей соответственно будет куча вопросов по настройке, установке, использованию.
Также огорчают ошибки в дистрибутиве и плагинах из-за них пришлось потратить кучу драгоценного времени зря, а поскольку доступа к коментам на форуме нету помощи ждать неоткуда.
В частности в последнем дистрибутиве пхп файле плагина rating нет закрываюшего тега пхп, и из-за этого при включении плагина на сайте вылазил код, такая же ерунда была еше в каком-то плагине скачанном с форума.
Ну это так.. лирика, а двиг и в самом деле хорош, респект разработчикам!
Готов оказывать поддержку в его популяризации.
Не в сети
SkineR, обрати внимание на свой статус (Пойманные на слове роботы) и на мой (Пользователь). Вся причина в этом. А все потому, что при регистрации ты не отметил галочкой пункт: "Я подтверждаю, что я живой человек из плоти и крови. Я знаю, что все учётные записи, по которым нет такого подтверждения будут удаляться администраторами без предупреждения."
Не в сети
Эххх... значит теперь придется ждать пока Админ удалит учетную запись, и регистрироватся поновой под другим ником с новым мылом регится нехочется...
Невеселая жизнь у нас роботов..ничего нескачать , нигде коммент ниоставить..
Не в сети
SkineR, Зайди под гостем и скачай...:)
xmpp://ngcms@conf.ngcms.ru
Настройка клиента для подключения к конференции
Не в сети
SkineR, поменял тебе тип.
В следующий раз при регистрации будь внимательней - там огромными задан вопрос - действительно ли ты человек или робот
p.s. Кстати, закрывающегося PHP тега "?>" нет почти ни в одном файле двига.
Во-первых, PHP позволяет так делать и это не ошибка.
Во-вторых, это решает кучу проблем, когда в каком-то файле в конце оказывается никем незамеченный пробел и из-за этого (опять же - по правилам PHP) перестают работать куки и редиректы.
Не в сети
Кажется в rating.php еще в открывающем теге небыло добавки "php", ну незнаю я не специалист в пхп, но после моих действий код перестал вылазить на страницу сайта и рейтинг наконец заработал.
Недавно начал осваивать этот движок, гоняю его на локалке, настраиваю и подгоняю дизайн и еше надоем вам вопросами, пока он неприобретет пристойный вид и небудет окончательно настроен для размещения в сети, ибо пхп для меня темный лес, только недавно освоил хтмл и цсс, а для пхп пока нету времени, поэтому прошу заранее простить о гуру NG CMS
Сразу 1 вопрос: по user ranking, установлен релиз с 4м фиксом, выполнил все пункты замены, но если в
user_ranks.php
if ($row['reg'] == "1")
то неработает, т.е. видно только {plugins_user_ranks},
а если
if ($row['reg'])
то присваивает первый ранг всем и регистрированным и нерегистрированным (заходил на сайт с другого браузера который без кук через внешний айпи)
прилагаю мой comments.show.php может в нем проблема? почемуто неприкрепляется придется выложить так:<?php
// Protect against hack attempts
if (!defined('NGCMS')) die ('HAL');
$lang = LoadLang("comments", "site");
//
// Show comments for a news
// $newsID - [required] ID of the news for that comments should be showed
// $commID - [optional] ID of comment for showing in case if we just added it
// $commDisplayNum - [optional] num that is showed in 'show comment' template
// $callingParams
// 'plugin' => if is called from plugin - ID of plugin
// 'overrideTemplateName' => alternative template for display
// 'overrideTemplatePath' => alternative path for searching of template
function comments_show($newsID, $commID = 0, $commDisplayNum = 0, $callingParams = array()){
global $mysql, $tpl, $template, $config, $userROW, $parse, $lang;
// -> desired template path
$templatePath = ($callingParams['overrideTemplatePath'])?$callingParams['overrideTemplatePath']:tpl_dir.$config['theme'];
// -> desired template
if ($callingParams['overrideTemplateName']) {
$templateName = $callingParams['overrideTemplateName'];
} else {
$templateName = 'comments.show';
}
$tpl -> template($templateName, $templatePath);
$showNumber = 30; // количество комментариев на страницу
$cstart = intval($_REQUEST['page']) ? abs(intval($_REQUEST['page'])) : 1;
$limit_start = ($cstart - 1) * $showNumber;
$limit_count = $showNumber;
if ($config['use_avatars']) {
$sql = "select c.*, u.avatar, u.com, u.news from ".prefix."_comments c left join ".uprefix."_users u on c.author_id = u.id where c.post=".db_squote($newsID).($commID?(" and c.id=".db_squote($commID)):'')." order by c.id".($config['reverse_comments']?' desc':'');
} else {
$sql = "select c.*, u.com, u.news from ".prefix."_comments c WHERE c.post=".db_squote($newsID).($comment_id?(" and c.id=".db_squote($comment_id)):'')." order by c.id".($config['reverse_comments']?' desc':'');
}
$comnum = 0;
foreach ($mysql->select($sql) as $row) {
$comnum++;
$tvars['vars']['id'] = $row['postdate'];
$tvars['vars']['author'] = $row['author'];
$tvars['vars']['mail'] = $row['mail'];
$tvars['vars']['date'] = LangDate(ctimestamp, $row['postdate']);
if ($row['reg']) {
$tvars['vars']['profile_link'] = GetLink('user', $row);
$tvars['regx']["'\[profile\](.*?)\[/profile\]'si"] = '$1';
} else {
$tvars['vars']['profile_link'] = '';
$tvars['regx']["'\[profile\](.*?)\[/profile\]'si"] = '';
}
// Add [hide] tag processing
$text = $row['text'];
if ($config['blocks_for_reg']) { $text = $parse -> userblocks($text); }
if ($config['use_htmlformatter']) { $text = $parse -> htmlformatter($text); }
if ($config['use_bbcodes']) { $text = $parse -> bbcodes($text); }
if ($config['use_smilies']) { $text = $parse -> smilies($text); }
if (intval($config['com_wrap']) && (strlen($text) > $config['com_wrap'])) {
$tvars['vars']['comment-short'] = substr($text, 0, $config['com_wrap']);
$tvars['vars']['comment-full'] = substr($text, $config['com_wrap']);
$tvars['regx']["'\[comment_full\](.*?)\[/comment_full\]'si"] = '$1';
} else {
$tvars['vars']['comment-short'] = $text;
$tvars['regx']["'\[comment_full\](.*?)\[/comment_full\]'si"] = '';
}
if ($commID && $commDisplayNum)
$comnum = $commDisplayNum;
$tvars['vars']['comnum'] = $comnum;
$tvars['vars']['alternating'] = ($comnum%2) ? "comment_even" : "comment_odd";
if ($config['use_avatars']) {
if ($row['avatar']) {
$tvars['vars']['avatar'] = "<img src=\"".avatars_url."/".$row['avatar']."\" alt=\"".$row['author']."\" />";
} else {
// If gravatar integration is active, show avatar from GRAVATAR.COM
if ($config['avatars_gravatar']) {
$tvars['vars']['avatar'] = '<img src="http://www.gravatar.com/avatar/'.md5(strtolower($row['mail'])).'.jpg?s='.$config['avatar_wh'].'&d='.urlencode(avatars_url."/noavatar.gif").'" alt=""/>';
} else {
$tvars['vars']['avatar'] = "<img src=\"".avatars_url."/noavatar.gif\" alt=\"\" />";
}
}
} else {
$tvars['vars']['avatar'] = '';
}
if ($config['use_bbcodes']) {
$tvars['regx']["'\[quote\](.*?)\[/quote\]'si"] = '$1';
} else {
$tvars['regx']["'\[quote\](.*?)\[/quote\]'si"] = '';
}
if ($row['answer'] != '') {
$answer = $row['answer'];
if ($config['blocks_for_reg']) { $answer = $parse -> userblocks($answer); }
if ($config['use_htmlformatter']) { $answer = $parse -> htmlformatter($answer); }
if ($config['use_bbcodes']) { $answer = $parse -> bbcodes($answer); }
if ($config['use_smilies']) { $answer = $parse -> smilies($answer); }
$tvars['vars']['answer'] = $answer;
$tvars['vars']['name'] = $row['name'];
$tvars['regx']["'\[answer\](.*?)\[/answer\]'si"] = '$1';
} else {
$tvars['regx']["'\[answer\](.*?)\[/answer\]'si"] = '';
}
if (is_array($userROW) && (($userROW['status'] == "1") || ($userROW['status'] == "2"))) {
$tvars['vars']['[edit-com]'] = "<a href=\"".admin_url."/admin.php?mod=editcomments&newsid=$newsID&comid=$row[id]\" target=\"_blank\" title=\"".$lang['addanswer']."\">";
$tvars['vars']['[/edit-com]'] = "</a>";
$tvars['vars']['[del-com]'] = "<a href=\"".admin_url."/admin.php?mod=editcomments&subaction=deletecomment&newsid=$newsID&comid=$row[id]&oster=$row[author]\" title=\"".$lang['comdelete']."\">";
$tvars['vars']['[/del-com]'] = "</a>";
$tvars['vars']['ip'] = "<a href=\"http://www.nic.ru/whois/?ip=$row[ip]\" title=\"".$lang['whois']."\">".$lang['whois']."</a>";
} else {
$tvars['regx']["'\\[edit-com\\].*?\\[/edit-com\\]'si"] = '';
$tvars['regx']["'\\[del-com\\].*?\\[/del-com\\]'si"] = '';
$tvars['vars']['ip'] = '';
}
exec_acts('comments', $row, &$tvars);
$tpl -> vars($templateName, $tvars);
if ($commID) { echo $tpl -> show($templateName); }
$template['vars']['mainblock'] .= $tpl -> show($templateName);
}
$maxNavigations = 10; // количество отображаемых страниц; соответствует указанному лишь приблизительно
// Make navigation bar
$navigations = getNavigations(tpl_dir.$config['theme']);
$tpl -> template('pages', tpl_dir.$config['theme']);
$which_link = 'full_page';
if ($config['category_link']) {
global $catz;
$row['catid'] = array();
$categories = explode('-', category);
foreach ($categories as $cat)
{
$row['catid'][] = $catz[$cat]['id'];
}
$row['catid'] = implode(',', $row['catid']);
} else {
$row['postdate'] = mktime(0, 0, 0, month, day, year);
}
$row['alt_name'] = altname;
// Prev page link
if ($limit_start && $comnum) {
$prev = floor($limit_start / $showNumber);
$row['page'] = $prev;
$tvars['regx']["'\[prev-link\](.*?)\[/prev-link\]'si"] = str_replace('%page%',"$1",str_replace('%link%',GetLink($which_link, $row), $navigations['prevlink']));
} else {
$tvars['regx']["'\[prev-link\](.*?)\[/prev-link\]'si"] = "";
$no_prev = true;
}
$commCount = $mysql->result("SELECT count(*) as count FROM ".prefix."_comments WHERE post=".db_squote($newsID).($commID?(" and id=".db_squote($commID)):''));
$pages_count = ceil($commCount / $showNumber);
$pages = '';
$sectionSize = floor($maxNavigations / 3);
if ($pages_count > $maxNavigations) {
// We have more than 10 pages. Let's generate 3 parts
// Situation #1: 1,2,3,4,[5],6 ... 128
if ($cstart < ($sectionSize * 2)) {
$pages .= generateNavigations($cstart, 1, $sectionSize * 2, $which_link, $row, $navigations);
$pages .= $navigations['dots'];
$pages .= generateNavigations($cstart, $pages_count-$sectionSize, $pages_count, $which_link, $row, $navigations);
} elseif ($cstart > ($pages_count - $sectionSize * 2 + 1)) {
$pages .= generateNavigations($cstart, 1, $sectionSize, $which_link, $row, $navigations);
$pages .= $navigations['dots'];
$pages .= generateNavigations($cstart, $pages_count-$sectionSize*2 + 1, $pages_count, $which_link, $row, $navigations);
} else {
$pages .= generateNavigations($cstart, 1, $sectionSize, $which_link, $row, $navigations);
$pages .= $navigations['dots'];
$pages .= generateNavigations($cstart, $cstart-1, $cstart+1, $which_link, $row, $navigations);
$pages .= $navigations['dots'];
$pages .= generateNavigations($cstart, $pages_count-$sectionSize, $pages_count, $which_link, $row, $navigations);
}
} else {
// If we have less then 10 pages
$pages .= generateNavigations($cstart, 1, $pages_count, $which_link, $row, $navigations);
}
$tvars['vars']['pages'] = $pages;
// Next page link
if (($prev + 2 <= $pages_count) && $comnum) {
$row['page'] = $prev + 2;
$tvars['regx']["'\[next-link\](.*?)\[/next-link\]'si"] = str_replace('%page%',"$1",str_replace('%link%',GetLink($which_link, $row), $navigations['nextlink']));"<a href=\"".GetLink($which_link, $row)."\">$1</a>";
} else {
$tvars['regx']["'\[next-link\](.*?)\[/next-link\]'si"] = "";
$no_next = true;
}
if ($comnum && ($pages_count>1)){
$tpl -> vars('pages', $tvars);
$template['vars']['mainblock'] .= $tpl -> show('pages');
}
}
// $callingParams
// 'plugin' => if is called from plugin - ID of plugin
// 'overrideTemplateName' => alternative template for display
// 'overrideTemplatePath' => alternative path for searching of template
function comments_showform($newsID, $callingParams = array()){
global $mysql, $config, $template, $tpl, $userROW;
// -> desired template path
$templatePath = ($callingParams['overrideTemplatePath'])?$callingParams['overrideTemplatePath']:tpl_dir.$config['theme'];
// -> desired template
if ($callingParams['overrideTemplateName']) {
$templateName = $callingParams['overrideTemplateName'];
} else {
$templateName = 'comments.form';
}
$tpl -> template($templateName, $templatePath);
if($config['use_smilies']) {
$tvars['vars']['smilies'] = InsertSmilies('comments', 10);
} else {
$tvars['vars']['smilies'] = "";
}
if ($_COOKIE['com_username'] && trim($_COOKIE['com_username']) != "") {
$savedname = urldecode($_COOKIE['com_username']);
$tvars['vars']['savedname'] = $savedname;
$tvars['vars']['savedmail'] = $_COOKIE['com_usermail'];
$tvars['vars']['savedurl'] = $_COOKIE['com_userurl'];
} else {
$template_form = str_replace("{savedname}", "", $template_form);
$tvars['vars']['savedname'] = '';
$tvars['vars']['savedmail'] = '';
$tvars['vars']['savedurl'] = '';
}
if (!is_array($userROW)) {
$tvars['vars']['[not-logged]'] = "";
$tvars['vars']['[/not-logged]'] = "";
} else {
$tvars['regx']["'\\[not-logged\\].*?\\[/not-logged\\]'si"] = "";
}
if ($config['use_captcha']) {
$tvars['vars']['admin_url'] = admin_url;
if (!is_array($userROW)) {
@session_register('captcha');
$_SESSION['captcha'] = rand(00000, 99999);
$number = $_SESSION['captcha'];
} else {
$number = $_SESSION['captcha'];
}
$tvars['vars']['captcha'] = '';
$tvars['regx']["'\[captcha\](.*?)\[/captcha\]'si"] = '$1';
} else {
$tvars['regx']["'\[captcha\](.*?)\[/captcha\]'si"] = '';
}
$tvars['vars']['bbcodes'] = BBCodes();
$tvars['vars']['skins_url'] = skins_url;
$tvars['vars']['newsid'] = $newsID;
exec_acts('comments_form', $row);
$tpl -> vars($templateName, $tvars);
$template['vars']['mainblock'] .= $tpl -> show($templateName);
}
// preload plugins
load_extras('comments');
load_extras('comments:show');
и 2 вопрос: какие изменения нужно ввести в код чтобы переменные из users.php отображались в комментах, в частности хотелоць бы отображать дату регистрации юзера, и количество его комментов, если я вставляю {com} и {reg} в шаблон и прописываю в comments.show.php
$tvars['vars']['com'] = $row['com'];
$tvars['vars']['reg'] = langdate("j Q Y", $row['reg']);
то {com} вроде работает, а вот {reg} выдает дату неизвестно откуда :1 января 1970
как все ето сделать грамотно подскажите пожалуста..
Конечно самый лучший вариант был бы еслиб была доступна для скачивания версия движка со всеми предустановленными и настроенными плагинами деактивизировать лишнее и удалить намного проще чем настроить для людей мало знакомых с пхп
Изменено SkineR (2009-07-05 19:04:39)
Не в сети
Змени:
$sql = "select c.*, u.avatar, u.com, u.news from ".prefix."_comments c left join ".uprefix."_users u on c.author_id = u.id where c.post=".db_squote($newsID).($commID?(" and c.id=".db_squote($commID)):'')." order by c.id".($config['reverse_comments']?' desc':'');
На:
$sql = "select c.*, u.avatar, u.com, u.news, u.reg from ".prefix."_comments c left join ".uprefix."_users u on c.author_id = u.id where c.post=".db_squote($newsID).($commID?(" and c.id=".db_squote($commID)):'')." order by c.id".($config['reverse_comments']?' desc':'');
И тогда {reg} будет показывать дату...
xmpp://ngcms@conf.ngcms.ru
Настройка клиента для подключения к конференции
Не в сети
Думаю это из-за кеша, наверно при отправке собшений, движок загружает страницу из кеша и плагин неполучает данных. У меня такие же проблемы с блоком онлайн, захожу пишет никого онлайн, перезагружаю страницу и все норма.
Но все равно кеш суперская вещь, раньше пользовался ДЛЕ, и незнал что движок напичканный под самое никуда плагинами может грузить страницы с 8, махимум 10 запросами к БД.
Попробовал тут еше один движок кажется Даннео, и ужаснулся.. при установке тот создал 40+ таблиц в БД, а индех загрузил с 50+ запросами... это была его первая и последняя загрузка...
Не в сети
zheka, Проблема скорее всего в том что тег {plugins_user_ranks} перед вхождением в цикл нужно было обнулить...
SkineR, Кэш здесь не причем, так как комментария не кэшируются! И блок онлайн работает тоже без кэша так как он запросы к БД не делает...
Изменено ROZARD (2009-07-08 01:00:40)
xmpp://ngcms@conf.ngcms.ru
Настройка клиента для подключения к конференции
Не в сети
zheka, в version замени
Acts: core
Затем выключи/включи плагин.
edit:
SkineR, а ты сделай так:
1. Сперва заново установи хак постранички комментов на чистый comments.show.php
2. Потом выполни #3 (и только!) в первом сообщении данной темы
3. И найди следующее
if ($config['use_avatars']) {
$sql = "select c.*, u.avatar from ".prefix."_comments c left join ".uprefix."_users u on c.author_id = u.id where c.post=".db_squote($newsID).($commID?(" and c.id=".db_squote($commID)):'')." order by c.id".($config['reverse_comments']?' desc':'').($commID?'':" limit ".$limit_start.",".$limit_count);
} else {
$sql = "select c.* from ".prefix."_comments c left join ".uprefix."_users u on c.author_id = u.id WHERE c.post=".db_squote($newsID).($commID?(" and c.id=".db_squote($commID)):'')." order by c.id".($config['reverse_comments']?' desc':'').($commID?'':" limit ".$limit_start.",".$limit_count);
}
После чего замени на
if ($config['use_avatars']) {
$sql = "select c.*, u.avatar, u.com, u.news, u.reg as regdate from ".prefix."_comments c left join ".uprefix."_users u on c.author_id = u.id where c.post=".db_squote($newsID).($commID?(" and c.id=".db_squote($commID)):'')." order by c.id".($config['reverse_comments']?' desc':'').($commID?'':" limit ".$limit_start.",".$limit_count);
} else {
$sql = "select c.*, u.com, u.news, u.reg as regdate from ".prefix."_comments c left join ".uprefix."_users u on c.author_id = u.id WHERE c.post=".db_squote($newsID).($commID?(" and c.id=".db_squote($commID)):'')." order by c.id".($config['reverse_comments']?' desc':'').($commID?'':" limit ".$limit_start.",".$limit_count);
}
Для даты регистрации тогда будет такая переменная
$tvars['vars']['reg'] = langdate("j Q Y", $row['regdate']);
Изменено insider (2009-07-08 02:38:45)
Не в сети
Что то с чем то нестыкуется переставляв все по новой раза 3 а результат:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in E:\web\engine\includes\classes\mysql.class.php on line 32
и
Ошибка: Error! Bad select query! [select c.*, u.avatar, u.com, u.news, u.reg as regdate from ng_comments c left join ng_users u on c.author_id = u.id where c.post='1' order by c.id limit ,]
Не в сети
Вроде настроил методом тыка.. незнаю правильно или нет но выводит и комменты и дату регистрации, главное чтоб конфликтов небыло, посмотри пожалуста неперемудрил ли я там...
А постраничку комментариев я так и непоставил, на форуме ненашел но наверно с 2z по идее должна подходить, но ничего неполучается после замен выводит ошибку: Division by zero в news.php ,
Да и autokey никак нестановится, как запускаю вылазит код в шапке, а вместо редактируемой новости голый тег, толи у меня рули кривые , толи релиз мой кривой... или плагины корректировать нада
Уже целую неделю никак до ума недоведу движок, то один плагин нехочет ставится то другой, уже бы пару шаблонов сверстал...
Может быть у кого нибудь есть готовая рабочая сборка для новостного портала?
Буду премного благодарен если выложите...
Изменено SkineR (2009-07-08 21:32:47)
Не в сети