Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

Devstatus

...

Statusimplemented

...

Target4.5.3

 

Officialdocu
0Google
-sitemap module .
Status
Sitemap module
1http://wiki.magnolia-cms.com/display/DOCS45/Google+Sitemap+module

Introduction

Migrate the sitemap module in order to support Magnolia 4.5.

...

  • Create a standard module with configuration, templates and services (ok).
  • Replace JSP by FTL's (ok).
  • Better configuration Use template Variation (ok).
  • Add Specialized Sitemaps (Specialized Sitemaps) (next module version)
    • Mobiles
    • News
    • Video
    • Geo
    • Code Search
  • Add additional informations (linked to a page) to the SiteMaps (next module version)
    • Images
    • Video
  • Add Junit tests. (ok).
  • Add an AdminCentral Tools menu to access the Edit page (ko)

Global Requirements

Display a Generate XML page(s) containing site informations following the siteMap protocol.

Have an Edit page that allows to add sites/virtualUri as component. The add Dialog should allows to:

  • Add either a new Site or VirtualUri Component.
  • For VirtualUri Component: no additional configuration.
  • For Site Component: a new Dialog is shown:
    • Define the Site root input field.

Have a configuration page (Dialog) that gives the abitiy to define per page the:

  • Change frequence
  • Priority
  • visibility Visibility of the site page and children in the SiteMap xml.

SiteMap XML

Display Site and VirtualUri mappings in a xml format.
Sites to be displayed are defined in the configuration (see configuration section). If no sites are defined, the root of the website repository will be taken to display sites. 

Sites display
  • Display all mgnl:content nodes (including inherited nodes type) if they are not defined as not to be displayed (done in the configuration part by setting  a googleSitemapHide property)
  • Display subNodes of type mgnl:content if the parent node don't define to hide childrens (done in the configuration part by setting a googleSitemapHideChildren property)

In case of nultilang support, display the specific language sub pages. For example http://.../ftl-sample-site/ftl-dialog-showroom.html http://.../*de*/ftl-sample-site/ftl-dialog-showroom.html

VirtualUriMappings display

Display all virtualUriMapping nodes if they are not defined as not to be displayed (done in the configuration part by setting  a googleSitemapHide property)

SiteMap Configuration

Display a line for all Site contents and VirtualUri mappings showing their current settings. Access a dialog to change these definitions.

Sites configuration
  • Display all mgnl:content nodes (including inherited nodes type)
    • Display them in red if they are defined as not to be displayed
  •  Display subNodes of type mgnl:content
    • Display them in red if the parent node set hide subNodes
VirtualUriMappings configuration
  • Display all virtualUriMapping nodes.
    • Display them in red if they are defined as not to be displayed

Solutions:
    Create a new SiteMapModel  that uses the services and configuration singleton.
    Create a Service responsible to perform the nodes search and convert these nodes to beans used for the rendering.
    Create a configuration singleton used by the model and service.
    Create FTL's for rendering. 
 

Concept

Google SiteMap requirements.

Requirements

Points not yet covered (next module version)?

  • A Sitemap file can contain no more than 50,000 URLs and must be no larger than 50MB when uncompressed. If your Sitemap is larger than this, break it into several smaller Sitemaps. These limits help ensure that your web server is not overloaded by serving large files to Google.
  • If you have more than one Sitemap, you can list them in a Sitemap index file and then submit the Sitemap index file to Google. You don't need to submit each Sitemap file individually.
  • As well as basic URL information, Sitemaps can contain detailed information about specific types of content on your site, including video, images, mobile, News, and software source code

Magnolia SiteMap requirements.

Points not yet covered (should we)?

  • Site variations:
  • Multi domains:
    'No. Please list only one version of a URL in your Sitemaps. Including multiple versions of URLs may result in incomplete crawling of your site'...

Google SiteMap Configuration

We should be able to configure:

  • Sites ans subSites to include in the SiteMap Url 
  • Display Virtual Uri or not.

Solutions

  • Create a configuration singleton used by the model and service (configure site to be displayed, date format, ...).
  • Create a Service responsible to perform the nodes search and convert these nodes to beans used for the rendering.
  • Create a new SiteMapModel  that uses the services and configuration singleton.
  • Create FTL's for rendering.

HowTo

Create a new SiteMap page

From the Admin interface, create a new GoogleSiteMap Page. This SiteMap page can be put at any place anywhere in the website tree.

Image Added
Multiple SiteMap definitions are supported (create a SiteMap for DemoProject and one for DemoFeature or one for Both).

Create site and virtualUri components.

Edit the GoogleSiteMap Page. Add a Site or VirtualUri component by clicking the add (plus) button on component area.
Image Added

SiteComponent

Selecting this component will open a new Dialog that allows to select the site(s), page(s), or subpage(s) to include in the sitemap.
Add one to n path.
Image Added
If no entries are selected, nothing will be added to the sitemap.

SiteComponent entries Edit Properties:

Hide in Sitemap. If this checkbox is selected

  • This page will not be included in the sitemap XML.
  • Subpages are included to the sitemap.xml.

Hide all children... If this checkbox is selected

  • This page will be included in the sitemap XML.
  • Subpages are not included to the sitemap.xml.

If both checkbox are selected:

  • This page will not be included in the sitemap XML.
  • Subpages are not included to the sitemap.xml.

Image Added

VirtualUriComponent.

No dialog is associated to this component. This will directly render all virtualUri defined into this instance.

SiteComponent entry Edit Properties

By selecting Hide in Sitemap, this virtualUri will not be displayed in the sitemap.xml

Access the sitemap xml

Just change the extension of the SiteMap page from .html to .xml.

(warning) Note that no duplicates url's (loc) are displayed. A filter mechanism is responsible to remove all duplicates.

Improvements

New functionalities to add

  • Support file creation
  • Support size and max url's contained in a sitemap.xml
  • Support sitemap index file
  • Support specific sitemap like mobile/images/video sitemap
  • Support images/video information's in a standard sitemap

Most of these functionalities are supported by an external java library (Apache License 2.0)

Code Block
     <!-- For site map generation  -->
	<dependency>
		<groupId>com.google.code</groupId>
		<artifactId>sitemapgen4j</artifactId>
		<version>1.0.1</version>
	</dependency>

Unfortunately this library has to be forked in order to:

  • Not only be able to create xml files, but also to redirect the xml stream to an outputStream or printwriter (extend SitemapGenerator class)
  • Add tag support for images and videos in a standard sitemap (extend Renderer of the WebSitemapGenerator class)

Task:

  • Create new pages template for Mobile, News, Video.... SiteMap
  • Create page's dialog in order to define the output format (generate files, render xml, ...)
  • Modify the siteMap property dialog in order to support images and videos informations
  • Fork the external java library.

References

Google SiteMap About

Google SiteMap Errors

Best PracticesWe have to display two parts:
 one xml output (http://www.sitemaps.org/protocol.html)
 one configuration page.