Вы не зашли.
/engine/plugins/tags/tags.php
Найди (два раза)
$link .= ((strpos($link, '?') === false)?'?':'&') . 'tag='.urlencode($tag);
Замени на
$link .= ((strpos($link, '?') === false)?'?':'&') . 'tag='.urlencode($tag);
Добавь в news.full.tpl перед {full-story} тег {short-story}
/engine/includes/comments.show.php
#1. Найди
from ".prefix."_comments c
#1. Замени на (два раза)
, u.status from ".prefix."_comments c
#2. Найди
$tvars['vars']['id'] = $row['postdate'];
$tvars['vars']['author'] = $row['author'];
$tvars['vars']['mail'] = $row['mail'];
$tvars['vars']['date'] = LangDate(ctimestamp, $row['postdate']);
#2. Добавь после
switch ($row['status']) {
case 1: $status = $lang['administrator']; break;
case 2: $status = $lang['editor']; break;
case 3: $status = $lang['journalist']; break;
case 4: $status = $lang['commenter']; break;
}
$tvars['vars']['status'] = $status;
/engine/lang/russian/site/comments.ini
Добавь в конец
status = "Статус:"
commenter = "Комментатор"
journalist = "Журналист"
editor = "Редактор"
administrator = "Администратор"
/engine/lang/english/site/comments.ini
Добавь в конец
status = "Status:"
commenter = "Commentator"
journalist = "Journalist"
editor = "Editor"
administrator = "Administrator"
P.S. ROZARD опередил )
Так тоже можно, будет работать
А постраничку комментариев я так и непоставил, на форуме ненашел
Тогда откуда она у тебя в коде в посту #17?
И чего ее искать? Первая же тема в FAQ
но наверно с 2z по идее должна подходить
Для 2z разве была постраничка комментариев?
Посмотрел твой код, ни одного шага из предложенных мною ты не выполнил.
Просто u.reg нельзя использовать, ибо там уже есть c.reg
В общем попробуй вот это: http://www.mediafire.com/?djny5mw5td0
Взял свой "чистый" файл с постраничкой, немного изменил запрос к БД и добавил {com} и {reg}
Тебе осталось лишь плагин user_ranks установить
Не вижу разницы. Более того, это решит проблему только с BB-кодами.
2. Открой /engine/includes/classes/parse.class.php
Найди
array_push($rdest, "<a ".(implode(" ", $outkeys)).">".$alt.'</a>');
Замени на
array_push($rdest, "<noindex><a ".(implode(" ", $outkeys))." rel=\"nofollow\">".$alt.'</a></noindex>');
3. Установи плагин ireplace
Поочередно в новостях/статических страницах/комментариях произведи следующие замены:
#1. Исходная подстрока
<a
#1. Целевая подстрока
<noindex><a rel="nofollow"
#2. Исходная подстрока
</a>
#2. Целевая подстрока
</a></noindex>
Приложи свой comments.show.php
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']);
Как уже сказали, управление тайтлом есть в виде плагина.
Что касается меню, то его полностью можно вставить в main.tpl вместо {categories}, со всеми пунктами, названными как душе будет угодно.
SkineR, обрати внимание на свой статус (Пойманные на слове роботы) и на мой (Пользователь). Вся причина в этом. А все потому, что при регистрации ты не отметил галочкой пункт: "Я подтверждаю, что я живой человек из плоти и крови. Я знаю, что все учётные записи, по которым нет такого подтверждения будут удаляться администраторами без предупреждения."
/engine/includes/comments.show.php
#1. Найти
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':'');
} else {
$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':'');
}
#1. Заменить на
$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 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);
}
#2. Найти
...
exec_acts('comments', $row);
$tpl -> vars($templateName, $tvars);
if ($commID) { echo $tpl -> show($templateName); }
$template['vars']['mainblock'] .= $tpl -> show($templateName);
}
#2. Добавить после
$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');
}
Попробуй так:
/engine/includes/news.php
Найди
// Get a list of categories to show
// "-" means "AND", "," means "OR"
// I.e: news-games,web,files is "Show news from: news&games (2 categories in news) or web or files"
if (is_array($categoryList)&&count($categoryList)) {
$carray = $categoryList;
} else {
$ctext = trim(!is_array($categoryList)?$categoryList:category);
$carray = generateCategoryArray($ctext);
// Error - didn't find chosen categories
if (strlen($ctext) && !count($carray)) {
msg(array("type" => "info", "info" => $lang['msgi_cat_not_found']));
return;
}
}
Добавь после
global $category;
foreach ($catz as $cat) {
if ($cat['parent'] == $catz[$category]['id']) {
$carray[] = array($cat['id']);
}
}
А разве это опция сейчас так не делает?
Не делает, исчезает лишь форма добавление, уже оставленные комментарии продолжают отображаться
Мало того, что в шаблоне не исправлен конфликт с плагином voting, так о нем еще и слова не сказано.
ROZARD
Еще бы товарищу Dimon80 знать, куда это вставлять
Способ плох, если новостей куча, это сколько перечислить придется?
И потом, приведенный код разве не делает то же самое, что и отключенная опция "Разрешить комментарии"?
Dimon80
infinity237, ROZARD, эта функция оставляет для показа комментарии, которые уже оставленны, но запрещает добавление новых. Сейчас невозможно отключить комменты, не убрав их полностью.
Чего ты хочешь? Чтобы отключенная опция "Разрешить комментарии" так же выключала отображение комментариев для конкретной новости?
А почему бы просто не добавить новость в категорию и в ее родителя?
Это запрещает т.н. дабл-пост, совсем не то
if (!function_exists('categories'))
{
function categories($categories)
{
$result = array();
for ($i = 0; ($category = pow(2, $i)) <= $categories; $i++)
{
if ($categories & $category)
{
$result[] = $category;
}
}
return implode(',', $result);
}
}
echo categories(76);
еперь осталось только массив превратить в номер категории
Т.е.? Пример можно?
Искусственное ограничение, как исправить описано в самом конце этого поста (последняя замена): http://ngcms.ru/forum/viewtopic.php?pid=4519#p4519
В БД хранится сериализованный ассоциативный массив значений xfields-полей, где ключи - названия полей. По ID не легче, ибо xfields-поля ID не имеют. Можно конечно добавить ID к полям и ключами массива назначить эти ID, но это будет ни разу не быстрее, но и не медленнее.