Creating a Blog
So far it seems the way to do this is to use the page list block and then paste the first chunk of your blog into the description field of the individual post pages.
I have to think there's some better way than this.
Mostly I'm curious to hear the approach people have taken toward solving this issue.
There aren't many occasions in my career in which I've tried to convert a good CMS into a blog... Generally I've been stuck trying to convert a good blog into a CMS. The grass is definitely greener on this side of the fence! :)
the most we ever did was hack an interface on top of it so you didn't have to make a new page and put it in editmode, but instead it behaved like wordpress and created the architecture you're describing..
im all ears as to what would be better.
There are also other hurdles... Like navigating archives. Perhaps a cleverly crafted posting page could organize things by date so traversing the hierarchy could be done with autonav templates.
I think I envision a group of blocks:
- Viewing blog post block
- Viewing collection of blog posts block
- Archives navigation block
And lastly a single page for posting.
PS: Can I suggest that a cursor be put in all textfields?
There's a lot of custom code in it, no way to publish it but even if you start with the rss block of the core you get a first impression.
You don't get a "real blog" in c5 that way but you can show the articles of wordpress really easy this way.
But I'm not sure what your goal is.. If you want a real blog view with archive, search functions and stuff like that, the rss block is definitely not enough!
I'd like to hear how jereme was able to get where he wanted to go with the blog. I checked out your site and it looks really good.
However, being dead set on using Concrete5, I proceeded to try and carve out a method for making a blog work 'for now'.
*CREATE A BLOG PAGE TYPE*
The first thing I did was to create a page type that displays the page title, author and posting time before the content.
The code I used to display this information is:
<h3><?= $c->getCollectionName() ?></h3> <div id='blog-envelope-information'> Posted by <?= $c->vObj->Version($c, $cvID = "ACTIVE", $extended=true)->getV ersionAuthorUserName() ?> at <?= $c->vObj->Version($c, $cvID = "ACTIVE", $extended=true)->getVersionD ateCreated('Y') ?> </div>
If you want comments on your blog posts, your blog_post page type should have a block area where the comments will live.
*EDIT THE BLOG POST PAGE TYPE TO ADD COMMENTS*
From within the dashboard, go to page types and click the defaults button next to it.
Add a guestbook block to the area you setup to house your comments.
*GUSSY UP A PAGE LIST TEMPLATE*
The next thing was to create a template for the page list block that was capable of displaying things in a much more bloggy fashion.
In blocks/page_list/templates I created a copy of the main block's view.php and named it blog_list.php.
Just below where page list prints the title of the page, which looks something like:
...I added in the following code to once again print the envelope information.
<div id='blog-envelope-information'> Posted by <?= $cobj->vObj->Version($cobj, $cvID = "ACTIVE", $extended=tru e)->getVersionAuthorUserName() ?> at <?= $cobj->vObj->Version($cobj, $cvID = "ACTIVE", $extended=true)->get VersionDateCreated('Y') ?> </div>
Now I have a way to display a blog and display a blog archive.
From here it's just sewing together the parts..
*CREATE THE MAIN BLOG PAGE*
Create a main blog page and just use your generic site page type, unless you have something special for this.
In the main content area of your blog page, add a page list blog. The options should be:
- Display (0) pages of type *All*
- Display pages that are located (beneath this page)
- Pages should appear (with the most recent first)
- Provide RSS Feed? (Yes)
Name the RSS feed title whatever you want.
Save the page.
*POST A BLOG ENTRY*
This part is definitely not sexy at all.
1. From your main blog page, click "Add Page" in the toolbar.
2. Select the "blog post" page type.
3. Type in the title of your blog, and... This part is important... Type the first paragraph of your post into the description field.
4. Click Add.
5. Add the content of your blog to the main content area and save your page!
There are definite caveats here. The main one that I see is handling archives. There's no solid way to manage the archives once you have several posts.
One solution would be to post in date based folders, ie /blog/2009/01/15/concrete-blog-howto which would make it much easier to drill down, and search engines love it too!
The other huge caveat is having to type the first paragraph into the description field.
Really this is all a workaround pending a more creative solution.
I hope this helps!
I like to cook. I have big knives for cutting big things, I have small knives for cutting small things.
Look I'll be the first to jump on the "wordpress is NOT a CMS" bandwagon. Sh!t, in the early 00's you'd be hard pressed to find someone more dismissive of blogs than I. "WTF" I would think... "We've been doing content management stuff for years. You put some limits around it and list everything in reverse chronological order only and everyone loves you? Whatevs."
The reality is, blogs work. The big three make sites that google likes, and push comes to shove, traffic is important. Blogs make sense for posting aimless musings that need a lot of editing. I DO want to go to one place to start a new rant or see if there are any rant drafts I can edit and post. I do want to have easy comments and trackbacks built in, and I certainly want technorati to link to me if i'm saying good stuff.
Crap I just got out of a meeting where it's looking like the solution is going to be Wordpress/concrete5/Magento - and I'm excited about that.
Unless your blog posts are routinely going to be turning into content elsewhere in your site, why hack concrete5 into a blog? Perhaps you want to add all sorts of stuff to your blog posts that wordpress doesn't have? I dunno, i haven't spent any time in /their/ marketplace but I guess that might make sense to me...
I guess my point is.. I love the love. concrete5 does indeed rock, and you should all join the partnership program and when we start selling sweet merch you should buy it all up and whatnot... but please don't use a 7" knife to cut the skin off a pear.
As in, c5 as the core CMS, WP for blogging and Magento for (obviously) eCom?
brb while I change my pants... That my friend sounds like a sexy combination.
Are we talking like direct integration or new Concrete CMS Inc. renditions of the other open source projects?
You have me quite excited.
Magento API to c5 blocks seems tasty, c5 hooking into a WP blog db seems kind of fun.
I would probably go the C5 db, magento db, wp db and drop into the wp db from blocks where needed, and hit the magento api to get short little "widgets" if you will of products you sell that drop in as blocks.
After looking closer just creating a blog page and then creating sub pages for articles may be what I have to do, but I would really love a Block or some type of add-in that adds a blog type function so I wouldn't have to go through all that. So far what you mentioned in about WP/C5/Magneto is very interesting.
The blog is it's own beast. It's a completely separate wordpress 2.7 install on a different domain. In my mind, a blog used correctly should be a noun not a verb. From a brand/marketing prospective, a CEO can say a lot more on a separate blog than they can on their corporate site. Look at what an ass I make of myself over onhttp://concretethestudio.com The thinking is, "look if you like what our company does, go over here to see what the founders think about other stuff.. all related to various degrees." The advantage here is several fold:
A) wordpress works well now for non-geeks who need to write. The massive limitations that annoy developers actually make it much easier to get up and going than concrete5 would.
B) wordpress is already SEO friendly in ways that will take us years of work and handshaking to achieve.
C) a separate domain that links to your corporate site is a very good thing for SEO.
do we need to integrate databases between them? i think not... only reason why would be if you post to a blog page you could get a concrete5 account on the corporate site. I'm not sure i see a lot of value in that.
the magento side, yes. Deep deep integration. Andy and I will be scratching our heads about this all weekend, but the good news is I think we've got a big client who still has some money and wants it.. so hang on.
I don't need y'all to perfectly replicate WordPress functionality within c5. Basic blog capabilities (tags, clouds, display/index by category) would do the trick nicely. If I could have that, I'd be all c5, all the time, joyfully and noisily.
Really I agree with both of you, but I think franz is just saying that the right tool for the job will work much better than the wrong one.
I, for one, will choose to make my blog functionality work within Concrete5.
Awesome. Well said that man.
The engineer in me is eager to agree with you. More systems=bad, if one can do it well.
I don't buy the "client can't learn two systems" idea on its own, although I certainly see the value of "less is more." My experience has been that wordpress's UI works very well for the act of blogging, and concrete5 works very well for the act of managing a website. By letting each system do what it's good at, you're actually giving each system room to improve usability for a specific task, instead of everything. Ergo, two simple systems is better than one very complicated one.
The value in having a 3rd party domain for your blog with a different tool set shouldn't be under rated. Yes, if your blog never mentions your company, it will do nothing to get traffic there. More than likely your blog template will have some prominent links to the corporate site, and the articles should have deep links to relevant areas as well.
Having those on separate domains will improve the ranking for both sites. Deeper than that however, I find from a branding prospective you set the blog up to fail if you just incorporate it into the corporate site. It just becomes a press room, the owners don't use it as the voice/discussion its supposed to be. If you're just posting a bunch of press releases I certainly would argue to keep it in concrete5.. but if you really want to help your client establish themselves as some type of expert or pundit in a field, you really should think of putting the whole affair at a separate location.
Regardless. Sure. Run your blog in concrete5 - I've made that argument in the past and I've built sites that way.
Tags can be handled via custom attributes on page types. One could easily develop a "cloud" block that would look across collections for keywords and display the cloud of which you speak. Category would easily be handled by a custom attribute thing as well, or categories could actually be holder pages under /blog and get some landing content on them. a summary block on /blog could look for all pages below it of page type "blog post" and give you the one chronological list that way.. ..
Assuming you wanted to tell your customer that they had to click and edit a bunch of blocks to make a blog post, I'm confident any PHP developer could pretty quickly make the front end of any blog out there with the tools that are already in concrete5 today.
I'm a professional writer, with some tech chops. I maintain my own website, those of a few other writer friends, and a writing-related nonprofit or two. These sites need to easily integrate a good deal of text, but the one request I keep getting is to not have things feel too "bloggy". It conveys a too-casual attitude about their work. Booting these folks into WordPress doesn't do it for them.
You're right: C5 shouldn't be a full-blown blog platform. I'm not looking for that. Remember when "blogging" wasn't a genre in itself?
I'm blown away by Concrete5's potential. I'd be evangelizing about it now, were it not for these few key capabilities that would nudge it into a category all its own: a CMS that lets you build a website reflecting your own style AND substance.
Meanwhile, I'm compelled to stick with SilverStripe, which is less elegant but with more hybrid features.
Also...yeah, I too have no doubts that "a PHP developer" could whip up a nice block or two to do the job. Sorta why I'm bringing up the subject in this forum. :)
What you're asking for - concrete5 does. If you're concerned that your site might feel too "bloggy" what we've got is perfect. Anything that serves the purpose of "blog" is going to have to be designed and built as part of your project, the way any other type of page would.. So should the summary block have a bunch of custom templates you could browse in the marketplace? Probably.. but ya know we're not trying to be front page. We've always been very clear that we think sites are /built/ by folks who can code, and run by folks who benefit from a simple editing interface..
That's where I get stuck on this issue. To me, what works about blogging is the editing UI, not the presentation UI. I like being able to go into my wordpress admin interface and work on new posts from there. start something and not post it.. not have to worry about a short description and long description.. etc
That's the bit i'm dubious of adding with concrete5. I think if the dashboard starting being dozens of tabs down the left for every type of content that can be on the site, we've basically lost what makes concrete5 unique and compelling. (in context editing)
Again, I'm not saying the "blogging" thing isn't an issue. I just maintain it's an adoption/learning curve issue not a functional one. No one has been able to explain to me in clear terms just what a concrete5 "blog" would be. Is it just some front end presentation templates to make it feel "bloggier" or is it a administration console that is geared towards the blogging process?
I'm looking for exactly two things:
1.) The ability to group and show pages according to various criteria. We already have a "Page List" block. It would be nice if I could also list (and perhaps display partial text from) those same pages, but ordered by keyword, chronology, author, etc--any slice and dice that's appropriate. Perhaps a "Text with Tags" block would do the trick. You could pick whether the fields are displayed, or just used for grouping purposes. Then you make a new page with a "List from Tag" block, and voila.
Clouds and other folksonomies might be easy enough to throw in, since they're just more tag display options. But no biggie.
2.) An easy way to make the content as shareable as possible. This would be a popular addition--just a block that serves up the appropriate Reddit, Digg and other social bookmarking icons.
That's it. Fits elegantly into the current C5 schema and interface--just a few new types of blocks, and ways to display them. Can you see how those two things could make a content-rich site much, much more accessible and popular?
Feel free to berate me soundly if this already exists in readily usable form. The key words, though, are "readily usable". No doubt this is child's play for someone to whip up on a roll-your-own basis. But that someone ain't me, at least not at this particular juncture on my journey up the learning curve.
Again, thanks for your time.
Yes i find this blog non-sense to be extra-specially annoying - but i recognize everyone has been conditioned to think of "blogs" as the way you edit things on the web. It's a question we get all the time, so clearly we have a learning/communication challenge to address - regardless its nice to have people continue to ask for what they want.. <grin>
1) is an interesting request. a php developer could easily do the type of thing you're talking about using the custom attributes associated with page types, and then making a custom display block. That being said, i think a nice little add-on for cross searching keywords or something would be cool for any type of website, not just a blog. I don't think its entirely clear how this should behave, but its got good potential and should be developed by someone.
2) i now berate you:
just to be clear, i'm under the assumption that concrete the studio is a page-list block, with content feeds. i would be talking about the specific page-content type that contains the body, comments etc etc, and i could probably handle it from there.
i know for me, it would mean everything to have such features as time stamp, comments and tags, because i do enjoy building pages by hand through c5, it's just that coming up with new features isn't always clear right away, and i often spend a long time searching for clues over the internet.. ..
Page types exist as php files within your theme directory. If you've got PHP experience, I don't recommend working on them too much through the interface, except for establishing default blocks.
You can just copy default.php in your theme to blog_post.php and add in the extra block area. Then go into page types in the dashboard and add your new page type.
thanks, and nice work!~
Fatal error: Call to undefined method CollectionVersion::Version() in /path/to/blog_post.php on line 7
I am sure if I knew the reason for this error I would get it going ;-)
Thank's in advance for a hint on how to do this right!
Funky, I just found out the blog entry was created though, and it displays on the main blog page, clicking on it throws the aboce error again. Geuss I am not that far away ;-)
I have no idea what you've done in Step 1, even. And it's all downhill from there.
I don't suppose you took this info and made a tutorial anywhere? Just thought I'd ask.
I mean, when you create a web novadays, it MUST be maintained and renewed from time to time. All companies sometimes need to write some news.. and not having this possibility is imho a big drawback of C5.
Look at wordpress - they have both together (static pages and dynamic blog posts) and it works like magic. If c5 had a also some kind of blogging included, it would be just amazing.. I wonder why creators of C5 havent included this before ? any ideas ? thanks and sorry for lame post
I've just consumed this thread and I wonder why it's length. I am, or rather, used to be, a developer and I've gotten to the point where messing around in code and hacking pages or feeds is no longer interesting.
There isn't a good reason that C5 doesn't have a block type for publishing news-like items (not pages, not content, but "items") in reverse chron order with categorization, searching by category, receiving comments and simple syndication by any interested observer. The default viewable length of the block could be specified by the admin causing overflow to fall off the bottom where observers could easily find old items. The functionality could be extended to any user after the site admin decides where in the site tree such blocks should automatically land and where they would be catalogued/listed in case visitors want to look over all news sources. Certain users could have their news blocks excluded from mass cataloguing so they could be placed anywhere permanently, such as on the main page. The block's title would help users decide whether they were reading news, a blog, announcements or whatever.
Simple, integrated, and very desirable for a great many of us who are accustomed to seeing and using such things just about everywhere, especially on content-managed sites. Am I making any sense at all?
I'm concerned that you start describing something that does feel much like that, a block managing content on one page - and by the end it sounds more like pages being made and blocks placed on them automatically.
A lot of the functionality you describe in terms of cross linking and searching is stuff I'd like to see available as stand alone blocks for the general benefit of all site architectures, not just part of some uber-AddOn blog app.
The very good reason this doesn't exist is time. We're working on ecommerce and file manager right now. Some exciting helpful blog tools will make it into our demo site as part of an update there before too long.
I would encourage you to build (or have built) whatever suits you and your client needs. We certainly have gone off in many forked directions with concrete over the years, sometimes parts make it back into the core.
Im not bothered whether you want to call this a blog function or not - I just think overall the system needs some kind of concept for handling "latest news", with a pagination navigation function to allow for a build up of articles over time.
This would be a great addition to the CMS! Otherwise, its got a great deal going for it so keep up the good work...
ps. oh and on this forum page its not clear whether the reply icons relate the post above or below. To address that you could take them out of the grey blocks and put them above a horizontal line ;-)
Seems like most of the details being tracked could be used for getting blog posts from Wordpress, not sure what other software people are actually using. There is functionality in the Zend library for adding posts and comments, so I guess that could be built in.
Dunno, seems like more something to do as proof of concept than for any functional benefit, not sure if it's worth spending time to do any more with it...
1) I use blogger as it is a platform for blogging plus. Just duplicate the theme/template if you need same same look. Then use rss feed blocks where ever you want on your C5 pages. you can have a feed of just a tag/label/category if you want.
2) I think out of the box and blogs are collections of content, tagged or labeled to sort the content. So a C5 blog would be a block that is more a collection of pages of content filtered by a blog attribute?
summary: I look at content as content regardless of blog/pages/feeds/links/images/files and C5 comes the closest to seeing things the way I do ... I align with the keep C5 a CMS and not a BLOG/E-COMMERCE/FORUM platform...all those are Content that can be Managed by C5 System.
I'd say that same thing about adding a wiki block. Cool, but really seems like not much of a payoff in terms of time and energy unless someone was just doing it for the challenge.
The best reason seems to be that client's might want it all folded inside the same CMS. However, one could sell them on the SEO benefits of having it on an entirely separate site...
First thank you for the blog guide.
I try to include this in my c5 site v5.3.1. It doesn't work. I think the object class code have changed?
Know anyone the new code for:
- Date/Time is this:
Is it possible to format the date/time on an easy way?
- exists a guide/howto to the C5 objects?
Thank you very much
<?= $c->getCollectionDateAdded('F j, Y') ?>
For more information about formatting:
And how you read out the author?
This code doesn't work:
<?= $c->vObj->Version($c,$cvID="ACTIVE", $extended=true)->getVersionAuthorUserName() ?>
<?= $c->vObj->getVersionAuthorUserName(); ?>
posted by: admin
Text: short text
#pagelist linked page
posted by: admin
Text: full text
Number of comments 2
Have an other question about the "blog".
I would like to create a page type that displays the page title, author and posting time before the content.
I have created the page type and a new template file. In the template code i would like to read out the author, page title and the posting time.
<?= $c->vObj->getVersionAuthorUserName(); ?> <?= $c->getCollectionDateAdded('F j, Y') ?>
With the obove code, i receive a php error. How can read out the author and the creation date? Which object must i query for the information. What are the generally rule in C5 about the objects?
I am not a blogger, but I work in music and film; and would love to post my recent works in blog format. It's really hard to do in C5, and in other tools it's been way easier.
I think lots more functionality needs to be added to the core on concrete5, to make it the ultimate platform for creating all kinds of web apps, and have easy ways for clients to control the front end and the back end as well.
that makes sense to me, not every site i build has a blog in it, if you need to "blog" (Whatever that means) you should have choices..
@frz a better solution for a news system would not be bad...
But "my" "news-system" is almost done. But i have one questions:
How can i read out the posted comments in the guestbook? See the example images. Exist a easy solution? ;)
can you point me how you did count the comments?
Tried it like posted athttp://www.concrete5.org/community/forums/usage/thumbnails_in_5_3#1...
I have no solution, this is only a dummy value. sorry
Where can I find info about this "pagelist"? I've searched everywhere and the only place I find any info is the API which is useless for me as I need something a little more explanatory in a general context. I could read that API page for 3 hours and not be any the wiser for it.
Is there anywhere I can read more about this pagelist feature? It seems like the standard blocks should have a little wiki section for each one somewhere, no? I can't seem to find it.
Some of us are currently working on exactly what you are asking about the standard blocks that come with Concrete5. Be patient please.
There are no paid dedicated document writers for C5 and we are slowly getting there.
There will be several places very soon with some of the discriptions/uses of the standard blocks.
Call to undefined method CollectionVersion::Version()
in /var/www/domains/php.22graphics.com/docs/Concrete5/themes/22concrete/blog_post.php on line 181
Line 181 is the code for the blog_post page as seen in Jereme's step-by-step coding example above:
Posted by vObj->Version($c, $cvID = "ACTIVE", $extended=true)->getVersionAuthorUserName() ?> at vObj->Version($c, $cvID = "ACTIVE", $extended=true)->getVersionDateCreated('Y') ?>
Does that error message make any sense to anybody at all?
I know I can buy a blog block now, but there seems to be some problems with that add-on and I'd like to figure out how this stuff works, anyway.
I'm thinking maybe Concrete5 has changed something since these instructions were typed up, maybe?
I haven't encountered this error before. Which version of Concrete5 are you running? Also, it shouldn't factor in, but which version of PHP is your server running?
Since then I paired up with another dev and we created the Blog add-on for Concrete5. You'll have to forgive me if I won't expose all of the secrets of how it works.
However, what you're looking for would probably be something like the following:
It's concrete18.104.22.168 and PHP 5.2.9
Do you think a frankenstein creation like this involving both concrete5 and wordpress CMS would be able to live? My website experience is limited to HTML and CSS mostly, so I'm confused about whether all these wordpress plugins will interfere with concrete5?
Question for database massagers: if Concrete5 just kind of dies, as can sometimes happen with free CMS, would it be easy to take the database and import that data into another CMS or would it basically be a colossal nightmare as I am imagining?
As for getting the data out of concrete5, it would be tailored to the site but getting the majority of content out of concrete5 might be a bit harder only because of how flexible the system is with arbitrary table names. It is certainly possible, and it might be a slight pain in the ass depending on the site.
I did a job where i had to move over 110 pages of content from one site to concrete5 just using copy and paste. It took 70-90 minutes so definitely not a deal-breaker.
Is it going to be for sale soon?
It doesn't do archives or tagging, but for some situations it might work well.
Or even if your thought process is that when you create a page you should manually type in a page description and then once the page is created re-type and paste that description into the main body would be the better way to go...?
I must be missing something but with both of those scenarios it's redundant. I just had my fifth customer ask me why they have to copy and paste the information manually.. and I honestly don't even know what to tell them.
Is this being addressed on the next version of Concrete5?
Anyway, you don't need to use the description if you don't want. I have a free addon in the marketplace called "Page List Teasers" which pulls the actual content from the page instead of using the Description field. You could also code in the retrieval of page content yourself (depending on what it is you're trying to do). Also check out the built-in blog functionality that comes pre-installed with Concrete5 now (assuming you've checked the "Install Sample Content" box during installation) -- this also pulls content directly from the pages for the excerpt instead of using the "Description" field".