What's new and great in version 4.0

   —   
Once again, I got a little time to give you some more information. If you are interested in our new version, you should totally read this, I will give you a brief overview of the great things you can try in our beta or get in the final release. Again, this post is meant mainly for the developers, if you don't know what is URL rewriting, you should study the problematics a little bit first.

I am sure you will ask when the new version comes out. As you might noticed, due to the huge amount of new features and new licensing we finally decided to make it major, so it is 4.0 instead of 3.2. This comes with many improvements and definitely it is worth the waiting. Let's hit the changes.

New modules

Of course there are new modules you already know about, however, this post is not so much about them so I will just skip this topic for now, I am sure that you will get friendly with them when you evaluate new version. The new version is all about community features and SEO, so you will find the most important things in it.

URL rewriting

There are huge changes in our URL rewriting and link management, you will find two new very useful features:

  • Unlimited number of document aliases and per-document URL extensions - Yes, you can now define multiple aliases for the document, and you may also define additional extensions for specific documents, without influencing the entire web site. In extensionless configuration, this gives you the power to actually have the file links with extensions like .gif, .jpg etc. and still have the rest of the site pages having .aspx extension. You may also track campaings only for specific aliases.
  • Wildcard URLs - This is something that I am very proud of. We finally got the ultimate feature for best SEO friendly URL practices in our CMS. You may now use the wildcard URLs in your documents, having only single documents to display content dynamically? You find that cool? Let's explain what it does in some details since the documentation is not yet ready for you who have our beta ...
The wildcard URL alias for the document /Members may look like /Members/{username} where the curly brackets mark the actual wildcard and try to match anything that appers in your URL so when you enter the page /Members/Administrator.aspx, the administrator gets recognized as the wildcard part and the page is rewritten internally. So ... where can you get this wildcard part?

It is actually as simple as you can think of it. It gets translated to the querystring parameter. Until now, the page /Products/LCDs was always internally rewritten to /CMSPages/PortalTemplate.aspx?aliaspath=/Products/LCDs. With wildcard, you just get more query parameters to the page, so the page /Members/Administrator.aspx is rewritten to /CMSPages/PortalTemplate.aspx?aliaspath=/Members&username=administrator.

Got it? Yes, exactly, the name of the parameter is the wildcard name, and the value is the matching part of the URL. For ASPX page template, it is the same, you just replace the /CMSPages/PortalTemplate.aspx with the path to the template page.

You are right if you think this is not all, it gives you even more power. We introduced new contexts where you can get current module objects based on the given querystring parameters. Just look at the libraries and if you find the class with name Context in it, just look at its static properties. One example for all: If you look at the CMS.SiteProvider.SiteContext.CurrentUser, and if you have userid or username parameter in your query (usually, it is ID or codename of the object), you get the user object. Some of our web parts use these properties, and you may put there the objects you wish to display in such web parts.

You may see several examples of this in our sample Community site, so just look at it at this point, I hope you will understand how it works. Let's move on.

Macros

I hope you use macros, if not read this and consider if you want to use them now. So what is new in macros? You already know that you can use data and context macros using expressions like {%SiteName%} or with selectors like {%CurrentDocument.DocumentName%}. You can see the details in our Developers guide -> Appendix A - Macro expressions. The new version extends the possibilities with macro parameters.

Each parameter of the macro is separated with "|" character just after the macro expression or another parameter.

Examples: {%SKUPrice|(culture)en-us%}, {%SKUPrice|(culture)en-us|(format){0:f1}%}

Let's see what you can use and what it does:


  • Culture – “|(culture)<code>” - Saying that the specified culture should be used for the expression. e.g. {%SKUPrice|(culture)en-us%} writes the product price in an English culture formatting
  • Format – “|(format)<format>” – Saying how the value should be formatted. e.g. {%SKUPrice|(format){0:f1}%} writes the product price with precision for one decimal place. It uses standard formatting string.
  • Default value “|(default)<value>” or “|<value>” saying what should be returned when the value is not found. e.g. {%SKUPrice|N/A%} writes product price or N/A if the document is not a product
We are planning on adding other parameters if necessary, for the things you may consider to be too heavily done with macros and could be better. At this point I would like to ask you if you have some thoughts or advices on this, I would be glad to hear them.

Forums

Our forum module has been completely rewritten, leaving behind the previous "toy like" version and bringing you a great new experience comparable to professional solutions. The data are backward compatible so you wont loose your existing forums but you may need to update your CSS styles. Sorry about that, but it is definitely worth the new forums module functionality.

E-mail & Newsletters

We are further improving the e-mail engine and Newsletters so the new version will be much more efficient in sending those, that's a really good thing considering the size of the projects some of you have.

Silverlight & Live ID

To keep up with the new technologies, we just couldn't leave the Silverlight and Live ID integration without noticing. There is a demo of a Silverlight control integration in the ECommerce sample site and Live ID is now natively supported for importing and authenticating users. Of course you need to register your application to make it work, we provide only demo for virtual domain mydomainXY.com as an example.

Performance and scalability

As always, we are extending the modules to handle more objects than before and also trying to optimize as much processes as possible. Given the circumstances of Community features, especially the users are optimized for very large number of items. We divided the user to two tables to separate the always needed data from the per-user settings.


Web part zones, AJAX and ViewState support

If you look at the web part properties, you can find that the web parts now natively support AJAX update panel. Just check the changes and you will get your control posting back only within its panel asynchronously. You may now also disable the viewstate of the web parts.

You can do the same with web part zones now and the lost web parts and web part zones (if you change the layout) are now displayed in design mode so you can save them or remove them.

As in previous version the SQL debugging was introduced, now we come also with ViewState debugging so you can see what your viewstate consists of. The configuration is similar to SQL debugging, with config keys:


<add key="CMSDebugViewState"value="true"/>
<add key="CMSDebugViewStateLive"value="true"/>
<add key="CMSDebugAllViewStates"value="true"/>
<add key="CMSDebugViewStateLogLength"value="10" />

I must say that we are too busy developing we cannot make complete review of the interface and limit the viewstate to its minimum in this version. At least, we limit the viewstate of the most used parts to provide you better experience and we will continue during development of the next versions, so please be patient, it will only get better.

Further unification

In my post about new import module I was talking about unification of the code, the reason is to limit the huge amount of code but keep the functionality. We do this further, the new version is getting closer to be able to have separable modules but I don't think we can make it to it, but we are on a good way to do so.

We also restructurized the web site project for this reasons and converted most of the UI to use master pages, that will help you rebrand even better.

What to say at the end?

We hope we can release new version before the end of this year, if we are lucky, we will be able to get it out just before christmas so we can enjoy our christmas holiday all the geeks can enjoy looking into it in their sleepless nights during their holiday ;-)

I have feeling that I forgot something important, but I cannot remember what it was, if I remember, I will add it later.

Motto: If you look at the new version, it looks the same way like the old one just with new features (do not expect shiny new interface with every major version), because we don't sell the colors like some others, but more than anything else, "We are helping you deliver better sites".
Share this article on   LinkedIn Google+

Martin Hejtmanek

Hi, I am the CTO of Kentico and I will be constantly providing you the information about current development process and other interesting technical things you might want to know about Kentico.

Comments

Martin Hejtmanek commented on

Hi Dave,

Yes, you can do it using the web.config key mentioned above in this discussion and use the document with redirection.

Dave commented on

I haven't seen any updates on 301 Redirect support. Is there a way to redirect an individual URL to a new URL as a 301 re-direct? This is a pretty critical step to ensure SEO.

Martin Hejtmanek commented on

But you can name the document "Default.aspx" and have it as the default one, can't you? Of course you could make the root the "Home page", but that's kind of contraproductive in terms of the visual inheritance of Portal engine. Actually the only thing missing we know of is handling of the URLs ending with / like ~/Home/ and that will be also available in 4.1, everything else should be covered by just properly setting up the web site and using the settings I mentioned above. I will be glad if you can prove me wrong, we could be missing something so it would be great to fill in the blanks. Our web site is quite historic and it didn't really go through much SEO for the lack of resources (to be honest, if it was up to me, it would look different but it isn't). That will be changed soon and it is already on our schedule, don't worry ;-)

random0xff commented on

"unless you don't use any specific document as the default (home) page."

Exactly. I don't see the need to add ~/Home.aspx, it's bad for SEO reasons because you duplicating the most important page in your site. In fact, your own homepage http://www.kentico.com/Home.aspx does it too. Did you check the page rank? I didn't, but there's a chance it is affected in a negative way by this.

Just a bit of worry for me.

Martin Hejtmanek commented on

Hi,

Yes, you can do that. You can use macros in the Page title on the Metadata tab of the document properties, so you can remove the "-" from the page title format and add it to the particular page titles. Or you can use some custom macro like {% ProcessCustomMacro("gettitle", "") %} and handle that in the ~/App_Code/Global/CMS/CMSCustom.cs, method ResolveCustomMacro.

I would personally set the page title of the home page to Home, so you would get the Site - Home page title. I am just wondering ... which document are you using as the home page? If there is no page title in this case, the document name should be used ... so this shouldn't be blank unless you don't use any specific document as the default (home) page.

random0xff commented on

About macros, there is one macro I use:

{%prefix%} - {%pagetitle_orelse_name%}

What I don't understand, is how to have ONLY the prefix (without " - " after it) and add the " - %pagetitle%" ONLY when it is not empty. And NOT use %name%.

I need this because, by default any site you create with Kentico will have a strange title for the homepage:

"Site - "

It should be:

"Site"

Is there a macro for this, or should I program that myself?

Martin Hejtmanek commented on

Hi Teddy,

I completely forgot to let you know guys! You just reminded me, thanks for that ... there are few new (so far experimental) settings in 4.0 (4.0 ONLY) you can put in the web.config file.

They are:

3) <add key="CMSUsePermanentRedirect" value="true" /> which allows 301 redirection in places where it makes sense, instead of 302 redirection.

2) <add key="CMSRedirectAliasesToMainURL" value="true" /> which you can use for better SEO. It does 301 on every URL which is not main for the document (NodeAliasPath). That should help you for now.

3) <add key="CMSRedirectInvalidCasePages" value="true" /> which goes even further and allows you to restrict the pages only to a specific case variant. When the case is not right, it gets 301 to the right case.

However, they weren't fully tested (that's why it is not publicly documented) so I cannot guarantee you that this will work in every case. My coleaque uses these on his web sites and he says it works fine, so it should for for you too. We plan the detailed look into SEO during the second half of this year and I think we will probably make these new settings public and fully tested.

I think one of my deep-dive posts could be about all the web.config settings which are available for you but not public, I must think about that for a while if that would be wise decision ...

To answer your question ... there is no simple solution how to make this by yourselves. You would need to make additional URL rewriting in the BeginRequest or modify the code of our URL rewriting if you have the source code license. Both ways would take a lot of time and there is no guide or list of places that need to be updated ... I recommend you to try these settings for now.

Teddy commented on

I agree with Scott.. It's crucial that all aliases do a 301 redirect to the primary alias for seo purposes. This will be valuable when migrating a client's site from another platform or when optimizing exiting page urls for seo purposes.

Could you at least tell us where in the code we should make this modification if we want to make sure a 301 is performed?

Martin Hejtmanek commented on

Hi Guys, yeah, sorry about that, we are still solving the small details and run the security tests, we cannot publish Social networking edition until it is completely safe. I hope you understand that. Scott: There is a setting in the Content management settings of the Site manager for this, you need to check it for the confirmation of leaving the page without saving. It has some minor issues but they were fixed in the new version.

Rhino Car Hire commented on

Martin, I stayed up all night on Xmas Eve expecting Santa to deliver V4 under my tree, you can imagine how disappointed I was when he did not come ;-))

Anyway, one big gripe my wife has who puts alot of the content into the CMS, is if she forgets to save a document and then goes to another document she loses all her changes, which makes her very mad, ;-) is there a fix for this... sometimes its very easy to say go to the images folder to look at images and forget to save the document..



Thanks

Scott

salma commented on

We are waiting for Kentico 4.0 !!! What a lovely programm !!!
No holiday ! no nothing! Only work and work with Kenticooooo.

Thank you.

Martin Hejtmanek commented on

Hi Jim, thank you, that is thoughtful. Luckily we won't spend the actual christmas and holiday time at work, that would be too much for everybody. Don't worry, we will celebrate. Luckily, I meant only the regular working days between the holidays ;-) But still, we are already far behind the schedule so we need to speed it up a little. Still, the bugs are prevented better than before just like with each next version.

JimS commented on

Martin, thank you very much for the update. It was not my intention to rush you but just to get my own planning straight. It is a new major version, so take your time, we are all happier with lesser bugs ;-) But anyhow PLEASE also take some time to celebrate on Xmas and Sylvester!
Good luck + have fun °<]:-)
Jim

Martin Hejtmanek commented on

Hi Jim, unfortunately there has been some more feature requests from our management we need to fulfill so we cannot make it before the end of the year, sorry about that. It should be released during the January, we are working very hard on it and we will spend our holiday time developing it for you so you can get it as soon as possible. Second beta won't be available, it would delay the release even more and we cannot afford it at the moment.

JimS commented on

Hi Martin,
has the launch date been fixed yet or could you please give a good estimate? My schedule is sooo cramped these days before Xmas and I would hate to be surprised by missing it without prior notice. Will it still be before Christmas, this week or next?
And there won't be a second beta, I presume.
Thanks very much beforehand.
Jim

Martin Hejtmanek commented on

Hi Trevor, we haven't had time to try the MVC model yet, but in general I think it is doable. You need to let your code to check if the page is handled by MVC and if it is, skip the Kentico CMS rewriting in the Aplication_BeginRequest event in that case. Another option is to exclude the MVC sections by Exluded URLs settings if you know their adresses.

Trevor de Koekkoek commented on

Hi,

Your product looks interesting. I have some of the same concerns as others have raised regarding licensing, but I will see how that plays out. I am also interested in knowing how to possibly integrate your CMS with my ASP.NET MVC applications. Most of my development is now done on the MVC framework. So what I would like to do is to set up a website with your CMS, but then to add custom pages with MVC. This means that I would need to be able to customize my routing so that URL requests handled by Kentico would be unharmed, but other Routes would be handled by my MVC application. Furthermore I would like my MVC controllers to be able to call into the Kentico API in order to build custom views as nessary.

Please let me know how this may be achieved. As an aside I welcome the new Nashua office as I am located in Chelmsford, MA about 8 miles from Nashua.

Regards,

Trevor

Martin Hejtmanek commented on

Hi Scott. Yeah, I know this can be a problem but it is little bit tricky since the redirect is permanent, so far we had issues with this so it wasn't introduced yet. I will try to look into it and see what we can do about it in the upcoming versions. Thank you for your suggestion.

Scott commented on

One other issue whilst I'm in the mood ;-)

On a new Kentico install, it creates the following homepages:

Default.aspx
Home.aspx
default.aspx
home.aspx
\

This was a big seo problem for us a few months back, Google had 3 copies of our homepage indexed at the same time, we fixed it with a url re-write of all the above to \


But why does this occur as its quite a bad pratice to have this..

thanks

Scott

Scott commented on

One comment on this, its a killer for us to rename a page, we have to use a url rewriter to do a permanent 301 re-direct. That way pagerank and links etc pass to the re-directed page.

To have two copies of the same document / content is bad for SEO. What are the chances for your url engine to do a 301 rewrite on renamed pages, or to give that option. That would be an amazing function and a great selling point.

There is also mechanism which automatically creates alias when you rename the document to keep its old location valid and not throwing 404.

Elijah Taylor commented on

Martin,
These new features look brilliant. Thank you for investing the research and providing them to us! I can't wait!

Martin Hejtmanek commented on

Hi Ralph, you could have unique URLs for each culture before (using URL path), just not for the linked documents. We counted with that and now you can have unlimited number of aliases for both original and linked documents, and even for all or specific culture so all your problems should disapear. There is also mechanism which automatically creates alias when you rename the document to keep its old location valid and not throwing 404.

Martin Hejtmanek commented on

Hi Scott, it must be approved before it appears on the live site, that's why you don't see anything. In combination with full page caching it has this unfortunate effect. It is fixed in new version ;-) Once se setup the market place, we will be providing the graphical web templates for free in there to keep the installer not so big, it should be in Q1/2008. I will try to inform you all more about the features you may not know yet.

Car Hire Cyprus commented on

Everytime I submit a comment to your blog, the page refreshes but never tells me that is was submitted or saved, so its hard to know if its working or not..

Scott

Ralph commented on

URL wild cards means that finally we can have unique URLs for each culture?

Car Hire Cyprus commented on

Nice information on the new version. I only discovered the macros last month, and it makes a huge difference to what we can do and how we do it. Instead of having 6000 pages of content, we just have one static html web part and reference the keywords in the text from new fields.

It would be a good idea to have more information on your site on what you can do with Kentico.

Also, I understand what you say below, but I think some good templates (nice and shiny ;-) , out of the box designs built into the installer would be a great idea...

Scott

Motto: If you look at the new version, it looks the same way like the old one just with new features (do not expect shiny new interface with every major version), because we don't sell the colors like some others, but more than anything else, "We are helping you deliver better sites".