More in this section

Forums / Developing with Sitefinity / Shared Content in Page Templates

Shared Content in Page Templates

12 posts, 0 answered
  1. Siddesh Kapadi
    Siddesh Kapadi avatar
    239 posts
    Registered:
    09 Oct 2009
    20 Jun 2012
    Link to this post
    Hi Team Telerik,

    How do we add shared content to Page Templates?

    Regards,
    Siddesh Kapadi
  2. Tim
    Tim avatar
    258 posts
    Registered:
    22 Jun 2011
    20 Jun 2012
    Link to this post
    Siddesh,

    Here's a blog post on a work around that will enable this functionality.
  3. Steve
    Steve avatar
    3037 posts
    Registered:
    03 Dec 2008
    20 Jun 2012
    Link to this post
    Also, don't forget to vote for the issue in PITS (lot of good that does anyway, it's already the top voted item by 23 ahead of #2) :/

    **EDIT** Link
  4. Lee
    Lee avatar
    6 posts
    Registered:
    31 Dec 2007
    26 Jul 2012
    Link to this post
    Hello,

    Although it initially appears that solutions works. When you actually try to edit the shared content, the changes are NOT reflected on all the templates using that shared content. Does anybody else have a workaround or suggestion?
  5. Tim
    Tim avatar
    258 posts
    Registered:
    22 Jun 2011
    26 Jul 2012
    Link to this post
    Lee,

    I believe you'll need to republish the template that the content block is on. Until you do that, the change won't take hold.
  6. Lee
    Lee avatar
    6 posts
    Registered:
    31 Dec 2007
    26 Jul 2012
    Link to this post
    Thanks for the reply Tim,

    I tried that. I have 2 templates that are using shared content blocks. When I edit a shared content block on one template and publish it will work for that template. However, the changes are not reflected on the other template that is using that shared content block, even if I republish.
  7. Tim
    Tim avatar
    258 posts
    Registered:
    22 Jun 2011
    26 Jul 2012
    Link to this post
    That's sounds right and it's the major downfall of using this method. You'll need to publish each template that you're using the content block on.

    We've switched to using code to pull in a specific content block and place the content on the page with an asp:Literal. That way, we don't have to worry about issues with using the work around.
  8. Gabe Sumner
    Gabe Sumner avatar
    440 posts
    Registered:
    09 Sep 2007
    23 Oct 2012
    Link to this post
    Resurrecting this thread and I'll summon Jochem and Steve to argue with me.  ;)

    We have templates, and templates can inherit from other templates.  So, for example, if you had a footer that was common to the entire site you could put that into a template and then create numerous sub-templates based off that original template.  This essentially creates "shared content" - content that is shared amongst numerous templates and the entire website.

    With 124 votes this is obviously a big issue (and perhaps that is reason enough), but I'd love to understand a bit more about the use cases everyone is looking to tackle with shared content.

    Thanks,

    Gabe Sumner
    Telerik | Sitefinity CMS


  9. Jochem Bökkers
    Jochem Bökkers avatar
    787 posts
    Registered:
    13 Aug 2007
    24 Oct 2012 in reply to Gabe Sumner
    Link to this post
    Hey Gabe,

    Well there's not much of an argument, you're right its a big issue and Tim's right that its 'broken'  :)

    ---
    1. Create a masterpage called 'parent' and put a content block in the footer and a menu in the header.
    2. Create 5 masterpages which inherit from 'parent' and name them 1-5 and put a content block in the body to identify them.
    3. Create 6 pages, each one utilizing one of the templates.
    4. browse all 6 pages.
    ---

    Everything works as you'd expect it, the footer content block appears on all the pages correctly.
    Now edit the 'parent' masterpage and change the content block and hit publish.

    If you browse all the pages again, you'll see 5 pages still showing the old content, and just one (the one utilizing the parent masterpage) showing the new content. Meaning I'd have to re-open and re-publish every inherited masterpage to get the changes reflected.

    At least that was the issue right up until 5.1.3270 where I last tried it :) Nice sneaky fix there :) But unfortunately .Master changes aren't reflected upon the inherited ones still.


    But that's only one third of the problem, the second part of the problem lies in the content-abilities of content blocks.

    Although both are html-field only by design their functionality is different.
    A template content block, is sort of a 'strict' html-field, where it strips out spans and only stores xhtml valid markup.
    Where as a page or shared content-block can store html5 valid markup and doesn't strip out spans.

    (FYI: The ability to set which contentfilters apply to a contentblock is broken atm)

    Why is this important?

    Let's take an actual example of displaying a company's address. Since its 2012 we want to mark-up our address with some microdata.

    <div itemscope itemtype="http://schema.org/Organization">
      <span itemprop="name">Google.org (GOOG)</span>

    Contact Details:
      <div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
        Main address:
          <span itemprop="streetAddress">38 avenue de l'Opera</span>
          <span itemprop="postalCode">F-75002</span>
          <span itemprop="addressLocality">Paris, France</span>
        ,
      </div>
    </div>


    The thing is, you simply can't. Copy-paste that on a template editor and it won't store it and strips out in a weird fashion.
    Truthfully, the only idiotic way to re-use a marked-up address is to write a usercontrol with that as the markup, save that as a widget and then drag-n-drop it on the templates.

    Here's a quote from a support ticket: 
    "...but the instance of HtmlField in page tempaltes is not affected by the mapped template it will always remain the default html field in sitefinity. This is behaviour done by design as the html field in templates shouldn`t be customized "

    Meaning by design, we're working with a CMS system that forces us to adhere to a 1999 (yes more than a decade ago and in the previous century) standard.


    And the third issue with inherited templates vs shared content is perhaps not so much technical as it is permission related.

    Sometimes you simply don't want to allow certain users to have template editing capabilities. 
    But when they should be able to edit a certain re-appearing content block say some quote/announcement/banner you have to compromise.

    Either you take the risk and hope every day that a novice user won't remove or accidently drop something on a template. 
    Or you don't take the risk and force the client to drag-n-drop that content block on every single page (s)he creates.

  10. Daniel Plomp
    Daniel Plomp avatar
    952 posts
    Registered:
    18 Feb 2004
    24 Oct 2012 in reply to Jochem Bökkers
    Link to this post
    I also like to push this issue. I won't go back to the times where we were promised that it would be there after a few releases...!?!

    I used this option all the time in the 3.7 sites, and also my experience with clients is that they like this option.

    Some content  you just have to copy/paste from your HTML into your templates. It's not worth creating widgets for that (as Jochem mentioned).

    So, really hope this will be in the next version as you would make much clients happy.

    In the meantime if someone needs a simple workaround, check this blogpost:

    http://www.danielplomp.com/blog/damar/2012/06/22/sitefinity-%27shared-content-selector%27---part-1

    As it would maybe help to make life easier :)

    ---
    Daniel
  11. Stephen2
    Stephen2 avatar
    94 posts
    Registered:
    05 Feb 2012
    01 Nov 2012
    Link to this post
    I'll join the argument "For" shared content blocks on templates, but from a different angle.  One that should always be utmost in our thoughts: Our large corporate clients.

    For these clients, we provide a very locked down experience with permissions, workflows, access restrictions very strict.

    Giving users the ability to change Page Templates is generally not something that we do, as they can break the whole site in this way.

    But sometimes we want to allow them to change one small section (ContentBlock) on the template.

    Right now, we can't (easily), as they can't see "Design -> Page Templates" due to permissions.

    However, we can easily allow then to see "Content -> Content Blocks" where they could interact with the shared content block, and therefore update only that part of the template we allow them to.

    Hope that makes sense, and adds another angle as to why we should allow shared content blocks on templates.
  12. Anton Hristov
    Anton Hristov avatar
    8 posts
    Registered:
    15 Dec 2009
    10 Jan 2013
    Link to this post
    Hey everyone, Sitefinity 5.3 adds support for shared content blocks in page templates. Feel free to review the release notes.
12 posts, 0 answered