Package: collective.microdata.core
Table of contentsIntroductionHow to useThe microdata vocabularyThe schema.org implementationHow to extendFrom contentsFrom catalogSupport for folder content listing viewsTesting your microdataFinal notesChangelogIntroductionThis product is designed for addingmicrodatasupport to your Plone contents.How to useThis package simply provides raw support, not really useful on his own. It is intended to be
extended by 3rd party projects that want provide microdata support for Plone.One complete implementation of all instruction below iscollective.microdata.event.The microdata vocabularyEvery content type that wanna provide microdata informations needs to provide an adapter for theIMicrodataVocabularyinterface. This interface is limited to a single information: anURI
to a microdata vocabulary.Microdata vocabulary are standardized outside HTML 5 specifications, so is possible to have
different families of vocabularies. You can also invent your own.The schema.org implementationNowadays the most promising implementation of microdata is the one defined atschema.orgso this
package is supporting it. This is done providing the most-generic type defined: theThingtype.This is automatically done for all Plone content types and catalog objects (for catalog: a new
catalog metadatamicrodata_itemtypewill be added to your catalog, saving there the most
specific microdata vocabulary URL found).This is done providing adapters forISchemaOrgThinginterface (that extendsIMicrodataVocabulary).Again: knowing that all your Plone content types are “things” is not very funny, and not a real step
forward.How to extendFrom contentsTo get microdata information from a content types, your product must provide his own implementation for
theIMicrodataVocabulary:<adapter for="your.products.content.IType"
         provides="collective.microdata.core.interfaces.IMicrodataVocabulary"
         factory=".adapter.YourTypeMicrodataProvider" />Then you need to provide the adapter:class YourTypeMicrodataProvider(object):
implements(IYourMicrodataVocabulary)

def __init__(self, content):
    self.microdata_vocabulary = 'http://your.microdata.uri'
    # now get data from the content
    self.microdata_data1 = ...Then your content’s view must obtain the microdata adapter you defined:class YourTypeView(BrowserView):

    ...

    def microdata(self):
        return IMicrodataVocabulary(self.context)Finally your view template must use microdata information:...
<article metal:fill-slot="main"
         tal:define="microdata view/microdata"
         itemscope="itemscope"
         tal:attributes="itemtype microdata/microdata_vocabulary">
...From catalogThe portal catalogmicrodata_itemtypecolumn will automatically store the content microdata
vocabulary URL. Default value is the “Thing” URL (http://schema.org/Thing) but as soon as you
provide a more specific adapter, this URL will be replaced with the new ones.There’s an adapter for getting rawThingmicrodata from a catalog brain from all Plone content
types, but your 3rd party content type must also provide a more specific ones:<adapter for="Products.ZCatalog.interfaces.ICatalogBrain"
         provides="collective.microdata.core.interfaces.IMicrodataVocabulary"
         factory=".adapter.YourTypeMicrodataBrainProvider"
         name="http://your.microdata.uri" />Then you need to provide the adapter:class YourTypeMicrodataBrainProvider(object):
implements(IYourMicrodataVocabulary)

def __init__(self, brain):
    self.microdata_vocabulary = 'http://your.microdata.uri'
    # now get data from the cataloged content
    self.microdata_data1 = ...Support for folder content listing viewsIf you want to provide microdata information also in folder content views (so displaying multiple
microdata objects in a single page), you could like to installcollective.microdata.contentlisting.See it’s documentation for further information on how to use this in you product.Testing your microdataThis product also include a JavaScript tester microdata tool calledMicrodata Tool(a modified ones, just to fix some crappy Sunburst CSS rules).To enable it while testing your site, just run thetestingGeneric Setup profile from
yoursite_setuptool.This will enable the JavaScript tester in every page.Hint: duration checker seems not working properly.Final notesProviding microdata doesn’t ensure that search engines will use it.Changelog0.1 (2012-09-08)Initial release