Version: 1.00, by Lynne
Developer Last Online: Oct 2022
Category: Show Thread Enhancements -
Version: 4.0.8
Rating:
Released: 11-26-2010
Last Update: Never
Installs: 58
Uses Plugins
Re-useable Code
No support by the author.
This is more of an example than a modification. I wrote this quick plugin for someone and thought I would share it. It's something someone can take and build on. All it does is if you look at the CMS Article thread in your CMS Comments forum, the content of the CMS Article is shown under the blurb "You can view the page at.....". This is ONLY for Articles - not Static Pages or PHP Direct Evaluation content types. Someone can build on this and do those if they want. The person I wrote this for had forms in their articles and needed the submit button to be disabled, so this plugin does that also.
Like I said - this is more of an example. I don't plan to do anything more with it and I'm not helping with modifying it for your own use. Use it however you want.
This adds one query to the threads in the CMS Comments forum.
To install....
Create a Plugin Hook Location - postbit_display_complete Title - Show Full CMS Article Plugin PHP Code -
PHP Code:
if (THIS_SCRIPT == 'showthread' AND $this->thread['forumid'] == $this->registry->options['vbcmsforumid'] AND $this->post['postcount'] == 1) {
$result = $this->registry->db->query_first(" SELECT cms_article.pagetext, cms_article.threadid, cms_article.htmlstate FROM " . TABLE_PREFIX . "cms_article AS cms_article INNER JOIN " . TABLE_PREFIX . "cms_node AS cms_node ON (cms_node.contentid = cms_article.contentid) INNER JOIN " . TABLE_PREFIX . "cms_nodeinfo AS cms_nodeinfo ON (cms_nodeinfo.nodeid = cms_node.nodeid) WHERE cms_nodeinfo.associatedthreadid = ". $this->thread['threadid']. " ");
$bbcode_parser = new vBCms_BBCode_HTML(vB::$vbulletin, vBCms_BBCode_HTML::fetchCmsTags());
If you ONLY want to show the full article to users, not guests, then change this condition (thanks to mattysheff):
PHP Code:
if (THIS_SCRIPT == 'showthread' AND $this->thread['forumid'] == $this->registry->options['vbcmsforumid'] AND $this->post['postcount'] == 1)
to this:
PHP Code:
if (THIS_SCRIPT == 'showthread' AND $show['member'] AND $this->thread['forumid'] == $this->registry->options['vbcmsforumid'] AND $this->post['postcount'] == 1)
youtube links rendered in the messages but images is not, how can I show the images?
You would need to modify the code to actually get the images to show. As I said at the top of the thread - this is more of an example of how you can do this. So, modify the code however you need it for your needs.
I don't mind at all. It is reusable for that reason. I only got so far with it in order to help someone else out with a specific request and just posted this in case if would help someone else get started to do something similar, or even more.
I don't mind at all. It is reusable for that reason. I only got so far with it in order to help someone else out with a specific request and just posted this in case if would help someone else get started to do something similar, or even more.
Thanks for your snippet Lynne. I do many vB mods that are never published, but your code snippet helped -- so here is the solution for users wanting [ATTACH] bbcode parsed properly.
Let me explain so users can better understand the code and why it appears as a link.
Deep inside /includes/class_bbcode.php, line 2581 "if (!empty($this->attachments["$attachmentid"]))" checks if the $bbcode_parser object has an array defined with details about the image attachment (ie; size, contenttype, placement, thumbnail, etc). If that data is not present, it defaults to creating a link to the attachment.
I backtracked through the function where CMS article calls the bbcode parser, see file /packages/vbcms/item/content/article.php, line 428 which shows how it fetches the attachment data using the content nodeid.
The snippet below has nodeid added to the query, and the block populating the $attachments array. Enjoy
Also to be noted, Tapatalk users cannot view articles on main page, now they will be able to view the content using the forum
PHP Code:
if (THIS_SCRIPT == 'showthread' AND $this->post['postcount'] == 1 AND $this->thread['forumid'] == $this->registry->options['vbcmsforumid']) {
$result = $this->registry->db->query_first("
SELECT cms_article.pagetext, cms_article.threadid, cms_article.htmlstate, cms_node.nodeid
FROM " . TABLE_PREFIX . "cms_article AS cms_article
INNER JOIN " . TABLE_PREFIX . "cms_node AS cms_node ON (cms_node.contentid = cms_article.contentid)
INNER JOIN " . TABLE_PREFIX . "cms_nodeinfo AS cms_nodeinfo ON (cms_nodeinfo.nodeid = cms_node.nodeid)
WHERE cms_nodeinfo.associatedthreadid = ". $this->thread['threadid']. "
");
if($result) {
$bbcode_parser = new vBCms_BBCode_HTML(vB::$vbulletin, vBCms_BBCode_HTML::fetchCmsTags());;
That is because of the condition I have at the top:
Code:
if (THIS_SCRIPT == 'showthread' AND $this->thread['forumid'] == $this->registry->options['vbcmsforumid'] AND $this->post['postcount'] == 1)
I have it set to only check for this in the specified vbcms comments forum. You could remove that part of the condition and see if it works. (Do you always move the threads to a specific other forum? If so, enter that forumid instead.)
Thanks a lot for this mod!
Just one thing - if you remove this condition - you will get text "*********" displayed in every first message of every topic. Because almost every topic meets other conditions.
As for me - i don't mind it, and i don't need a divider between auto-created text and article. so i just replaced that code with " ". not good - but fast )