Francesco Gallarotti
Francesco Gallarotti

Reputation: 1227

How to efficiently publish in Sitecore 6.4 items in non-final workflow states?

While items that have reached a final workflow state can be easily published to the WEB database using, for example, a scheduled task that calls PublishManager.PublishSmart, I would like to be able to publish the latest version of all items that are in any workflow state to a different publishing target (for internal preview), essentially bypassing workflow.

What would you recommend to be the most efficient way to perform this, keeping in mind that this needs to happen a few times a day on a schedule and not every time an item is modified and/or changes workflow state?

How would that recommendation change if I changed the requirement by saying that only items that are in some (final and/or not final) specific workflow state (e.g. pending approval and approved) need to be published to the preview publishing target on a schedule?

Upvotes: 1

Views: 608

Answers (3)

Paul George
Paul George

Reputation: 1817

Publish in the context of a site (as defined in web.config under <sites>) that has enableworkflows=false.

Untested, but something like:

using (new SiteContextSwitcher(SiteContextFactory.GetSiteContext("system"))) // workflows not enabled
        {
            var options = new PublishOptions(Context.ContentDatabase, Factory.GetDatabase("web"), PublishMode.Smart, null, DateTime.Now);
            options.PublishingTargets.Clear();
            options.PublishingTargets.Add("internal preview");
            new Sitecore.Publishing.Publisher(options).Publish();
        }

See this answer to the opposite problem!

Upvotes: 1

Jay S
Jay S

Reputation: 7994

You may just want to configure a site that points at the Master database. See this stackoverflow answer on setting up a preview site: Preview site for Sitecore editors

Upvotes: 1

Ben Golden
Ben Golden

Reputation: 1580

See this blog post by Alex Shyba: http://sitecoreblog.alexshyba.com/2010/09/publish-to-pre-production-web-database.html. That workflow provider plus a standard publish agent should get you what you are looking for.

Upvotes: 2

Related Questions