1

Is there a way to make particular pages not publishable? I know structure groups have that property but if we have to make few pages in a structure group not publishable.

2

3 Answers 3

2

To make a specific Page not publishable you will have to create either an event handler or a custom resolver. Personally I would say an event handler would be the best fit for this.

Here is an example event handler I wrote a while ago to prevent publishing pages that contained the text "do not publish" in the title. This code is using the SDL Tridion 2011 style .Net event system, for your R5.3 system you would have to recreate it using the VB6 event system (or upgrade, which would be a better option, considering you are on an unsupported release).

using System;
using Tridion.ContentManager.CommunicationManagement;
using Tridion.ContentManager.Extensibility;
using Tridion.ContentManager.Extensibility.Events;
using Tridion.ContentManager.Publishing;
using Tridion.Localization;

namespace Example
{
    [TcmExtension("ExampleEventHandlerExtension")]
    public class EventHandler : TcmExtension
    {
        public EventHandler()
        {
            EventSystem.Subscribe<Page, PublishOrUnPublishEventArgs>(PagePublishOrUnpublishAction, EventPhases.Initiated);
        }

        private static void PagePublishOrUnpublishAction(Page page, PublishOrUnPublishEventArgs args, EventPhases phase)
        {
            if (page.Title.ToLower().Contains("do not publish"))
            {
                throw new PublisherException(new LocalizableMessage(Properties.Resources.ResourceManager, "DoNotPublishError", new object[] {page}));
            }
        }
    }
}

Instead of checking on a certain string in the title, you could perhaps add a metadata Schema with a field which has a Publishable property. Then in the event handler you check if that is set (would only work for people who cannot edit that Page, else they can simply remove the metadata property).

3
  • The question specifies Tridion 5.3, Resolvers and TOM .NET Event Systems are not available.
    – Eric Huiza
    Feb 7, 2014 at 15:10
  • Resolvers were introduced in 5.3
    – Nuno Linhares
    Feb 7, 2014 at 15:30
  • Indeed my .Net based event handler would not work for R5.3, but an old fashioned event system could so the same trick, I'll adjust my answer. Feb 7, 2014 at 15:41
2

You have stated that you are aware of this feature with regard to Structure Groups, but have you considered simply cutting and pasting the relevant pages to a structure group where publishing is disabled? This would have an added benefit of making it very clear to everyone which pages were expected to publish and which weren't.

2
  • But cut and paste does not work across the structure groups/folders. It only works within one location. Or is it just for me.
    – user901
    Feb 12, 2014 at 15:11
  • It's just you. :-) You can cut and paste pages across Structure Groups. You have to unpublish first though. Feb 12, 2014 at 19:50
2

To achieve this Use-Case, you need to create a Disable Publishing Template as I mentioned in the How to make page not publishable? answer.

For your quick reference, below are the

Steps to Create a "Disable Publishing" template:

  1. Get the user specific message from the Generic component
  2. Throw an exception with the "User Specific Message"
  3. Message should state that publishing is disabled and why.

Not the answer you're looking for? Browse other questions tagged or ask your own question.