Thursday, November 24, 2016

Custom Sitecore Command to Disable or Hide Full Publish Menu Option in Sitecore Content Editor

Recently there was a question raised in Sitecore StackExchange site related to disable Full-Publish option in Sitecore Content Editor for all the Editors access the Content Editor, including Administrator users.

Refer original question http://sitecore.stackexchange.com/questions/2763/how-to-prevent-site-publishing-for-everyone/2766#2766




So, basically question was that hide the "Publish site" option for all the users including Sitecore Administrators, from Content Editor.

There were some good suggestion/answers and a suggestion that I didn't agree.

One option was to set permission on menu item in Core database (i.e. /sitecore/content/Applications/Content Editor/Menues/Publish) will not solve this issue since permission will not effect Administrator users.

 Another option suggested was to delete the Full publish menu item from Sitecore Core database (i.e. /sitecore/content/Applications/Content Editor/Menues/Publish). If there is no other way, this is the final option.

UPDATE:
I learned today by a Sitecore friend (Kamruz) that there is another way to achieve this. That is by using Sitecore Rules Engine. You can refer following post for more info
http://stackoverflow.com/questions/37659935/restrict-sitecore-publishing/37691414#37691414


I had a look into this and created a custom Sitecore command to provide more flexible option for this issue.

First I looked into the Sitecore code related to system:publish command which was associated with this "Site publish" menu item and adjust it to support few options which can be changed using config setting.

Basically this will provide you with a Sitecore setting which you can adjust by changing config include file, with options to

  1. Run the default sitecore publishing operation
  2. Display a warning message and ignore the publishing
  3. Hide the menu item from Content Editor

How to Configure the Custom Command

Step 1:

Copy the code dll (i.e. SitecoreFootsteps.Modules.CustomEditorFullPublishOption.dll file) into <website_root>/bin folder

Code : https://github.com/chaturangar/sitecore-footsteps/blob/master/SitecoreFootsteps.Modules/SitecoreFootsteps.Modules.CustomEditorFullPublishOption/CustomCommand/CustomFullPublish.cs

Step 2:

Place the following Config include file in your includes folder

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
  <sitecore>
    <commands>
      <command type="SitecoreFootsteps.Modules.CustomEditorFullPublishOption.CustomCommand.CustomFullPublish,SitecoreFootsteps.Modules.CustomEditorFullPublishOption" name="scfootsteps:customfullpublish"/>
    </commands>
    <settings>
      <!-- values : 
        enabled : works as default sitecore publishing
        disabled : display warning message and doesn't trigger publishing
        hidden : hide the full publish option
        -->
      <setting name="SitecoreFootsteps.EditorFullPublishOption" value="enabled" />
    </settings>
  </sitecore>
</configuration>


Step 3:

Adjust the publish menu item in Core database to point to newly define custom command

Open "/sitecore/content/Applications/Content Editor/Menues/Publish" item in Core database from Content Editor
Change "Message" field value to "scfootsteps:customfullpublish"




Thats it. Custom publish command is now configured and should be working.



Following are the senarios and how command behaves


Senario 1:  SitecoreFootsteps.EditorFullPublishOption setting set to "enabled"

This will work as Default Sitecore full-publish option




Senario 2: SitecoreFootsteps.EditorFullPublishOption setting set to "disabled"

This will display a warning message and skip the full-publish when "Site publish" menu item is clicked




Senario 3: SitecoreFootsteps.EditorFullPublishOption setting is set to "hidden"

This will hide the "Site publish" option from Content Editor menu




You can find the code shared in my github repository :
https://github.com/chaturangar/sitecore-footsteps/tree/master/SitecoreFootsteps.Modules/SitecoreFootsteps.Modules.CustomEditorFullPublishOption

Happy Sitecore!!

Tuesday, November 15, 2016

How to Add Items into a Queue and Package them Together

Recently, one of my previous colleagues told me that he is planning to create a module which can be used to stack-up items in to a list and later create a package from those listed/added items.

But, I remember one of the features showed by Michael West and Adam Najmanowicz in "Sitecore Powershell Extension Workshop" at Sitecore Symposium. That was the possibility first add Sitecore items into a list and later create a Sitecore Package using that list.

The same functionality that my colleague was thinking about.


So,  following is that functionality that you can see in Sitecore Powershell Extension module.


I have Sitecore 8 instance with Sitecore PowerShell Extension 4.2 module (https://marketplace.sitecore.net/en/Modules/Sitecore_PowerShell_console.aspx) installed.


Now when I right-click on an Sitecore Item, in "Scripts" -> "Packaging" menu, you can see, "Start New Package" menu item (refer below image).




Then, when I right-click on any other Sitecore Item, it will provide "Add Item to Package" option. This option will allow you to add new items to the above created package.




And if you wish to create a new package, ignoring the previous created package, then you can select "Start New Package" option in the menu.
Please note that, this will dump your previous created package and the items added to it from memory and will create a new Package fresh.


When you are done with selecting items into package, you can click "Download Package" option in the menu. It will provide you with the Sitecore Package information dialog box.


and once submitted create and allow you to download the package




Other than those options, Sitecore Powershell Extension comes with other useful functionalities.

"Add Tree to Package" - will add the full sub-tree underneath the selected item into package
"Quick Download Tree as Package" - will directly download selected item and its sub-items as an sitecore package (Note that this option will not consider any Packages you have started. It just works on currently selected item and its sub-items)

It will turn out to be a very useful feature in your day-today Sitecore work and surely will save some time.

November Meetup - 2016 - Sitecore User Group Sri Lanka

Its time for another Sitecore Meetup in Sri Lanka. "November Meetup - 2016"

This time, we are going to focus more on the basics of .NET development and UI/UX development. Though these topics are not directly related with Sitecore, those are great knowledge to have for any Sitecore developer.




Our presenters for this meetup is Pasan Samarakoon and Lakshman Palitha.

In the first session, Pasan will talk about new ASP.NET Core framework. Pasan is a Microsoft Certifield Developer with over 5 years of .NET development experience and currently works as a Senior Software Engineer (Sitecore) at Codehouse Ltd, one of the Sitecore Partners in Sri Lanka.

In the second session, Lakshman will talk about UI and UX development. Lakshman is a web developer with over 6 years of web design and development experience. He currently works as a Senior UI Developer at Codehouse Ltd.


Meetup Link : https://www.meetup.com/sugsrilanka/events/235421992/
Facebook Event : https://www.facebook.com/events/1690177041298296/


Saturday, October 1, 2016

Sitecore Latest Release - Sitecore 8.2 - Sitecore User Group Sri Lanka

For the September Meetup of Sitecore User Group Sri Lanka (SUGSL), I did a presentation about the Sitecore latest release, which is Sitecore 8.2



This release was highly anticipated and includes lot of major improvements to existing tools and progrmming methodologies used as well as newly added tools.

You can find the Slides of the presentation below.




My First Experience with Sitecore Express Migration Tool with Sitecore 8.2

With the release of Sitecore 8.2 version, a new tool was also release. It is "Sitecore Express Migration Tool". As the name suggests, it facilitates upgrade of Sitecore versions.

Since this is new, I thought of give it a go.. with very basic installations..


Initial Websites
Source : Sitecore 7.2 rev. 151021 with Launch Sitecore Installe
Target: Sitecore 8.2 rev. 160729

Sitecore Express Migration Download and Documentation
https://dev.sitecore.net/Downloads/Express_Migration_Tool/10/Express_Migration_Tool_10_Initial_Release.aspx


Steps


Step 1: Specifying input parameters




Step 2 : Selecting which content to be migrated






Step 3 : Analyzing



Step 4 : Comparison results and Provide which items/files should be migrated


Step 5 : Migration & Summary



























Nothing fancy.. just a walk-through of the steps off course...

Saturday, August 27, 2016

Learning Resources - Sitecore Mobile SDK for Xamarin

Recently I was searching for more learning materials on Sitecore Mobile SDK for Xamarin and was able to found lot of information which I have not come across earlier..

So, I thought I will share those links with you, in case someone find it useful..


Mobile SDK Source and Nuget packages


Sitecore Mobile SDK for Xamarin - Xamarin Website
https://components.xamarin.com/gettingstarted/sitecore.mobile.sdk - Xamarin Website

https://github.com/Sitecore/sitecore-xamarin-pcl-sdk - Sitecore


dev.sitecore.net

https://dev.sitecore.net/Downloads/Sitecore_Mobile_SDK_for_Xamarin/1_0/Sitecore_Mobile_SDK_10_for_Xamarin.aspx


doc.sitecore.net


https://doc.sitecore.net/mobile_sdk_for_xamarin/managing_content_with_the_mobile_sdk


Advance Blog series by Sitecore MVP Goran




Blogs by Sitecore MVP Chaturanga (Me - SitecoreFootstep :-D )




Friday, August 19, 2016

SUGCON-EUROPE 2016 by Sitecore Footsteps Eye

I recently participated for Sitecore User Group Conference Europe 2016 which was held in Copenhagen, Denmark. 

It was a great event with lot of knolwedge shared and great Sitecore community participation.

I traveled from Colombo, Sri Lanka and reach Copenhagen on Saturday (23rd April).

On Sunday, met lot of Sitecore Commuinty experts/MVPs/friends and had a boat ride to see Copenhagen.


Event started Monday (25th April) with lot of Sitecore community participating not only from the Europe, but globally.




Unicorn by Kam Figy

Sitecore MVP Awards




Met an Old Friend - Jon Kasimir from IFS

Sitecore MVP Awards Ceramony


Sitecore Marketing Summit - Copenhagen

Awards for SUGCON-EU Organisers by Pieter

Sitecore Technology MVP 2016 Award

All the Presents & Memories from SUGCON-EU 2016


The End !

Saturday, August 6, 2016

How to Structure Your Xamarin Solution by Adhering to Common .NET Practices - Colombo Xamarin Meetup Presentation

Last month (July 2016) I presented at the Colombo Xamarin Meetup in Sri Lanka, which was the 3rd meetup of the group.

My topic for the meetup presentation was "How to Structure Your Xamarin Solution by Adhering to Common .NET Practices", where we discussed how to use Repository Pattern, Dependency Injection and How to called third party services from apps.

I took the approach of initially having a very simple application with all the code in the code behind file. Then, I showed how step by step you can convert this simple application to use Repository Patter and also apply Dependency Injection (using Autofac DI Container) to minimize the tight coupling of code layers.

Also, we discussed drawbacks of Xamarin Forms default DependencyService approach to implemented platform specific code and how we can use Depencency Injection container (using Autofac) to achieve same functinoality with minimun coupling.

Finally we discussed how we can call third party service API from Xamarin Forms application by taking Sitecore Mobile SDK for Xamarin.


Following are the slide which was used for the presentation




You can find the code that I used for the presentation by following GitHub link




Happy Xamarin! :-)

Friday, August 5, 2016

Xamarin.Forms InitializeContext Does Not Exists In The Current Context Error Due to Title Property in ContentPage tag


I am new to Xamarin.. As a first app with Xamarin I started to develop an cross-platform mobile application to one of my friends project.
After creating a new Xamarin Forms project in Visual Studio and started to add new pages by looking at examples in Xamarin developer website.

But, after some time, I started to receive an issue in my Visual Studio project. The error was, it starts to give "The name 'initializeContext' does not exists in the current context" error.. it comes suddenly and stays..

I tried clean and rebuild the VS project. Also, remove Xamarin.Forms NuGet package folder and restored it. But, anything didn't solve my issue.


But, After looking into xaml pages I remember that I added "Title" property to "ContentPage" nodes..

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"             x:Class="MyFirst.Mobile.App.Pages.HomePage"             Title="Home">

I just tried to remove that property and that is.. Everything started to work again...


Even thought I can see this "Title" property in Xamarin Developer website examples, it sometimes started to return some unexpected results...


So, I hope if this helps someone who faces this same issue in future...

Happy Xamaring... :-)

Monday, July 25, 2016

Presenting at Colombo Xamarin Meetup in Sri Lanka - How to Organize Your Xamarin Solution

At the upcoming meetup organized by Colombo Xamarin Meetup team, I'm presenting "How to Organize Your Xamarin Solution"

http://www.meetup.com/Colombo-Xamarin-Meetup/events/232773783/


In the presentation, I am planing to talk about how to organize your Xamarin Solution by adhering to common .NET practices and Design Pattners.

Also, I will talk about how Xamarin application can talk to third-party SDK and work with them by using Sitecore Mobile SDK for Xamarin.


Hope to See you on Thursday ! :-)



Following is the banner for the meetup created by Colombo Xamarin Meetup team.

Image Credit : Colombo Xamarin Meetup

Thursday, June 16, 2016

How to Setup and Test WhiteLabel-iOS App Provided by Sitecore Mobile SDK Team On Xamarin Studio on Mac

Recently, I need to try out the WhiteLabel-iOS mobile application provided by Sitecore Mobile SDK GitHub repository. Even though it was not hard to setup and test this, I had to solved few minor issue which I thought might help someone in future.

So, following are the steps you need to do in order to setup and run WhiteLabel-iOS mobile app on your Macbook with Xamarin Studio.

Note: I assume that you have already installed Xcode and Xamarin Studio into you Macbook

Step 1: Setup Sitecore instance

In this case, I am using Windows with Parallels software on my macbook. So, I setup Sitecore Habitat website instance in my windows VM with the host name of "habitat.local"


Step 2: Configure access to Sitecore instance from Macbook

You can see full setup instruction of a normal .NET website with access from mac from following url
https://www.getdonedone.com/accessing-your-windows-development-environment-from-osx/

Some of the main steps that I did was,
Disabled the Firewall in Windows
Added the host entry into Macbook /private/etc/hosts file


So, now I can visit "http://habitat.local" from my Macbook Pro.



Step 3: Clone Sitecore Mobile SDK for Xamarin repository

Open a Terminal window and clone the github repo
https://github.com/Sitecore/sitecore-xamarin-pcl-sdk


Step 4: Open WhiteLable-iOS solution from Xamarin Studio and run Simulator

After cloning the github repository, open "/sitecore-xamarin-pcl-sdk/solutions/WhiteLabel-iOS.sln"  solution file from Xamarin Studio and run Simulator

At this point, you will receieve an error message with Simulation failing



Error : /Library/Frameworks/Mono.framework/External/xbuild/Xamarin/iOS/Xamarin.iOS.Common.targets: Error: No installed provisioning profiles match the installed iOS signing identities. (WhiteLabel-iOS)


Solution :
To solve above issue, you need to manuall edit the related .csproj file (i.e. "/sitecore-xamarin-pcl-sdk/app/WhiteLabel/iOS/WhiteLabel-iOS/WhiteLabel-iOS.csproj") and remove following tags from that file
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
Reference :
http://forums.xamarin.com/discussion/39534/cant-build-ios-in-xamarin-studio-5-7-1-through-5-9
http://stackoverflow.com/questions/30724551/no-installed-provisioning-profiles-match-the-installed-ios-code-signing-keys-in


After that, I was successfully able to launch WhiteLabel-iOS app from Xamarin Studio and run Simulator on it.



Step 5: Configure App Settings

As final step, I clicked on the "Edit" icon in top right corner of the application to visit Settings page of the application. There I gave "http://habitat.local" (which is my windows installed Sitecore instance) as my hostname for the website.



Now, I can run the application and test the operations/functionality in that application.


Happy Sitecore + Xamarin !  :-)

Monday, June 13, 2016

Issue While Trying to Add Sitecore Mobile SDK NuGet Packages into Shared Portable Xamarin Project

Recently, I tried to create a new Xamarin Forms solution to test Sitecore Mobile SDK.

First I creating Xamarin Forms solution in Visual Studio.



Then I tried to add following NuGet Package into the Shared Portable Forms project.


Sitecore Mobile SDK for Xamarin NuGet Packages

Once I tried to Install the "Sitecore.MobileSDK.Xamarin" NuGet packages into the project, it failed the installation with following error message.

Error : Could not install package 'Sitecore.MobileSDK.Xamarin 1.0.1'. You are trying to install this package into a project that targets '.NETPortable,Version=v4.5,Profile=Profile111', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author.

I reported this behaviour to the team who handles Sitecore Mobile SDK development and they are very helpful and came back to me with the issue.

Reason for above mention issue was that current Sitecore Mobile SDK for Xamarin build assemblies does not support ASP.NET Core 1.0 yet (as of 13/06/2016).




Sitecore Mobile SDK team will work on this issue and will release assemblies in coming few days.


As a workaround, the team suggested to use their source code and build the libraries locally.

You can find the Sitecore Mobile SDK from following Git repository
https://github.com/Sitecore/sitecore-xamarin-pcl-sdk


NOTE: Adding these Sitecore Mobile SDK NuGet packages into Xamarin Studio does work without any issues.


UPDATE : 25/07/2016
    Sitecore Mobile SDK team has provided a update for there NuGet feeds, which has solved the above mention issue:
        Sitecore.MobileSDK.Xamarin 1.0.2-beta1
        Sitecore.MobileSDK.PasswordProvider 1.0.3-beta1

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 !!