Решено. Вывод комментариев в 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 в чт, 18/03/2010 - 08:25.

если это поможет мне помочь, оплачу консультацию :) wmr OR wmz


Опубликовано Oleksa@drupal.org в чт, 18/03/2010 - 09:07.

С помощью views делаете нужную выборку и вставляете в user-profile.tpl.php используя
<?phpfunction views_embed_view($name$display_id 'default')?>

и никаких снипетов не нужно


Опубликовано gorr в чт, 18/03/2010 - 11:38.

Вместо строчки:

  $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);


Опубликовано wargan в чт, 18/03/2010 - 16:16.

выдача комментов получилась по такому запросу:
$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 отсекает запрос (?)


Опубликовано gorr в чт, 18/03/2010 - 21:56.

Ну не верный запрос так будет, ограничивается ведь выборка нулем записей(лимит 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);


Опубликовано wargan в пт, 19/03/2010 - 03:00.

Всё работает как надо, спасибо 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;
}
?>


Опубликовано wargan в пт, 19/03/2010 - 16:38.

подзадача:
а как бы сделать с этим кодом - при пустом значении (когда нет у юзера комментов) не выводить заголовок:

$returnstr = "<h2 class='title'>Last comments:</h2><div class='item-list'><ul>";


Опубликовано wargan в вс, 21/03/2010 - 11:54.

сделал так:

<?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;
}
?>


Опубликовано Беленькая в ср, 03/11/2010 - 09:49.

А как добавить вывод даты комментария? Делаю выборку timestamp, но она выводится в формате, в котором записана в БД. Как придать ей человеческий вид? Желательно "x дней x часов x минут назад" ?
Подскажите, пожалуйста...


Опубликовано iNFerNo в ср, 03/11/2010 - 09:53.

а вьюху заюзать?


Опубликовано Беленькая в ср, 03/11/2010 - 11:52.

А помочь? :)


Опубликовано Беленькая в ср, 03/11/2010 - 11:52.

Не получается что-то вывести вьюхой комменты определенного пользователя


Опубликовано iNFerNo в ср, 03/11/2010 - 12:05.

Как это выбираете вьюху типакоменты там текущий пользователь в фильтрах прописать табы для профиля и вуаля.


Опубликовано iNFerNo в ср, 03/11/2010 - 12:06.

даже для меня тупого заюзать поиск и найти мильон постов об этом не составляло труда...


Опубликовано Беленькая в ср, 03/11/2010 - 12:08.

По-вашему, получается, что я либо ничего не искала, либо тупее Вас.


Опубликовано iNFerNo в ср, 03/11/2010 - 12:19.

с последним не соглашусь.

попробуйте вывести все коментари во вьюхе потом попробуйте только текущего пользователя. потом уже и в профиль добавите таб с сылкой на вьюху с коментами

или вам надо прям в профил ьуже готовые коменты. так тогда есть снипеты.


Опубликовано wargan в пн, 08/11/2010 - 09:31.

Беленькая написал(а):

Не получается что-то вывести вьюхой комменты определенного пользователя

в настройках представления, создаем аргумент Пользователь: Uid
Тип аргумента по умолчанию: ID пользователя из URL


Новое на сайте