Seeing as version 1.5.2 of ExpressionEngine was released yesterday, the script I use to run SEB, I went ahead and got the site upgraded last night and I’m thinking of trying out a couple of changes to the way threads are handled. One of the handful of new features they added was the ability for members to add commenters to an Ignore List, something Elwed has been dreaming of for awhile now, and I’m debating trying to implement it. The problem with this feature is that it would mean I’d need to disable template caching for the comments template (the one the site uses when you read everyone’s comments) and this means that the comment page could take longer to render. How much longer I’m not sure as I’ve not done a lot of tests and it would depend in part on how much traffic is hitting the site, but on the larger threads it could be considerable.
Now there’s a way I can help offset this and that’s by using the Pagination feature on the comments. I already use pagination on the index of SEB (the links are near the bottom of the page) and the basic result would be that the threads would be broken up into pages of X number of comments (probably 25 or 50 depending on which seems to perform better) which would keep rendering times down on the really huge threads. There’s a reason, however, that I haven’t already implemented pagination on the comment pages and that’s the list of recent comments in the sidebar and the email notifications. Currently I’m placing anchors on each comment so that the sidebar list and the notification emails can include a link straight to the comment in question, but pagination screws those links up. While it is possible in EE to construct anchors on the comments that contain the pagination info, there’s currently no way using the standard tags to construct a link to that anchor. In other words, the list of comments in the side bar and the notification emails would contain a link that would drop you into the thread at the start of all the comments rather than at that particular comment. The comment form, I believe, would show up on all the pages so it’s not like you’d have to cycle through all the comments just to post one of your own, but it does make it a bit more of a pain if you wanted to quote from the original comment though I suppose you could just cut and past from the notification email. It would also make the list of recent commenters underneath each entry on the index pretty much useless as well.
Now I think I could overcome at least the issue with the sidebar by writing a custom plugin to display recent comments that would include a calculation for pagination, but I’m no PHP wizard and it may take me awhile to whip one up. I’ve long wanted to find a solution to be able to use Pagination on the comments template even before the Ignore feature came along simply because it would speed up some of the really huge threads we have going. The other possibility I could implement would be to take advantage of the Forums Module I have installed that we don’t really use. EE can link blog entries to forum entries and then we could disable the standard commenting system altogether. That doesn’t really address the sidebar or the commenters under each entry, but I think the notification emails from the forum actually take pagination into account. The drawback to that approach is that you’d definitely have to register an account in order to comment as the forum doesn’t allow for non-registered comments. Of course some folks may not consider that a drawback.
Anyway, that’s what I’m kicking around and I’d like your feedback on it. Let me know what you think.