Помогите разобраться с выводом комментариев в user-profile.tpl.php.
В template.php прописал функцию:
<?php function названиетемы_mycomments($uid,$howmany) {
$returnstr = "<span class='field-label'>Kommentarii:</span><br><ul>";
$i = 0;
$result = db_query('SELECT n.nid, n.title, c.cid, c.subject FROM node n INNER JOIN comments c ON n.nid = c.nid WHERE c.uid = %d AND c.status = 0 ORDER BY c.timestamp DESC LIMIT 0,%d', $uid, $howmany);
while ($r = db_fetch_object($result)) {
$i++;
$returnstr .= '<li>' . $i . ". <a href='/node/" . $r->nid . "#comment-" . $r->cid . "'>" . $r->subject . '</a>... <small><i>(on ' . $r->title . ')</i></small></li>';
}
$returnstr .= '</ul>';
return $returnstr;
}
?>
$returnstr = "<span class='field-label'>Kommentarii:</span><br><ul>";
$i = 0;
$result = db_query('SELECT n.nid, n.title, c.cid, c.subject FROM node n INNER JOIN comments c ON n.nid = c.nid WHERE c.uid = %d AND c.status = 0 ORDER BY c.timestamp DESC LIMIT 0,%d', $uid, $howmany);
while ($r = db_fetch_object($result)) {
$i++;
$returnstr .= '<li>' . $i . ". <a href='/node/" . $r->nid . "#comment-" . $r->cid . "'>" . $r->subject . '</a>... <small><i>(on ' . $r->title . ')</i></small></li>';
}
$returnstr .= '</ul>';
return $returnstr;
}
?>
в user-profile.tpl.php вывожу как:
Но выводится только:
Kommentarii:
Read more nodes and comments (-ссылка на трекер)
где ошибка?
Комментарии
если это поможет мне помочь, оплачу консультацию
wmr OR wmz
С помощью views делаете нужную выборку и вставляете в user-profile.tpl.php используя
<?phpfunction views_embed_view($name, $display_id = 'default')?>
и никаких снипетов не нужно
Вместо строчки:
Пишем:
выдача комментов получилась по такому запросу:
$result = db_query('SELECT c.cid, c.nid, c.name, c.subject FROM {comments} c WHERE c.uid = %d AND c.status = 0 ORDER BY c.timestamp DESC LIMIT 0,%d', $uid, $howmany);
однако нода почему-то не выдается, по запросу: n.nid, n.title, ну и вообще выдача нулевая, в чем тут проблема
gorr, пример пробовал, не вышло, т.к. n.nid, n.title отсекает запрос (?)
Ну не верный запрос так будет, ограничивается ведь выборка нулем записей(лимит 0).
Тот, что я писал верный, правда если префиксы у таблиц ставили, то надо в фигурные скобки названия таблиц ставить вот так:
Всё работает как надо, спасибо gorr за помощь!
Для тех кто пойдет этой тропой, вот рабочий код.
Вставьте этот код в template.php
$returnstr = "<h2 class='title'>Last comments:</h2><div class='item-list'><ul>";
$result = db_query('SELECT n.nid, n.title, c.cid, c.subject FROM {node} n INNER JOIN {comments} c ON n.nid = c.nid WHERE c.uid = %d AND c.status = 0 ORDER BY c.timestamp DESC LIMIT %d', $uid, $howmany);
while ($r = db_fetch_object($result)) {
$returnstr .= '<li>' . $i . "<a href='/node/" . $r->nid . "#comment-" . $r->cid . "'>" . $r->subject . '</a>... <small><i>( ' . $r->title . ')</i></small></li>';
}
$returnstr .= '</ul></div>';
return $returnstr;
}
?>
Далее в свой созданнный user-profile.tpl.php вставляем в нужном месте этот код:
$commentblock = phptemplate_my_comments($account->uid,10);
echo $commentblock;
// More link
if($headeroutput != '' && $commentblock != ''){
$track_link = "<br><b><a href='/user/" . $account->uid . "/track" . "'>" . t('Посмотреть все записи и комментарии') . '</a></b>';
print $track_link;
}
?>
подзадача:
а как бы сделать с этим кодом - при пустом значении (когда нет у юзера комментов) не выводить заголовок:
сделал так:
$returnstr = "";
$result = db_query('SELECT n.nid, n.title, c.cid, c.subject FROM {node} n INNER JOIN {comments} c ON n.nid = c.nid WHERE c.uid = %d AND c.status = 0 ORDER BY c.timestamp DESC LIMIT %d', $uid, $howmany);
while ($r = db_fetch_object($result)) {
$returnstr .= '<li>' . $i . "<a href='/node/" . $r->nid . "#comment-" . $r->cid . "'>" . $r->subject . '</a>... <small><i>( ' . $r->title . ')</i></small></li>';
}
if ($returnstr) {
$returnstr = "<h2 class='title'>Последние комментарии</h2><div class='item-list'><ul>" . $returnstr;
$returnstr .= '</ul></div>';
}
return $returnstr;
}
?>
А как добавить вывод даты комментария? Делаю выборку timestamp, но она выводится в формате, в котором записана в БД. Как придать ей человеческий вид? Желательно "x дней x часов x минут назад" ?
Подскажите, пожалуйста...
а вьюху заюзать?
А помочь?
Не получается что-то вывести вьюхой комменты определенного пользователя
в настройках представления, создаем аргумент Пользователь: Uid
Тип аргумента по умолчанию: ID пользователя из URL
Как это выбираете вьюху типакоменты там текущий пользователь в фильтрах прописать табы для профиля и вуаля.
даже для меня тупого заюзать поиск и найти мильон постов об этом не составляло труда...
По-вашему, получается, что я либо ничего не искала, либо тупее Вас.
с последним не соглашусь.
попробуйте вывести все коментари во вьюхе потом попробуйте только текущего пользователя. потом уже и в профиль добавите таб с сылкой на вьюху с коментами
или вам надо прям в профил ьуже готовые коменты. так тогда есть снипеты.