tag:blogger.com,1999:blog-73438549446947157782024-03-12T21:41:45.024-05:00kmacnbamaWelcome to the kmacnbama blog. I am a .NET developer focusing mainly in the C# and Sitecore realm. I am also an aspiring Sitecore MVP.
In my blog I discuss various topics around CMS development, focusing mainly on Sitecore. I have used quite a few CMS (Content Management System) engines to allow users to easily update and organize content.Anonymoushttp://www.blogger.com/profile/12021989354948670382noreply@blogger.comBlogger14125tag:blogger.com,1999:blog-7343854944694715778.post-79793762319704417762017-11-10T15:03:00.001-06:002017-11-10T15:03:12.517-06:00Sitecore Context and Scheduled Task<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-7dM22Y9b3g0/WgYQYyzZhAI/AAAAAAAAICs/mU5mGJN31U4T_KPFb8m44Y1tK7EECNEyQCLcBGAs/s1600/gear.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="255" data-original-width="300" height="169" src="https://1.bp.blogspot.com/-7dM22Y9b3g0/WgYQYyzZhAI/AAAAAAAAICs/mU5mGJN31U4T_KPFb8m44Y1tK7EECNEyQCLcBGAs/s200/gear.png" width="200" /></a></div>
<br />
<br />
<br />
Something I learned today (the hard way) was about the Task Scheduler and the Sitecore context. The context decides which database to use - core or master. <br />
<br />
A little background, I am working on a project where the scheduled tasks of importing content was already set up. <i>Not an excuse, only that for this project, I haven't looked into the scheduled task as of yet.</i><br />
<br />
During a release we saw that a scheduled task actually ran under the core context instead of the usual master context, <span style="color: white;"><span style="background-color: red;">causing the task to fail</span>.</span> <b><i>Why all of a sudden did this happen? </i></b> Our release had nothing to do with the config, nor did it have anything to do with the task scheduler.<br />
<br />
What we found out, the legacy code that the task scheduler runs on, was NOT specifying which context to run under. So timing was the fluke during the release. Let me explain. There are config values of course that tells the task scheduler to run under which database. The out of the box is located in Sitecore.config, it was later updated (as best practice dictates), in a patch file.<br />
<br />
Looking at the: https://DOMAIN/sitecore/showconfig.aspx it showed both the patch file entry and the out of the box core entry for task settings. The core one was set to run every 10 minutes and the custom one (master) was set to run every 5 minutes. Timing was why the task failed because the context switcher, switched to core at some point, and our code never set it back to the intended master context. BIG PROBLEM!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-HrYM8hnLS60/WgYT379mETI/AAAAAAAAIC4/Hute9E1-WsIFxBO_8ZS_5_74KkuYCorngCLcBGAs/s1600/context.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="249" data-original-width="1076" height="147" src="https://4.bp.blogspot.com/-HrYM8hnLS60/WgYT379mETI/AAAAAAAAIC4/Hute9E1-WsIFxBO_8ZS_5_74KkuYCorngCLcBGAs/s640/context.JPG" width="640" /></a></div>
<br />
<br />
So after some research we found a great article on Google from kiranpatils on (https://sitecorebasics.wordpress.com/2014/08/09/scheduled-task-basics/) that stated the best practice.<br />
<br />
<span style="background-color: yellow;">LESSON LEARNED:</span> Always wrap your tasks calls with the intended context with the using command. <br />
<br />
Once we wrapped the code, all was well and life was once again delightful!<br />
<br />
<br />Anonymoushttp://www.blogger.com/profile/12021989354948670382noreply@blogger.com0tag:blogger.com,1999:blog-7343854944694715778.post-85989919525901310342017-10-30T13:56:00.000-05:002017-10-30T15:37:44.860-05:00AMP (Accelerated Mobile Pages) within a Sitecore Site<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-7FLWAPYtyXc/WfeNeYnVzvI/AAAAAAAAIAg/NTDc2h12b2gzkzm8vOEWU5i97bhWNgK9ACLcBGAs/s1600/amp.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="508" data-original-width="900" height="180" src="https://4.bp.blogspot.com/-7FLWAPYtyXc/WfeNeYnVzvI/AAAAAAAAIAg/NTDc2h12b2gzkzm8vOEWU5i97bhWNgK9ACLcBGAs/s320/amp.jpg" width="320" /></a></div>
<a href="https://www.blogger.com/blogger.g?blogID=7343854944694715778" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><br />
So I was tasked with turning the article section of one of the websites I am responsible for into an "ampy" type site. First of all, AMP stands for Accelerated Mobile Pages. It is a very stripped down version of the content that has many strict rules to enable performance of the article to be displayed within a mobile device.<br />
<br />
Some of the rules are:<br />
<br />
<ul>
<li>Cannot embed custom JavaScript</li>
<li>Cannot link to custom JavaScript</li>
<li>Only amp provided JavaScript files can be used</li>
<li>Cannot link to css files</li>
<li>Cannot have inline styles within the markup</li>
<li>Cannot have !important in your custom style section</li>
<li>Image tags need to be represented with <amp-img> instead of <img /></amp-img></li>
<li>Ads must be able to be pulled from a provider that honors amp.</li>
</ul>
<div>
Some of my heartaches included first of all how to get my site to recognize an AMP request. So I plagiarized a great idea from @sitecoreRick at this URL from <a href="https://sitecore.stackexchange.com/questions/1597/how-do-i-implement-accelerated-mobile-pages-amp-with-sitecore" target="_blank">stackexchange</a>. Thanks @sitecoreRick!</div>
<div>
<br /></div>
<div>
I created a device type named AMP. Then I set up a querystring param to recognize when that "device" should be honored. So when the querystring comes in, the AMP device is triggered, thus using the renderings based upon that device of AMP.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-0-3lFQJvJAM/Wfd1reDTzXI/AAAAAAAAIAQ/idBw_v-g6tEqxKBHt4RNsjwFV3GgT4J9ACLcBGAs/s1600/AMP.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="259" data-original-width="281" height="183" src="https://3.bp.blogspot.com/-0-3lFQJvJAM/Wfd1reDTzXI/AAAAAAAAIAQ/idBw_v-g6tEqxKBHt4RNsjwFV3GgT4J9ACLcBGAs/s200/AMP.JPG" width="200" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
Simple, huh...Well in Sitecore as always, that was the most solid piece of this whole pie. The rest was modifying the AMP specific renderings to honor the dictatorship rules of the AMP project.</div>
<div>
<br /></div>
<div>
The next heartache was how to test this AMP response locally. Well thankfully Google Chrome has a plug-in that allows you to test the HTML as you go. Whew! Because I had 67 errors on my first test. </div>
<div>
<br /></div>
<div>
My last errors was converting my hamburger menu to a CSS driven only (no JS) component and that led me to a green button and quite a bit of dancing.</div>
<div>
<br /></div>
<div>
Now we see if the ROI is there for this new(ish) thing called AMP, or is this just another passing web fad...Time will tell!</div>
<div>
<br /></div>
<div>
<br /></div>
<br />
<br />
<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
<br /></div>
Anonymoushttp://www.blogger.com/profile/12021989354948670382noreply@blogger.com0tag:blogger.com,1999:blog-7343854944694715778.post-91569167791767037832017-06-29T16:39:00.004-05:002017-06-29T16:39:38.153-05:00Does your Sitecore site need professional help?<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif;">To be clear, Sitecore is an amazing tool…If implemented correctly. In the implementations, I have seen and been a part of, there are some good implementations and wow there are some bad ones. </span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif;">Here are some signs that your Sitecore site, may need some professional help.</span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif;"><b>Flat Sitecore tree:</b></span></div>
<div class="MsoNormal">
</div>
<ul>
<li><span style="font-family: Verdana, sans-serif;">It is suggested that you organize your content in which makes sense to the content contributors as well as the structure of your site. If any tree node has more than 100 items in it, then performance will decrease significantly.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Solution: Try to organize your site early and often, working with your dev team to ensure site stability. Also try bucketing, it was introduced a few versions back and it is truly an amazing way to find content as well as keep the performance intact.</span></li>
</ul>
<br />
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif;"><b>Use of webforms:</b></span></div>
<div class="MsoNormal">
</div>
<ul>
<li><span style="font-family: Verdana, sans-serif;">The webforms methodology is slowly (most say quickly) dying off in the .NET world. It is heavy on the backend, as well as it is very difficult to handle session state appropriately. Finding support will and already is tougher and tougher to find as time goes on.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Solution: Convert to MVC. Sitecore has really adopted the MVC methodology and the newer the versions, the better it has become.</span></li>
</ul>
<br />
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif;"><b>Minimal renderings (or Sub-Layouts):</b></span></div>
<div class="MsoNormal">
</div>
<ul>
<li><span style="font-family: Verdana, sans-serif;">This really keeps the site from being flexible without always having to involve development. </span></li>
<li><span style="font-family: Verdana, sans-serif;">Solution: Smaller renderings allow for sections of the site to be built like a puzzle. This also allows certain sections of the site to have little visible components as needed for mini-sites or campaigns.</span></li>
</ul>
<br />
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif;"><b>Limited usage of the Sitecore datasource feature:</b></span></div>
<div class="MsoNormal">
</div>
<ul>
<li><span style="font-family: Verdana, sans-serif;">This typically keeps a rendering from being dynamic and can mean some renderings are not reusable. </span></li>
<li><span style="font-family: Verdana, sans-serif;">Solution: When creating renderings, you should always make them flexible and reusable – while towing the line of not being too complex for the Content Authors. The use of a datasource to drive which content is to be displayed for the rendering is a way to reuse the rendering without hard-coding the source. </span></li>
</ul>
<br />
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif;"><b>Repeated template fields:</b></span></div>
<div class="MsoNormal">
</div>
<ul>
<li><span style="font-family: Verdana, sans-serif;">Templates are just like little data table structures. If you repeat data fields over and over in different data, then you will have duplicated data structures throughout your site. Maintaining this becomes increasingly more difficult as it continues to grow.</span></li>
<li><span style="font-family: Verdana, sans-serif;">Solution: Practice good template inheritance. For instance, if you have a title field, create a titles_base and every custom template that requires a title will just inherit the titles_base template. </span></li>
</ul>
<br />
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="MsoNormal">
<b><span style="font-family: Verdana, sans-serif;">Bonus: </span><span style="font-family: Verdana, sans-serif;">If you are on version 7.5 and below</span></b></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif;">Eventually support will end with older versions from Sitecore. This means the main response would be to undergo an upgrade. It will become more difficult to find specific expertise on the limitations of the older versions.</span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif;">For more information: here is an interesting read:</span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif;"><a href="https://www.cmsbestpractices.com/sitecore-best-practices/">https://www.cmsbestpractices.com/sitecore-best-practices/</a></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif;">Thanks! </span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif;"><a href="https://twitter.com/kmacnbama" target="_blank">@kmacnbama</a></span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif;">Sitecore Professional since 2009 and aspiring Sitecore MVP</span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
Anonymoushttp://www.blogger.com/profile/12021989354948670382noreply@blogger.com0tag:blogger.com,1999:blog-7343854944694715778.post-79573422313299123282016-11-23T15:28:00.000-06:002016-11-23T15:41:46.648-06:00Enterprise Service Bus (ESB) within an environment that includes Sitecore<h2>
<span style="font-family: "arial" , "helvetica" , sans-serif;">How would/could an Enterprise Service Bus (ESB) work within
an environment that includes Sitecore?</span></h2>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;">So on #slack I had a great conversation with another
Sitecore genius. They are going down the road of implementing a service bus
into their landscape. So I took that
conversation and thought I would blog about it.
<o:p></o:p></span></div>
<div class="MsoNormal">
<b><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></b></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>First of all, the definition of an ESB:</b><br />
<span style="line-height: 107%;">An
enterprise service bus (ESB) is a software architecture for middleware that
provides fundamental services for more complex architectures. For example, an
ESB incorporates the features required to implement a service-oriented
architecture (SOA). In a general sense, an ESB can be thought of as a mechanism
that manages access to applications and services (especially legacy versions)
to present a single, simple, and consistent interface to end-users via Web- or
forms-based client-side front ends.<br />
<i><span style="font-size: x-small;">(<a href="http://searchsoa.techtarget.com/definition/enterprise-service-bus">http://searchsoa.techtarget.com/definition/enterprise-service-bus</a>)</span><o:p></o:p></i></span></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>Layman’s terms:</b> A tool that can centralize all or some service
requests for one or more consumers from the service's source system.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Sitecore comes with a plethora of services via a great API
suite. Sitecore has its own data
dictionary that may align with what your corporation needs or not. Sitecore APIs for the most part mainly
touches the Sitecore landscape. Granted
the pipeline customization ability is fantastic to touch other IT assets, but
for arguments sake, out of the box Sitecore APIs really only affect Sitecore “stuff”.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;">In many of my implementations of CMSs (especially Sitecore –
because it is supreme), the CMS is only one piece of the pie in each
environment. To tie all of the IT assets
together most go with a design pattern that involves an ESB. </span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Now this is where the meat of this blog
begins.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>Problem:</b></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Let’s say we have a custom CRM, an Ecommerce platform, and a
Tic-Tac toe score keeping system. And
most importantly your Sitecore CMS. Many
of those systems have exposed services for reusability and API
capabilities. These services can have
versions, different contracts, etc that have different data models to adhere to. How do we solve this potential traffic jam?<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>Solution:</b></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Your options:</span></div>
<div class="MsoNormal">
</div>
<ol>
<li><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;">Keep track of it in your head (please retire, and enjoy your senile mind-hood which you have probably entered into at this point). Problem of a 1 to 1 contract for each function is needed from source system to consumer exists.</span></li>
<li><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;">Keep up with them in a spreadsheet. (Usually it is recommended that after 50 services – it’s time to mature up a bit in your architecture). Problem of a 1 to 1 contract for each function is needed from source system to consumer exists.</span></li>
<li><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;">Invest in an ESB to be the central hub. The good ones come with a service registry to keep track of all endpoints and their respective versions. The ESB usually comes with a translation and queuing layer as well for data model translation and queuing. Problem of a 1 to 1 contract for each function is needed from source system to consumer goes away.</span></li>
</ol>
<br />
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"></span></div>
<div>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>Here is an example of #1 and #2 in play...</b></span></div>
<div>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-grl_7gqO6lA/WDYItjsrToI/AAAAAAAAEMQ/rcjwA8EHp-wBEFmJ6GbhDtom-3WCgWsFwCLcB/s1600/bad-design.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="196" src="https://2.bp.blogspot.com/-grl_7gqO6lA/WDYItjsrToI/AAAAAAAAEMQ/rcjwA8EHp-wBEFmJ6GbhDtom-3WCgWsFwCLcB/s400/bad-design.JPG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>Here is an example of #3</b></span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: "arial" , "helvetica" , sans-serif; margin-left: 1em; margin-right: 1em;"><img border="0" height="260" src="https://4.bp.blogspot.com/-Rr8iCaUi6_E/WDYHwnQoOyI/AAAAAAAAEMI/dahmMnLYwjcA_VmxUOGZgHhO1HNCIuSrACLcB/s400/esb-design.JPG" width="400" /></span></div>
<div>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Keep in mind, the ESB is a tool like any ole hammer. Unless you know how to use it, it could be
just another thing to nail a nail in. </span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Also, this tool if too many people have access needs a bit of governance
to ensure spaghetti doesn’t start to take place. I like to eat spaghetti, but I don’t like to
work with it all the time.</span><o:p></o:p></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Whatever your design strategy is, I hope you follow the KISS principle. Keep It Simple Silly!</span></div>
</div>
Anonymoushttp://www.blogger.com/profile/12021989354948670382noreply@blogger.com1tag:blogger.com,1999:blog-7343854944694715778.post-19419540867142834372016-07-19T12:43:00.003-05:002016-07-19T16:03:33.232-05:00Moving Sitecore items from one system to another<br />
<span style="font-family: "verdana" , sans-serif;">Steps on how to move Sitecore items from one system to another...Remember to use the desired database for this.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif; font-size: x-large;"><b>Source System</b></span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Select the content from the "Source System". to do this go to the Sitecore desktop and click the "Start Menu" > "Development Tools" > "Package Designer"</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-GAD0sLWKlPI/V45hrAbtdgI/AAAAAAAADLg/DygFY7e2ImwgU_Ty-rTkyptmu_fkkCT0gCLcB/s1600/buildPackage.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "verdana" , sans-serif;"><img border="0" height="173" src="https://4.bp.blogspot.com/-GAD0sLWKlPI/V45hrAbtdgI/AAAAAAAADLg/DygFY7e2ImwgU_Ty-rTkyptmu_fkkCT0gCLcB/s320/buildPackage.JPG" width="320" /></span></a></div>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Enter the name of the package, and click the "Items Statically".</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-KAj8EuYVCs8/V45iloLHxMI/AAAAAAAADLo/v0Sv6vknfgUszRS8Q4l9m0FruFJW8ingQCLcB/s1600/buildPackage2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "verdana" , sans-serif;"><img border="0" height="129" src="https://2.bp.blogspot.com/-KAj8EuYVCs8/V45iloLHxMI/AAAAAAAADLo/v0Sv6vknfgUszRS8Q4l9m0FruFJW8ingQCLcB/s320/buildPackage2.JPG" width="320" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif;">Select the tree items you desire, then select either "Add with Subitems" or "Add Item". The click "Next"</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-LtZqXgd6J9M/V45jRv7n6vI/AAAAAAAADL0/6OZ4AkGJv2oszYu6FuD0BXK7foqGA9NIgCLcB/s1600/buildPackage3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "verdana" , sans-serif;"><img border="0" height="320" src="https://1.bp.blogspot.com/-LtZqXgd6J9M/V45jRv7n6vI/AAAAAAAADL0/6OZ4AkGJv2oszYu6FuD0BXK7foqGA9NIgCLcB/s320/buildPackage3.JPG" width="238" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif;">Enter the Name in the "Source System" field</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-myvIWccjBsw/V45jrCGh9mI/AAAAAAAADL4/iJ4pH4xDVYgdPm4UnT1n4Ym_JDg032zqwCLcB/s1600/buildPackage4.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "verdana" , sans-serif;"><img border="0" height="115" src="https://2.bp.blogspot.com/-myvIWccjBsw/V45jrCGh9mI/AAAAAAAADL4/iJ4pH4xDVYgdPm4UnT1n4Ym_JDg032zqwCLcB/s320/buildPackage4.JPG" width="320" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif;">After selecting Next and Close. At the main window, select "Generate Zip". This is where we create the downloadable file for the target system.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-5dN5WxsKp0M/V45kTOoJMqI/AAAAAAAADMA/fTzZBbZn_r8_TFTddwTWwAQqbrliAyI6QCLcB/s1600/buildPackage5.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "verdana" , sans-serif;"><img border="0" src="https://4.bp.blogspot.com/-5dN5WxsKp0M/V45kTOoJMqI/AAAAAAAADMA/fTzZBbZn_r8_TFTddwTWwAQqbrliAyI6QCLcB/s1600/buildPackage5.JPG" /></span></a></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif;">Enter the name desired, and click next and you will see a download icon. Select that icon and you will now have on your local machine, the zip file with your Sitecore items.</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<b><span style="font-family: "verdana" , sans-serif; font-size: x-large;"><br /></span></b></div>
<div class="separator" style="clear: both; text-align: left;">
<b><span style="font-family: "verdana" , sans-serif; font-size: x-large;">Now to the Target System</span></b></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif;">From the Sitecore desktop, select the "Start Menu" > "Development Tools" > "Installation Wizard"</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-bgBd9-Sanxg/V45lSBQjo-I/AAAAAAAADMM/Cvuz6rttoqIO-XOttj4iR8k6WWWY3iEDQCLcB/s1600/buildPackage6.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "verdana" , sans-serif;"><img border="0" height="175" src="https://3.bp.blogspot.com/-bgBd9-Sanxg/V45lSBQjo-I/AAAAAAAADMM/Cvuz6rttoqIO-XOttj4iR8k6WWWY3iEDQCLcB/s320/buildPackage6.JPG" width="320" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif;">Select "Upload Package". This will allow you to find the downloaded zip file from the previous steps and upload that zip file.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-LdP5-uZTk90/V45lzXLxsTI/AAAAAAAADMQ/MDWyQcqrEmUF6spGkayoiWa95s9lLSj8QCLcB/s1600/buildPackage7.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "verdana" , sans-serif;"><img border="0" height="158" src="https://4.bp.blogspot.com/-LdP5-uZTk90/V45lzXLxsTI/AAAAAAAADMQ/MDWyQcqrEmUF6spGkayoiWa95s9lLSj8QCLcB/s320/buildPackage7.JPG" width="320" /></span></a></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif;">Once uploaded, choose the package, then remember to not choose to restart anything. Once you are done, navigate to the location in your tree to validate that the package did indeed upload as desired.</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<br />Anonymoushttp://www.blogger.com/profile/12021989354948670382noreply@blogger.com0tag:blogger.com,1999:blog-7343854944694715778.post-45940095723209087562016-06-14T15:58:00.000-05:002016-06-14T18:20:33.944-05:00SEO and Friendly URLsRemember the days where the links were structured like so:<br />
<br />
<b>http://www.somedomain.com?pageID=12</b><br />
<br />
This made it difficult for Google and other Search engines to properly find and title their search results.<br />
<br />
So you saw URLSs turning into this:<br />
<b>http://www.somedomain.com/article/this-is-much-better</b><br />
<br />
NOW, when the SEO algorithms and magic gears and a little bit of pixie dusts runs, then the pages are much easier to find and store for future searches.<br />
<br />
This is simply applying a friendly URL instead of the ugly "pageID=12".<br />
<div>
<br /></div>
<b>Sitecore</b> and <b>WordPress</b> offers that as a part of the package when it comes to Friendly URLs. Every time a new piece of content is created, it turns the title of the content into a the URL (replacing the URL with dashes). All the more reason to gravitate to one of these WCM systems.<br />
<br />
Try it, you will see your SEO results shoot through the roof!<br />
<br />
Enjoy!Anonymoushttp://www.blogger.com/profile/12021989354948670382noreply@blogger.com0tag:blogger.com,1999:blog-7343854944694715778.post-44597456004396533732016-06-14T15:47:00.003-05:002016-06-14T16:18:50.146-05:00Rules In SEOIf you want to build a successful business on the Internet, you can spend as much money as you can afford on a Google AdWords campaign and other forms of advertising. However, it has been proven in the Search Engine Marketing industry that at least 40% of the time, your clients will find you through Google and other search engines.<br />
<br />
This fact alone makes it very important for any serious Internet business owner to learn the basics of Search Engine Optimization. If you can’t do it yourself, at least you can’t be left in the dark on the methodologies if you decide to hire an SEO specialist.<br />
<br />
And just what are these SEO basics?<br />
<br />
<b>Website Design and Navigation</b><br />
<br />
These are the most important aspects of SEO. A website that succeeds with both search engines and website visitors are those that are easily navigated and are designed in simple HTML. When these two elements are combined, they make up for a good visitor experience and easy crawling by the search engine spiders.<br />
<br />
Some of the things to avoid in website design are dynamic page and URLs, frames, flash elements, Java script, and image maps for web page interlinking or sitemap generation.<br />
<br />
<b>Keyword research</b><br />
<br />
SEO is based on the premise that an unknown number of Internet users are searching for a host of things on Google by typing in search terms called keywords. If you want to know the popular keywords that is appropriate to the business your website represents, research exhaustively on keywords.<br />
<br />
In deciding what keywords to use, there is one rule: “the more specific the better”. If you own a dating site, for example, “true love” or “soul mate” might be too broad. Run the keywords on Overture and Wordtracker. You might find keywords that are more appropriate to your site like “True love for marriage”, perhaps?<br />
<br />
<b>Keyword Density and Relevance</b><br />
<br />
Search engines, specifically Google, determine what websites go to the top of your search based on relevance. This is determined in part by keyword density, or how many instances a keyword appears in the web page’s content.<br />
<br />
Write your content according to density. Do not spam, though. Aside from sounding gibberish, spam content also gets flagged by search engines and websites containing them are removed from the index.<br />
<br />
<b>Relevance and Inbound Links</b><br />
<br />
Search engines also consider inbound links to your site (specifically, their number and quality) to determine your website’s relevance to a keyword.<br />
<br />
Make time to find the sites related to your website. Also make sure that the hyperlink to your site found on the other website has your keywords in them.<br />
<br />
Don’t scoop and link though. Google once penalized websites that linked with 200 to 300 other sites per month.<br />
<br />
<b>An Opportunity On Each Page</b><br />
<br />
On each page on your website there is actually an opportunity for you to rank for a different keyword each time. Notice how two different pages by the same website are generated for the same keyword. Go ahead and assign different keywords to each. Write and optimize accordingly.<br />
<div>
<br /></div>
Anonymoushttp://www.blogger.com/profile/12021989354948670382noreply@blogger.com0tag:blogger.com,1999:blog-7343854944694715778.post-47293191157684763172016-06-14T15:44:00.003-05:002016-06-14T16:19:03.183-05:005 Ways to Make your Website StickyA lot of successful websites depend on returning visitors to account for a major part of their traffic. Returning visitors are easier to convert into paying customers because the more often they return to a site, the more trust they have in that site. The credibility issue just melts away. Hence, keep your visitors coming back to your site with the following methods:<br />
<br />
<b>1) Start a forum, chatroom or shoutbox</b><br />
<br />
When you start a forum, chatroom or shoutbox, you are providing your visitors a place to voice their opinions and interact with their peers -- all of them are visitors of your site. As conversations build up, a sense of community will also follow and your visitors will come back to your site almost religiously every day.<br />
<br />
<b>2) Start a web log (blog)</b><br />
<br />
Keep an online journal, or more commonly known as a blog, on your site and keep it updated with latest news about yourself. Human beings are curious creatures and they will keep their eyes glued to the monitor if you post fresh news frequently. You will also build up your credibility as you are proving to them that there is also a real life person behind the website.<br />
<br />
<b>3) Carry out polls or surveys</b><br />
<br />
Polls and surveys are other forms of interaction that you should definitely consider adding to your site. They provide a quick way for visitors to voice their opinions and to get involved in your website. Be sure to publish polls or surveys that are strongly relevant to the target market of your website to keep them interested to find out about the results.<br />
<br />
<b>4) Hold puzzles, quizzes and games (Gamification)</b><br />
<br />
Just imagine how many office workers procrastinate at work every day, and you will be able to gauge how many people will keep visiting your site if you provide a very interesting or addicting way of entertainment. You can also hold competitions to award the high score winner to keep people trying continuously to earn the prize.<br />
<br />
<b>5) Update frequently with fresh content</b><br />
<br />
Update your site frequently with fresh content so that every time your visitors come back, they will have something to read on your site. This is the most widely known and most effective method of attracting returning visitors, but this is also the least carried out one because of the laziness of webmasters. No one will want to browse a site that looks the same over ten years, so keep your site updated with fresh bites!Anonymoushttp://www.blogger.com/profile/12021989354948670382noreply@blogger.com0tag:blogger.com,1999:blog-7343854944694715778.post-66527024563848179382016-06-14T15:40:00.001-05:002016-06-14T16:19:13.426-05:00The Importance of a SitemapA sitemap is often considered redundant in the process of building a website, and that is indeed the fact if you made a sitemap for the sake of having one. By highlighting the importance of having a well constructed sitemap, you will be able to tailor your own sitemap to suit your own needs.<br />
<br />
<b>1) Navigation purposes</b><br />
<br />
A sitemap literally acts as a map of your site. If your visitors browses your site and gets lost between the thousands of pages on your site, they can always refer to your sitemap to see where they are, and navigate through your pages with the utmost ease.<br />
<br />
<b>2) Conveying your site's theme</b><br />
<br />
When your visitors load up your sitemap, they will get the gist of your site within a very short amount of time. There is no need to get the "big picture" of your site by reading through each page, and by doing that you will be saving your visitors' time.<br />
<br />
<b>3) Site optimization purposes</b><br />
<br />
When you create a sitemap, you are actually creating a single page which contains links to every single page on your site. Imagine what happens when search engine robots hit this page -- they will follow the links on the sitemap and naturally every single page of your site gets indexed by search engines! It is also for this purpose that a link to the sitemap has to be placed prominently on the front page of your website.<br />
<br />
<b>4) Organization and relevance</b><br />
<br />
A sitemap enables you to have a complete bird's eye view of your site structure, and whenever you need to add new content or new sections, you will be able to take the existing hierarchy into consideration just by glancing at the sitemap. As a result, you will have a perfectly organized site with everything sorted according to their relevance.<br />
<br />
From the above reasons, it is most important to implement a sitemap for website projects with a considerable size. Through this way, you will be able to keep your website easily accessible and neatly organized for everyone.Anonymoushttp://www.blogger.com/profile/12021989354948670382noreply@blogger.com0tag:blogger.com,1999:blog-7343854944694715778.post-5557800388663821512016-06-14T09:01:00.003-05:002016-06-14T16:19:34.635-05:00Sitecore PublishingSitecore uses three databases. Core, Master, and Web.<br />
<br />
The <b>Core </b>is mainly to store the entire system's information.<br />
<br />
The <b>Master </b>hosts all versions of all content, templates, layouts, etc. Everytime you save, you are saving to the Master. If you never publish, then the site visitor will never see the latest change.<br />
<br />
The <b>Web </b>host all of the published content, templates, media, layouts, etc. This is ultimately what the site visitors will see through the eyes of the website.<br />
<br />
There are several publishing techniques within Sitecore.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-Irv-vDPC3JM/V2AL4iSJshI/AAAAAAAACos/JXDQUWOxl2IBDJXDtszpaXjIc1biNcm0gCLcB/s1600/publish.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="220" src="https://1.bp.blogspot.com/-Irv-vDPC3JM/V2AL4iSJshI/AAAAAAAACos/JXDQUWOxl2IBDJXDtszpaXjIc1biNcm0gCLcB/s320/publish.JPG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>Smart Publish: </b> Sitecore allows this feature to lessen the time of the publish by looking only for the items that have changed. For example, anything that is different from the Master DB and the Web DB. </div>
<div class="separator" style="clear: both; text-align: left;">
<b><br /></b></div>
<div class="separator" style="clear: both; text-align: left;">
<b>Republish:</b> Publishes everything at that level</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>Publish Subitems: </b>If the selected item is a parent to any content, then the children will get published as well.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<b>Publish Related Items: </b>If the selected item has other like dependencies, then those items would be published as well.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
If you have multiple languages on your site, Sitecore handles that appropriately with the <b>Publishing languages section</b>.</div>
<br />
Finally the <b>Publishing targets</b> section allows you to publish to the desired web DB. If you only have one web DB, then only one shows. If you have a web farm, then more items will be available here.<br />
<br />
I hope you have found this helpful.<br />
<br />
Enjoy!Anonymoushttp://www.blogger.com/profile/12021989354948670382noreply@blogger.com0tag:blogger.com,1999:blog-7343854944694715778.post-16394171502925223722016-06-14T08:44:00.001-05:002016-06-14T16:19:46.024-05:00Sitecore Rendering CachingUltimately a CMS is in place to give a UI presence to a content contributor or admin to have the flexibility to change the site with minimal (to none at all) support from developers. Having that said, even caching (which would more than likely be geared toward the admin type users), should still be configurable without the need of developers.<br />
<br />
Sitecore renderings have the ability to be cached in one of two ways, either through code, or through the Sitecore UI on the rendering itself. Let me explain.<br />
<br />
<h2>
<b>Through Code:</b></h2>
<span style="font-size: x-small;">@Html.Sitecore().Rendering(<b>RENDERING-ID</b>, </span><span style="font-size: x-small;">new { Cacheable = </span><b style="font-size: small;">true</b><span style="font-size: x-small;">, VaryByData = </span><b style="font-size: small;">true</b><span style="font-size: x-small;">, CacheKey = "</span><b style="font-size: small;">ANYTHING</b><span style="font-size: x-small;">" })</span><br />
<br />
This really forces caching, and the admins have to rely on the support team to reset the app pool to turn off caching, or run some sort of utility. Seems to be more obtrusive on the admin's day and would require more coffee.<br />
<br />
<h2>
However through the Sitecore system:</h2>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-zZE58TLGjNI/V2AJJ6OoT4I/AAAAAAAACog/22x1xL1U-swskVGFgi2gynBG6hTxJTRTgCLcB/s1600/caching.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://4.bp.blogspot.com/-zZE58TLGjNI/V2AJJ6OoT4I/AAAAAAAACog/22x1xL1U-swskVGFgi2gynBG6hTxJTRTgCLcB/s320/caching.JPG" width="140" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: x-small;">@Html.Sitecore().Rendering(</span><b style="font-size: small;">RENDERING-ID)</b></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
This gives the admin the ability to login to Sitecore and check the boxes appropriate to the need and the site reacts accordingly. Only one cup of coffee for the admin person on this particular morning.<br />
<br />
So do your admins a favor and put the power in their hands, which in the end allows the developers to move onto bigger and brighter strategies.<br />
<br />
Enjoy!Anonymoushttp://www.blogger.com/profile/12021989354948670382noreply@blogger.com0tag:blogger.com,1999:blog-7343854944694715778.post-25223929714621716362016-06-13T08:52:00.002-05:002016-06-14T16:19:58.808-05:00The upgrade from Sitecore 8 to 8.1Recently we just upgraded from Sitecore version 8 to 8.1. <br />
<br />
One major thing to note. It is preferred that all unique configurations be done within the Sitecore patch files, not in the Sitecore config files themselves. Our senior developer mentioned that at anytime you should be able to drop a fresh install's config files (of the same version) in any site and the site should function the same. Your independent, unique configurations should always exist in the patch files.<br />
<br />
Here is a link to the Release Notes for 8.1: (<a href="https://dev.sitecore.net/Downloads/Sitecore%20Experience%20Platform/Sitecore%2081/Sitecore%20Experience%20Platform%2081%20Initial%20Release/Release%20Notes" target="_blank">Click Here</a>)<br />
<br />
Here is a link to the Known Issues thus far: (<a href="https://kb.sitecore.net/articles/750348" target="_blank">Click Here</a>)<br />
<br />
Initial Release Base Page: (<a href="https://dev.sitecore.net/Downloads/Sitecore_Experience_Platform/Sitecore_81/Sitecore_Experience_Platform_81_Initial_Release.aspx" target="_blank">Click Here</a>)<br />
<br />
Good luck in your upgrade, be sure to comment on anything that you may discover along your journey.<br />
<br />
Enjoy!Anonymoushttp://www.blogger.com/profile/12021989354948670382noreply@blogger.com0tag:blogger.com,1999:blog-7343854944694715778.post-35907306459478254372016-06-12T12:56:00.002-05:002016-06-14T16:20:23.185-05:00From Ektron to Sitecore There was a time in which I was employed by an Ektron Platinum partner. I rose through the ranks in which I ultimately became the senior developer on staff. It was up to me to stay up to date with the latest and greatest trends in web development as well as anything Ektron. <br />
<br />
Well like anything else in life and corporations, change happens as well as corporate direction. Off we went to San Francisco to get Sitecore certified. Needless to say the systems are different. And like anyone in any profession learning a new system, one tries to relate the similarities and learn the differences.<br />
<br />
One similarity between the two systems lie in several sections. One in particular are Ektron smart forms and the Sitecore templates. Sitecore templates seem to be the foundation of how data is structured for the content contributor. Templates are set up to ensure data entered by the content contributor is structured in a fashion the coders can add logic around to produce the desired output. Ektron smart forms had that same direction. Structured data to be entered by the content contributor for the developer to add logic around. This type of data also includes configuration values to have the site's behavior configurable.<br />
<br />
One difference is that Ektron had web form controls to developers could drag on an aspx page and add some configuration items and Ektron data would display. Modern Sitecore doesn't however add this feature because it leverages .NET in a more true fashion to allow the developers to create their own fully customizable renderings/sub layouts.<br />
<br />
Between the two systems there are more differences than similarities. Whichever system you decide to work with, I suggest you fully involve yourself in the system to become a true expert. As for me, I am looking deeper into Sitecore and quite frankly I am glad I have. It really gives me the ability to use a true MVC approach and allows unlimited possibilities to which makes our solutions that much more attainable.<br />
<br />
Enjoy!Anonymoushttp://www.blogger.com/profile/12021989354948670382noreply@blogger.com0tag:blogger.com,1999:blog-7343854944694715778.post-63589929801732054062010-07-07T12:19:00.000-05:002016-06-13T09:00:04.303-05:00WelcomeWelcome to the ALWEBGUY blog. I am a .NET developer focusing mainly in the C# realm. In my blog I will be discussing various topics around CMS development, focusing mainly on Wordpress and Sitecore. I use quite a few CMS (Content Management System) engines to allow users to easily update and organize content. <br />
<br />
Thanks again for reading this and hopefully the next time you visit there will be some cool tidbits I have picked up along the way that I will be able to share...Anonymoushttp://www.blogger.com/profile/12021989354948670382noreply@blogger.com0