Tuesday, May 10, 2016

Wrong Way to Patch Processor Params with Sitecore Patch Files

Recently, I had to look into an issue where Sitecore Rich Text Editor starts to display some buttons incorrectly on Hyperlink Manager popup window, as shown below






And when checked using Firebug, I can see that Sitecore is returning 500 error for ScriptResource.axd Urls.


http://<hostname>/ScriptResource.axd?d=5WkzNtzG0Iu_bSt84IS-lYFjFGuFXd3pdFFzPJGdqcFIuGYf2XpqGIuCBTqN9bJIQAaJ2kch7IJgHvqLtwY9fHsn0fn-cX5VNiqGRLNDhdxtCd6aGXAbZEUgdiGQtJ1ktTGlF3pRIhHkY1NQhI_YZAHBEZQLMlfWmgnlHln8D8A1&t=40eb3b32




When checked with ShowConfig.aspx, it turns out to be "Sitecore.Pipelines.PreprocessRequest.FilterUrlExtensions" processor has been removed from "preprocessRequest" pipeline.

So, when checked our custom configuration files added into /App_Config/Includes/zzz folder, I can see there was a configuration file with following configurations. With this, developer has tried to patch Sitecore connfigurations, but in a wrong way.

<?xml version="1.0"?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
  <sitecore>
    <pipelines>
      <preprocessRequest>
        <processor patch:instead="processor[@type='Sitecore.Pipelines.PreprocessRequest.FilterUrlExtensions, Sitecore.Kernel']" type="Sitecore.Pipelines.PreprocessRequest.FilterUrlExtensions, Sitecore.Kernel">
          <param desc="Allowed extensions (comma separated)">aspx, ashx, asmx, abc</param>
          <param desc="Blocked extensions (comma separated)">*</param>
          <param desc="Blocked extensions that stream files (comma separated)">*</param>
          <param desc="Blocked extensions that do not stream files (comma separated)">
          </param>
        </processor>
      </preprocessRequest>
    </pipelines>
  </sitecore>
</configuration>


As you can see, even though above config has used "patch:instead", it uses same "type" value, which makes Sitecore to totally remove the above processor from configs.

One correct way to achieve above requirement is mention below. That configuration will replace the "param" value with new given value (i.e. "aspx, ashx, asmx, abc")


<?xml version="1.0"?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
  <sitecore>
    <pipelines>
      <preprocessRequest>
        <processor type='Sitecore.Pipelines.PreprocessRequest.FilterUrlExtensions, Sitecore.Kernel'>
          <param desc="Allowed extensions (comma separated)">aspx, ashx, asmx, abc</param>
          </param>
        </processor>
      </preprocessRequest>
    </pipelines>
  </sitecore>
</configuration>

Happy Sitecore !!

Monday, May 2, 2016

Usage of Publishing.PublishEmptyItems Setting

Recently we had a discussion in Sitecore Community forum regarding a template container (template folder) not getting published and it causes the child templates also remove from web database.

The reason for this issue was the template container (template folder item) did not had any language versions defined. It was only an empty item without any versions.

One of friends from community suggested to adjust the Publishing.PublishEmptyItems setting to true, to allow Sitecore to publish empty items.

<!--
    PUBLISHING PUBLISH EMPTY ITEMS
    Specifies whether empty items (i.e. items without publishable versions) should be published.
    Default value: false
-->
<setting name="Publishing.PublishEmptyItems" value="false" />

But, eventhough that setting will solve this above issue mentions, can cause some serious side effects.


Sitecore had bugs related to empty item versions getting created automatically without knowledge of editors.

First senario I faced this was with Sitecore 6.6 release.
In that initial version of Sitecore, when a item created with a other language than 'en' language, Sitecore automatically created an empty item version in 'en' language also. (Sitecore Bug)

Also, recently I saw a same kind of issue on community forum, where empty item versions getting created with Sitecore 8.1 update-1.
https://community.sitecore.net/developers/f/8/t/2616


So, setting the Publishing.PublishEmptyItems setting to 'true' will cause these empty items to be get published.


So, correct way (or best practice) would be to create versions for the Containers/Folders also, which will allow publishing to work accordingly, while keeping the Publishing.PublishEmptyItems setting to "false"


Happy Sitecore!!

Sunday, April 17, 2016

Duplicate Item Names On Same Level Setting - Sitecore 8.1 Update-2 Settings - Part 2

This is the part 2 of the blog post series to discuss new settings introducted with Sitecore 8.1 Update-2.

There is a new settings added into App_Config\Sitecore.config file with Sitecore 8.1 rev. 160302 (Update-2), which relates to Duplicate item names.

AllowDuplicateItemNamesOnSameLevel Setting


As this setting name implies, you can enable/disable duplicate item names on same level of Sitecore content tree.

In earlier versions of Sitecore (earlier than 8.1 Update-2), it was possible to create duplicate item names in same level and there were no setting to disable that. On earlier Sitecore versions, you had to implement custom rules/custom coding to restrict duplicate item names.

<setting name="AllowDuplicateItemNamesOnSameLevel" value="true" />

With Sitecore 8.1 Update-2, you can disable duplicate item names by making the "AllowDuplicateItemNamesOnSameLevel" setting to 'false'




Description of the setting can be found below

<!--  ALLOW DUPLICATE ITEM NAMES ON THE SAME LEVEL
     Specifies whether the duplicate item names are allowed on the same level in the content tree.    
     Default value: true
-->

Happy Sitecore!!

Monday, March 14, 2016

Item Url Replacement Improvements - Sitecore 8.1 Update-2 Settings - Part 3

In this post, I would like to discuss about another setting that is introduced with Sitecore 8.1 rev. 160302 (Update-2), which is related to item name URL replacements

Ths setting we are going to discuss is
<!--  ITEM NAME ALLOW MIXING REPLACEMENT CHARACTERS
          Specifies whether you can create items with names that contain the values defined in the 'find' and 'replaceWith' properties in the
         'encodeNameReplacements' section.
          Default value: true.
    -->

 <setting name="ItemNameAllowMixingReplacementCharacters" value="true"/>

Early versions of Sitecore (earlier than 8.1 Update-2), if you have define character replacements for url's and want to include both parts 'find' and 'replaceWith'   from 'encodeNameReplacements' section, Sitecore failed to process the URL and find a matching item to serve.


for example,
  • you have defined following setting in <encodeNameReplacements> section 
<replace mode="on" find=" " replaceWith="-" />
  • and you have created an item with following name under /sitecore/content/home
"sample item-1"          (please note both space ('find' part) & hyphen ('replaceWith' part)
  • Sitecore generates above item url as http://hostname/sample-item-1
  • and request to above url (i.e. http://hostname/sample-item-1) returns item not found error.


As a solution to the above issue, in earlier versions of Sitecore, what we did was to restrict hyphens (-) character from item names, by adding hyphen into "InvalidItemNameChars" setting.
 <setting name="InvalidItemNameChars" value="\/:?&quot;&lt;&gt;|[]-" />
This option restricted Content Editors by creating item names with hyphen character.


BUT,


With this new functionality introduced with Sitecore 8.1 Update-2, Sitecore will process above kind of senario URL's without any issue and successfully find the correct item to render.


Below is the video in Sitecore for Dummies YouTube channel, which discuss about this setting.




Happy Sitecore!

Sunday, March 13, 2016

New Cloning Related Features - Sitecore 8.1 Update-2 Settings - Part 1


Today I went through the configuration changes for the Sitecore 8.1 rev. 160302 (Update-2), which contains following config change to App_Config\Sitecore.config file, which I will go through one by one.

ItemCloning.DeleteClonesWithOriginalItem Setting

<setting name="ItemCloning.DeleteClonesWithOriginalItem" value="false" /> 

This is another very useful functionality added into 8.1 update-2, where cloned items will be also deleted when the source item is deleted.

In earlier version, when a Source item is deleted, Sitecore converts its clones into normal items, and did NOT provide any option to delete clones at the same time.

ItemCloning.DeleteClonesWithOriginalItem set to "false"


But, with this setting set to 'true', when the source / original item is deleted, clones of that item will also get deleted.

ItemCloning.DeleteClonesWithOriginalItem set to "true"

Video explaining the usage of this setting can be found in my "Sitecore for Dummies" YouTube channel.


Following is the description Sitecore has provided with this config setting.

 <!--  ITEM CLONING - DELETE CLONES WITH ORIGINAL ITEM    
Specifies whether item clones should be deleted when the original item is deleted. If true, when the original item is deleted all its clones are deleted and not just uncloned.    
Default value: false
-->

For a one of my clients which Sitecore 6.6 few years back, I had to re-write the item delete functionality, so that it included this option.

ItemCloning.ForceUpdate.ChangeTemplate Setting

<setting name="ItemCloning.ForceUpdate.ChangeTemplate" value="false" />
In earlier versions of Sitecore, templates of clones were not updated, once the source item template is changed. With this new setting set to true, clones will also get updated with the source/original item template changes.

Video explaining the usage of this setting can be found in my "Sitecore for Dummies" YouTube channel.

Following is the description give to the setting in Sitecore configuration file
<!--  ITEM CLONING - FORCE UPDATE - CHANGE TEMPLATE
       Specify whether clones should be updated automatically when a different template is selected for the original item.
       Note: If true, all the clones of the original item are updated automatically.
       Default value: false
 -->

ItemCloning.RelinkClonedSubtree Setting

<setting name="ItemCloning.RelinkClonedSubtree" value="false" />

As you can see from the config description below, this will re-link all the links on items, within the cloning sub-tree.
<!--  ITEM CLONING - RELINK CLONED SUBTREE    
Indicates that after cloning an item tree structure, all the internal links inside the cloned structure should be re-linked to point to the items in the cloned sub-tree. When the setting value is false, the links in the cloned structure will still link to the items in the original structure.    
Default value: false
-->
This setting is very useful one, when doing content structuring/cloning a new node/etc. Earlier, when a new clone node was created, we had to run a custom written tool to modify the links to be match/used items within the newly cloned item sub-tree.

Video explaining the usage of this setting can be found in my "Sitecore for Dummies" YouTube channel.



Happy Sitecore!!

Wednesday, March 2, 2016

My Footsteps on How to Become a Sitecore MVP

Recently one of my friends on Sitecore Community forum asked to provide some feedback on becoming a Sitecore MVP, which made me to write this article.
First, there are lot of good articles on this topic, which I myself had read and gained lot of information. So, it is good to go through all of them and try to get an idea what it takes and what needs to be done to become a Sitecore MVP

Good articles to read :

Becoming Sitecore Technology MVP by Vasilly Fomichev
https://www.cmsbestpractices.com/becoming-sitecore-technology-mvp/
Know What it Takes to Become a Sitecore Strategic MVP by Tom Head
http://lab.co.uk/news/know-what-it-takes-become-sitecore-strategist-mvp
3 Basic Steps to Help you Become a Sitecore MVP by Sitecore Sandbox
http://sitecoresandbox.com/2015/10/15/3-basic-steps-to-help-you-become-a-sitecore-mvp/

And following are the things I think that should be focused on :

  • Blogs

One of the best way to distribute your knowled to Sitecore Community is Blogging. More you write, more you get to know the community and help the community.
  • Sitecore Marketplace Modules

You can contribute to Sitecore Marketplace by developing new ideas as a module or contributing the features/extensions that you have already developed as a module to Marketplace.
  • Video contributions

You can record videos and release in your own YouTube channel. Also, you can contribute to Master Sitecore YouTube channel which is a official Sitecore channel. You can do small videos as well as longer videos, in any sitecore related topic.

Every day, interact with the forum by answer question/helping others questions. You need to understand people do post in the forum as their last shot. So, we need to try and help them as much as possible.
I think Sitecore can get reports on your interactions on the forum
  • Twitter

Very important to get your twitter account running, and add/Follow Sitecore people. It is a great knowledge source as well as way to get to know people.
Initial stage of my Sitecore carrier, I didn't use Twitter which I later found was a great loss in knowledge vise as well as networking.

Most of the MVPs and main Sitecore community are in that chat room. try to get involve putting questions and answering questions at the chat room.
  • Sitecore Support Portal

Try to contribute by reporting bugs/new features. But, I cannot give a exact answer if this will be counted or not. but, good to have this.
Note: You only have access to Sitecore Support if you are a Sitecore Certifield Developer and working for a Partner or Customer.
  • Sitecore User Groups

Try to participate to every user group event. If you have any good topic, you can try presenting at user groups also.
If you don't have a Sitecore User Group in your area, you can start a new one with getting your colleagues together. 
  • Sitecore Events participation

Participating to Sitecore events like Sitecore Symposium, Sitecore User Group Conferences, etc is also important to gain knowled as well as networking. But, if there is nothing near to you or not possible due to other reasons, then, this is not a must.
  • Sitecore community document site - https://sitecore-community.github.io/docs/

You can also try to contribute to sitecore community document site
  • Sitecore Certificates

If you can do Sitecore Certificates (like DMS, Commerce, etc), it is very good. but, if it is not possible due to some reason, not a must.
  • StackOverflow Contributions
StackOverflow contributions by answring questions on Sitecore related topics is also considered for the award.
  • Social Media Knowledge Share - Facebook/LinkedIn/Twitter/etc

Sharing information related to Sitecore on social media will help knowledge to reach other community members.

Finally, make it a fashion to Share Knowledge and help others. Then, you will surely become an MVP. :-)
If you are planning to nominate yourself as Sitecore MVP 2017, you need to start today, since you only have another 10 months to nominate your-self.


UPDATE 17-11-2017


There is a separate stack exchange site for Sitecore now. You can contribute your knowledge/questions/answers to that.

Good Luck & Happy Sitecore !!

Friday, February 26, 2016

Event Report - Introduction to Coveo for Sitecore - February Meetup - Sitecore User Group Sri Lanka

It again time for a Sitecore learning. This time, it was Coveo for Sitecore.

Jean-François L'Heureux, Software Developer at Coveo, generous to give us his valuable time to educate Sitecore community in Sri Lanka. He did the online presentation which spans nearly 2 hours.




In this presentation, which spans nearly 2 hours, Jean-
François discussed introduced to Coveo, a leader in intelligent search, and to the Coveo for Sitecore product. Participants learned what is important for a great website search experience, and how Coveo for Sitecore can help you. Also, Jean-François gave us brief but clear look into Coveo for Sitecore architecture, installation, and usage as well as its usage analytics and personalization features.


Meetup Event :
http://www.meetup.com/sugsrilanka/events/228767075/


Unfortunately, we faced few issues with our communication tool from our side, which didn't allow us to record this valuable presentation. But, we have shared few snaps from the event below.





Presenter : Jean-François L'Heureu - Coveo for Sitecore expert from Coveo
Posted by Sitecore User Group Sri Lanka on Thursday, February 25, 2016