Решено. Вывод комментариев в user-profile.tpl.php
Прислано: wargan
чт, 18/03/2010 - 04:40
Помогите разобраться с выводом комментариев в 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; } ?>
в user-profile.tpl.php вывожу как:
<?php $commentblock = названиетемы__mycomments($account->uid,10); echo $commentblock; // More link if($headeroutput != '' && $commentblock != ''){ $track_link = "<br><a href='/user/" . $account->uid . "/track" . "'>" . t('Read more nodes and comments') . '</a>'; print $track_link; } ?>
Но выводится только:
Kommentarii:
Read more nodes and comments (-ссылка на трекер)
где ошибка?
- wargan's blog
- Для комментирования войдите или зарегистрируйтесь
если это поможет мне помочь, оплачу консультацию :) wmr OR wmz
- Для комментирования войдите или зарегистрируйтесь
С помощью views делаете нужную выборку и вставляете в user-profile.tpl.php используя
<?phpfunction views_embed_view($name, $display_id = 'default')?>
и никаких снипетов не нужно
- Для комментирования войдите или зарегистрируйтесь
Вместо строчки:
$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);
Пишем:
$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);
- Для комментирования войдите или зарегистрируйтесь
выдача комментов получилась по такому запросу:
$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).
Тот, что я писал верный, правда если префиксы у таблиц ставили, то надо в фигурные скобки названия таблиц ставить вот так:
$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);
- Для комментирования войдите или зарегистрируйтесь
Всё работает как надо, спасибо gorr за помощь!
Для тех кто пойдет этой тропой, вот рабочий код.
Вставьте этот код в template.php
<?php function phptemplate_my_comments($uid,$howmany) { $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 вставляем в нужном месте этот код:
<?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 = "<h2 class='title'>Last comments:</h2><div class='item-list'><ul>";
- Для комментирования войдите или зарегистрируйтесь
сделал так:
<?php function phptemplate_my_comments($uid,$howmany) { $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
- Для комментирования войдите или зарегистрируйтесь



Комментарии