Skip to main content

Updating Sitecore Image alt text

One of the most important conditions of making a site accessible is to make sure that all images on the site have the alt field with some value that describes the image. The simplest update we can make to Sitecore is to have the alt field automatically get the image file name. That way even if content authors forget to fill the alt field, it is pre-filled with the file name. To do this just add $name to the alt field in the standard value of an image
[/sitecore/templates/System/Media/Unversioned/Image/__Standard Values]

This is all good for an future images that gets uploaded to Sitecore. But what about all the existing images. For that we can write a PowerShell script (see below) to get all images in the Sitecore image folder that have empty alt tags. Export that to a csv file.



Next create another csv file that has the image id and the image file name. We can use this to run another script to update the alt tags. If you have some images that are in a different language, I found google translate even allows you to upload documents that get translated. So you could upload only the image alt column in English and have it translated by google to any other language.

Using the below PowerShell script and an updated excel file with the image id and alt text columns, you can update all existing images that have empty alt in your Sitecore instance. You can also manually update this file with updated image names. For this you could ask your marketing department or a content author to help.



I worked on this with Nishkala Panduranga a Sitecore developer on my team. I found this helped our Accessibility score and also our content authors not worry about missing to fill out the alt field. Hope this helps someone else out there. Happy Sitecoreing!




Comments

Popular posts from this blog

Using Okta Authentication for a Sitecore client site

I recently had a project where we had to add a new Sitecore site to an already multi site Sitecore 8.2 Update 7 instance. This new site had to integrate with Okta to manage user authentication. I found many articles online that integrated Okta and Sitecore's admin interface but I could not find one that just integrated Okta with a client Sitecore site.

My first step was to use Okta's available ASP.NET MVC projects on their Dev site and test them out. This worked very well with the first Authenticated method I tried which was WS-Fed. But when I tried to use the same authentication method with a site in Sitecore I got errors in my logs like the following:

Sitecore.Security.Principal.SitecoreIdentity does not contain a definition for Claims

Claims are available in HttpContext.User.Identity but not in Sitecore.Security.Principal.SitecoreIdentity, and since we are using a Sitecore site we could not read the claims. I tried to make claims work in Sitecore using various online articl…

Un Lock Sitecore admin account

There are times when you
- Upgrade Sitecore locally
- Restore databases in your local Sitecore instance.

And you are no longer able to login to the Sitecore admin interface with the default admin username and password b.

When this happens you can unlock the Sitecore admin account and reset the password back to b.

To do this copy this aspx file to your Website\sitecore\admin folder (and overwrite existing file)

Next make sure your local web.config (in the root Website) folder has the following settings
minRequiredPasswordLength="1"
minRequiredNonalphanumericCharacters="0"

Lastly go to the following page
https://YourSitecore.com/sitecore/admin/unlock_admin.aspx



And click the Unlock Administrator button.
That's it, you can now login to your local Sitecore instance.
Happy Sitecoreing!



Async Task .Result or .Wait() not working in MVC web application

I had a piece of async code that worked as a console application in Visual Studio 2015. I had to move this code into my MVC web application.

In the code, basically you pass an ID to an Api and it returns a document corresponding to that ID. The issue was, there needed to be 2 calls to the Api. As part of the first call you pass the ID and the Api returned a filename. You then pass the filename to the second call and it returns the corresponding document.

This worked fine in a console application. But when I tried to port it into a MVC web application it did not work. Frankly async calls work fine in MVC applications, but in instances like mine, I needed the code to be synchronous, since the second call to the Api should only start after the first call returns valid data. I even tried to make the code synchronous, but this just caused my application to hang at the .Result line (code below)


ORIGINAL CODE: var fileName = await obj.PostAsync(); await obj.DownloadFile("fileId=" +…