Originally posted as http://drupal.org/node/79352#comment-223909
This snippet places a pager at the top of the comments on a node, in addition to the default pager at the bottom.
It is especially useful in forums. For an example theme called 'mytemplate,' add the following to template.php:
/**
* Add a pager at the top of a list of comments.
*/
function mytemplate_comment_wrapper($content) {
$comments_per_page = _comment_get_display_setting('comments_per_page');
$content = theme('pager', NULL, $comments_per_page, 0) . $content;
return theme_comment_wrapper($content);
}
Details
The function comment_render()
in comment.module calls theme('comment_wrapper', $output)
. This theming call will match any hook *_comment_wrapper()
, or give up and fall back to theme_comment_wrapper()
(which is also in comment.module). This is a great place to jump in and add an extra pager, because the default function only wraps the comments in a <div>
.
Line-by-line, the above snippet does the following:
- Retrieve the number of comments per page, which is needed for the pager. This line is copied directly from near the top of
comment_render()
. - Prepend a pager to the content (which has already been given a pager at the end). This line is also found in comment.module and allows other theming applied to the pager to function properly.
- Use the default theming function from comment.module to wrap the whole set of pager + comments + pager in a
<div>
.
Comments
for drupal 6
the same code for drupal 6
----------------------------------------
Boldizsár Bednárik ing.
http://www.bboldi.com
One change
I had to make one change to this code for it not to give me an error (The second argument for _comment_get_display_setting):
Drupal 7?
Please, could anybody post here modification for Drupal 7?
in template.php function
in template.php
and add in comment-wrapper.tpl.php
Great, thanks!
Great, thanks!
Hello, does this only work
Hello,
does this only work for the Bartik theme? In my adromeda theme (Drupal 7) this code have no effect. :-( Any Idea?
Best regards
Frank