cultact.subsite
Guido Stevens
guido.stevens@cosent.nl
www.cosent.nl
Social Knowledge Technology
Sharing Content between subsites
Twin Sites
Shared Content
URL rewrites
# shared user folders
rewrite ^/profielen/$ /profielen permanent;
rewrite ^/profielen(.*) /VirtualHostBase/http/$server_name:80/ka/VirtualHostRoot/profielen$1 last;
# livesearch all content
rewrite ^/livesearch(.*) /VirtualHostBase/http/$server_name:80/ka/VirtualHostRoot/livesearch$1 last;
# serve subsite
rewrite ^/(.*) /VirtualHostBase/http/$server_name:80/ka/maastricht/VirtualHostRoot/$1 last;
cultact.subsite
● request marking
● content containers
● assignment behavior
● catalog & collections
● canonical URL SEO
Request Marking
● Inspired by plone.theme
● before_traverse hook maps request SERVERNAME to subsite
● request.set('in_subsite', chosen)
● Marks request with subsite-specific browser layer
So?
● body class=”subsite_maastricht” CSS and Diazo rules
● Full custom theme registered for subsite layer possible
<drop css:theme=".only-subsite-maastricht"
css:if-not-content="body.subsite-maastricht" />
Content Containers
● dexterity.container
● Inspired by Lineage
● INavigationRoot
● ISite
● Very little content here
– subsite-local advertisements
– subsite-local contact info
Assignment Behavior
● Dexterity behavior to map shared content to subsites
● subsite_home
– “main” subsite
– single choice
● subsite_syndication
– “default visible in” subsites
– multi choice
● Used to power browser query logic
– default: request.in_subsite in context.subsite_syndication
– other: request.in_subsite != context.subsite_home
Catalog & Collections
● Catalog indexes
– subsite_home
– subsite_syndication
● Collection criteria
– subsite_home
– subsite_syndication
● MultisiteCollection behavior
– override Collection to not force INavigationRoot path query
Misc Overrides
● override plone.app.layout.links.viewlets.CanonicalURL
– point to “home” subsite virtual URL for shared content
● override Products.Doormat viewlet
– show correct footer on shared content
– uses request marker to retrieve “right” Doormat
● Need to override search in your own custom code
Sharing Content between subsites

Share content across subsites in Plone: cultact.subsite

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
    URL rewrites # shareduser folders rewrite ^/profielen/$ /profielen permanent; rewrite ^/profielen(.*) /VirtualHostBase/http/$server_name:80/ka/VirtualHostRoot/profielen$1 last; # livesearch all content rewrite ^/livesearch(.*) /VirtualHostBase/http/$server_name:80/ka/VirtualHostRoot/livesearch$1 last; # serve subsite rewrite ^/(.*) /VirtualHostBase/http/$server_name:80/ka/maastricht/VirtualHostRoot/$1 last;
  • 6.
    cultact.subsite ● request marking ●content containers ● assignment behavior ● catalog & collections ● canonical URL SEO
  • 7.
    Request Marking ● Inspiredby plone.theme ● before_traverse hook maps request SERVERNAME to subsite ● request.set('in_subsite', chosen) ● Marks request with subsite-specific browser layer So? ● body class=”subsite_maastricht” CSS and Diazo rules ● Full custom theme registered for subsite layer possible <drop css:theme=".only-subsite-maastricht" css:if-not-content="body.subsite-maastricht" />
  • 8.
    Content Containers ● dexterity.container ●Inspired by Lineage ● INavigationRoot ● ISite ● Very little content here – subsite-local advertisements – subsite-local contact info
  • 9.
    Assignment Behavior ● Dexteritybehavior to map shared content to subsites ● subsite_home – “main” subsite – single choice ● subsite_syndication – “default visible in” subsites – multi choice ● Used to power browser query logic – default: request.in_subsite in context.subsite_syndication – other: request.in_subsite != context.subsite_home
  • 10.
    Catalog & Collections ●Catalog indexes – subsite_home – subsite_syndication ● Collection criteria – subsite_home – subsite_syndication ● MultisiteCollection behavior – override Collection to not force INavigationRoot path query
  • 11.
    Misc Overrides ● overrideplone.app.layout.links.viewlets.CanonicalURL – point to “home” subsite virtual URL for shared content ● override Products.Doormat viewlet – show correct footer on shared content – uses request marker to retrieve “right” Doormat ● Need to override search in your own custom code
  • 12.