Skip to main content

[Resolved] Sitecore ParseException: End of string expected at position...

Problem: 

I have a line of code that uses Sitecore Fast Query to pull all items + children starting with a site item, like so:

Item[] allItems = db.SelectItems("fast:" + sitecorePath + "//*");

Unfortunately, I would get a Sitecore parsing error at runtime:

ParseException: End of string expected at position...

Turns out Sitecore doesn't like hyphens ('-') in any sitecore path when using fast query, which I have a few distributor sites in a folder which contained hyphens.

Solution:

I create a simple method that resolves a sitecore path to be Sitecore fast query friendly:

            string sitecorePath = "";
            if (siteItem.Paths.FullPath.Contains("-"))
            {
                String[] pathParts = siteItem.Paths.FullPath.Split('/');

                for (int i = 0; i < pathParts.Length; i++)
                {
                    if (pathParts[i].Contains("-"))
                    {
                        sitecorePath += "#" + pathParts[i] + "#";
                    }
                    else
                        sitecorePath += pathParts[i];

                    if (i < pathParts.Length - 1)
                        sitecorePath += "/";
                }
            }
            else
                sitecorePath = siteItem.Paths.FullPath;

Basically, the code adds a "#" at the start/end of any page name with hyphens. For example:

Before:           /Sitecore/content/german-sites/site1
After:               /Sitecore/content/#german-sites#/site1

I hope this helps somebody.

Further Reading:



Comments

Popular posts from this blog

Resolved Sitecore "If you publish now, the selected version will not be visible on the web site" warning

The Problem:   Unable to publish any Sitecore item within a particular site, even out of the workflow. Rather, a warning reads " If you publish now, the selected version will not be visible on the web site " What I've Discovered: I couldn't publish any item in the site, not just one or two I viewed all parent items of the items in question The main home page displayed a different warning " This item will never be published because it's publishable option is disabled " Another sitecore developer reminded me of the standard fields option View --> check standard fields to show all standard page fields Found out that somebody checked Never Publish within the publishing section The Fix: After I unchecked the checkbox and saved the change, I was able to publish again.  :) Conclusion: Looks like another Sitecore user thought the children items would not be affected by this change.  Lesson  learned.

Basic Recursion Example in JavaScript

Problem :  I've been having to write solutions which required some sort of recursion.  The last recursion assignment I had to write was a homework assignment about 10 years ago. I remembered the concept, but forgot how to write it. Solution :  Here’s a simple example of recursion. I start with an array, and after I fire the function, I remove that index from the array, so it shrinks. Once the array is empty, recursion stops.  Pretty straight forward! Code : let books = [ 'Chosen by God', 'Holiness of God', 'Essential Truths', 'Justified by Faith' ]; function readBooks(b){ while (b.length > 0){ console.log('I\'v read ' + b[0]); b.shift(); readBooks(b); } } readBooks(books);