|
|
 Rank: Member Groups: Member
Joined: 3/19/2006 Posts: 14 Points: 0
|
As presented in the ShowCase, for the arkred">Art Experience portal project (http://www.xp-rience.net/) a set of specific modules have been developped and are offered to the Cuyahoga Community in the spirit of Open Source. The first one manages metadata and is 100% compliant with the core (version 1.0.0). Feel free... arkred">The Meata Data Management module includesA complete list of both META http-equiv and META name with their definition and syntax. This list is maintained inside a separate XML configurations file and is easily customizable by the administrator A separated “defaults” Meta Tags files containing the default name and content for a web site The possibility for an external module to register dynamically new Meta tags during page generation Both binaries and source code are available. But... don't forget to register Installation is easy. To use it, just add a "xpMetaData" section anywhere in a node. Only the editor or administrator will access the settings. Note: the db script is only available for SQL2000. If somebody can translate to MySql thanks to send me the scripts! For more technical info follow this path
|
|
 Rank: Administration Groups: Administration
, Member
Joined: 12/30/2004 Posts: 1,674 Points: 1,824 Location: Wageningen (NL)
|
Excellent stuff. Well done!
Two remarks: - Currently the module only works when attached to a Node. It would be great if it also works when attached to a template. This way you can add a set of default meta tags to lots of pages at once. - Caching: regular module output caching doesn't affect this module. Any ideas how the meta data could be cached? I think, you could probably leverage the query cache of NHibernate.
|
|
 Rank: Member Groups: Member
Joined: 3/19/2006 Posts: 14 Points: 0
|
Hi Martijn, Two things: - Yes I've preferred to maintain the metadata at the node level. Why? I didn’t want to touch anything in the core. So, attaching metadata at the node level was the most natural way. But your point is accurate. We can place the module in the template and on the pre-render event, if no “node level” metadata are found, we can feed directly from the defaults config file. This is a really straightforward modification (just complete the "else" part) - For caching, that’s another story. Your point is again accurate concerning nHibernate, but my vision is to provide also a more advanced cache technology. I have practiced with success the Microsoft Enterprise library (version 1.1 and 2.0). They have a general “object caching” block which is really good and performant and doesn't require a specific database. This can be helpful for multipurpose at the core level. I suggest to take a look to their enterprise block: See http://msdn.microsoft.com/practices/guidetype/AppBlocks/default.aspx?pull=/library/en-us/dnpag2/html/entlib.aspAnyway, thanks for your comments...
|
|
 Rank: Advanced Member Groups: Member
Joined: 4/25/2006 Posts: 125 Points: 33 Location: Cambridge, UK
|
My version of Cuyahoga supports keyword and description metatags. These are stored in the core database against each node, and also against the site, with node definitions overriding the site definitions. I chose to support just those two as they are most commonly used and most regularly changed. In theory, it would be better to support any number of metatags, but my approach simplifies the admin and hides the complexity.
Many thanks
Simon
|
|
 Rank: Member Groups: Member
Joined: 3/19/2006 Posts: 14 Points: 0
|
dop wrote:- Yes I've preferred to maintain the metadata at the node level. Why? I didn’t want to touch anything in the core. So, attaching metadata at the node level was the most natural way. But your point is accurate. We can place the module in the template and on the pre-render event, if no “node level” metadata are found, we can feed directly from the defaults config file. This is a really straightforward modification (just complete the "else" part) Correction, as for the moment there must be ONLY one metadata module par node (the handler is changing the control ID), this behaviour must be "deactived" when the module is attached directly to the template.
|
|
 Rank: Member Groups: Member
Joined: 3/19/2006 Posts: 14 Points: 0
|
swilliam wrote:My version of Cuyahoga supports keyword and description metatags. These are stored in the core database against each node, and also against the site, with node definitions overriding the site definitions. I chose to support just those two as they are most commonly used and most regularly changed. In theory, it would be better to support any number of metatags, but my approach simplifies the admin and hides the complexity.
Many thanks
Simon Hi Simon, you are right, ideally the metadata management is the responsability of the core, so you have decided to modify it, I've take the other path... don't touch it. There are always many solutions to a problem. Most important is to apply one [Zao-Yin, 700 BC]
|
|
 Rank: Member Groups: Member
Joined: 3/19/2006 Posts: 14 Points: 0
|
martijnb wrote:Excellent stuff. Well done!
Two remarks: - Currently the module only works when attached to a Node. It would be great if it also works when attached to a template. This way you can add a set of default meta tags to lots of pages at once. - Caching: regular module output caching doesn't affect this module. Any ideas how the meta data could be cached? I think, you could probably leverage the query cache of NHibernate. Okay, I like to be challenged. So, since my last post the first problem is solved.... Now, you can attach a xpMetaData module at the TEMPLATE level and still continue (when you need) to place another one at the NODE level. Result? you have for your complete site defaults metatags automatically appended... and when you want to refine, change the defaults, simply place another one at the node level. Both are working together and all the metadata are merged smoothly The new binaries, source code and documentation (xpMetaData v.1.1.0) are available for download at http://www.xp-rience.net/xpWeb/homeEN/technologydownloads.aspxDon't forget to register or login to access the binaries and source code Have fun
|
|
 Rank: Administration Groups: Administration
, Member
Joined: 12/30/2004 Posts: 1,674 Points: 1,824 Location: Wageningen (NL)
|
dop wrote:
Hi Simon, you are right, ideally the metadata management is the responsability of the core, so you have decided to modify it, I've take the other path... don't touch it.
There are always many solutions to a problem. Most important is to apply one [Zao-Yin, 700 BC]
If I may add to that, meta data will be integrated in the core in the future but in the meantime, I am very pleased to have a module that accomplishes this in a very nifty way  .
|
|
 Rank: Administration Groups: Administration
, Member
Joined: 12/30/2004 Posts: 1,674 Points: 1,824 Location: Wageningen (NL)
|
dop wrote:Okay, I like to be challenged. So, since my last post the first problem is solved.... Now, you can attach a xpMetaData module at the TEMPLATE level and still continue (when you need) to place another one at the NODE level. Now this is perfect! Can't wait to check it out. About the caching: we used to have out own caching layer that cached all objects like Sites, Nodes, Sections etc. With this we ran into concurrency problems under high load. The easiest way to solve this was by enabling NHibernate's second level cache and it has stayed this way just because it works well.
|
|
Rank: Advanced Member Groups: Member
Joined: 3/7/2006 Posts: 59 Points: 6
|
I have tried to find some good documentation about Nhibernate's second level caching but have drawn a blank. Can anyone briefly explain it or does anyone have a link that explains it better??
|
|
 Rank: Administration Groups: Administration
, Member
Joined: 12/30/2004 Posts: 1,674 Points: 1,824 Location: Wageningen (NL)
|
dagda1 wrote:I have tried to find some good documentation about Nhibernate's second level caching but have drawn a blank. Can anyone briefly explain it or does anyone have a link that explains it better?? Here, everything is explained: http://www.hibernate.org/hib_docs/reference/en/html/performance.html#performance-cache. It just caches object instances for a given period of time (including collections when specified) so no database queries are required for those objects. What I forgot to mention: there is also the query cache. With this, results of a given query are cached. We utilize this in Cuyahoga, for example when querying for the root nodes. The hql query is something like "from Node n where n.ParentNode is null and n.Site.Id =  iteId". This query fires at almost every request and is a perfect candidate for caching since root nodes don't happen to change very often. When the above query is cached a request for the root nodes for a particular site doesn't result in a database query. In fact: when you also use output caching for the modules, combined with second level cache and query caching, it often happens that a request for a page results in ZERO database queries!
|
|
 Rank: Member Groups: Member
Joined: 3/19/2006 Posts: 14 Points: 0
|
martijnb wrote:dop wrote:Okay, I like to be challenged. So, since my last post the first problem is solved.... Now, you can attach a xpMetaData module at the TEMPLATE level and still continue (when you need) to place another one at the NODE level. Now this is perfect! Can't wait to check it out. About the caching: we used to have out own caching layer that cached all objects like Sites, Nodes, Sections etc. With this we ran into concurrency problems under high load. The easiest way to solve this was by enabling NHibernate's second level cache and it has stayed this way just because it works well. Very late comment on this post. The xpMetaData module is now using the 2nd cache level of NHibernate. Totally forget to tell that for those who are still interested in the module...
|
|
 Rank: Member Groups: Member
Joined: 3/19/2006 Posts: 14 Points: 0
|
Okidou, the yellow cat is back to announce a new version of the arkred">xpMetaData module (version 1.2.0). "Why a new version again" I hear you... Well, SEO (Search Engine Optimization) is quite a nightmare, trust me. So we must have a complete control on ALL the elements in the HEAD section.... including the "TITLE". Why is it so important to have a good title… just make a search on Google and you will directly got the point. So, currently, the core is generating a “default title” based on the site name and the current node title. It’s quite easy to modify the title from the code. For instance, we have done that with the Article module. In the articles.ascx component you can do that in two ways: Code:base.Module.DisplayTitle = this._activeArticle.Title So you get: web site name + your article title placed in the “TITLE” tags. You can also do this: Code:base.PageEngine.TemplateControl.Title = this._activeArticle.Title in this case the complete title is replaced. But what about pages containing plenty of StaticHtml content? Simply get the latest version of the arkred">amazing Art Experience project xpMetadata module. You will be able to manage your title tag, as another meta tags Check on arkred">Art experince project... Don't forget to login or register to access the binaries and source code. And have fun
|
|
 Rank: Advanced Member Groups: Member
Joined: 12/11/2007 Posts: 89 Points: 267
|
Great module! I have adapted it to run on Cuyahoga 1.6. and works like a dream. Thank you. Web Developer, Kent - Coolbytes
|
|
|
Guest |