Adding smarter DISQUS to your concrete5
Permalink 7 users found helpfulI've just finished figuring out a smarter way to implement Disqus, a third-party commenting system
Sometime, you don't bother users to register on your site, but comment using Facebook, twitter or other social ID.
Disqus is a fine comment system. I decided to use it simply because major blog site such as TechCrunch and Mashable are using it. No other reasons. I didn't choose it because of functionality. I chose it because of the brand & trend :p It's like the designers must use Mac. Sometime, you need to do it for web world :(
Anyhow, you can embed disqus comment easily by pasting onto HTML block after obtaining the code from disqus.
I used to use a global HTML block and embed the disqus HTML code and placed it onto each page using default page type and global block.
However, this approach has one problem.
When you go to the edit mode and right after you finish editing, the URL of your concrete5 site becomes "/index.php?cID=128" instead of pretty URL.
If you just use simple HTML code. Disqus think that it's different page. And they won't load the previously saved comments.
Also, if you want to change the URL, you will lose all of your previously saved comments.
So I took a look at their developers' guide. And I got to know that you can use the "identifier" instead of URL.
It's very simple implementation of Disqus. And I've copied the "disable view" from YouTube block.
Now concrete5 handle Disqus smarter.
Here is the code.
You must change the first 3 lines.
But that's it.
Also you must know how to create an original theme and page_type.
Copy and paste the code onto your theme file.
<?php $DisqusWidth=620; // width of comment area $DisqusHeight=200; // height of comment area $DisqusShortname = 'disqus_shortname'; // CHANGE IT TO YOUT SHORTNAME if ($c->isEditMode()) { ?> <div class="ccm-edit-mode-disabled-item" style="width:<?php echo $DisqusWidth; ?>px; height:<?php echo $DisqusHeight; ?>px;"> <div style="padding:8px 0px; padding-top: <?php echo round($DisqusHeight/2)-10; ?>px;"><?php echo t('Content disabled in edit mode.'); ?></div> </div> <?php } else { ?> <div id="disqus_thread"></div> <script type="text/javascript"> var disqus_shortname = '<?php echo $DisqusShortname ?>'; var disqus_identifier = '<?php echo $c->getCollectionID() .' '. BASE_URL . DIR_REL . '/index.php?cID=' . $c->getCollectionID(); ?>'; var disqus_url = '<?php echo BASE_URL . DIR_REL . View::getViewPath() . '/'; ?>'; (function() {
This is the result
http://www.concrete5.org/about/showcase/entertainment/yokosonews/...
Here is a question.
Do you want a package (and block) to make this process easier?
If enough people responded, I may consider making this as a add-on.
Also if you know more about Disqus, I'm more than welcome for your suggestions.
I would recommend that you do the add-on or have this moved to the How-To section.
Thanks for the info! I would definitely package this and make it a block. There's nothing else like it in the marketplace.
If you plan on using this code, in order for Disqus comments to work, you have to have Pretty URL's enabled via Dashboard > Sitewide Settings.
(Technically, you can enable P-URL's, visit the pages with Disqus comments, make the connection to Disqus.com, then go back and disable P-URL's & Disqus will still work.)
The only add on I know that uses this is ScottC Blog. Would be good to use it for other things too.
My issue is that you say that the custom code needs to go into the theme file. What specific file, and where? At this point I can get the Disqus comments to show up . . . so I'm halfway! :)
http://www.concrete5.org/marketplace/addons/disqus-comments/...
(The problem with the AddOn being it has zero documentation. So until I came here I didn't have enough info to even use it correctly! LOL)
if ($c->isEditMode()) {
I suggested that better solution is:
$u = new User(); if ($c->isEditMode() || $u->isLoggedIn()) {
In this case, when you're editing post in URL you can see page ID. And also it is generated in Disqus, but I don't want to create it (I use pretty URL without page ID in URL).
Thanks again,
Andrey