Re: Google Sitemap generation - double links

Sebastian Tänzer <[email protected]> Fri, 27 Jan 2012 13:04:01 +0100
Newsgroups gmane.comp.cms.zms.devel
Message-ID <[email protected]>
Hi Thorsten,

great to hear. I thought about the dynamic generation which actually isn't too hard to do:

request = container.REQUEST
response =  request.response

nodes = context.filteredChildNodes()

folder_types = []

meta = context.content.getMetaobjIds()
for m in meta:
    obj = context.getMetaobj(m)
    if obj['type'] == 'ZMSDocument':
        folder_types.append( obj['id'] )

content = []

for n in nodes:
    if n.meta_id not in folder_types:
        content.append(n.meta_id)

if content:
    return True
else:
    return False


Am 27.01.2012 um 12:36 schrieb Thorsten Weber:

> Hi Sebastian,
> 
> 
> that´s what i thought ...
> 
> thanks for sharing the script - works perfect for me!
> 
> a way to optimize might be to build the list of folder_types dynamically from metaobj_manager.
> 
> 
> kind regards,  
> Thorsten Weber
> 
> 				thorsten weber
> 				software development
> 
> 				pro in space gmbh
> 				spichernstrasse 34a
> 				50672 köln
> 
> 				[email protected]
> 				http://www.proinspace.com
> 
> 				T: 0049 221.29 21 79.26
> 				F: 0049 221.29 21 79.94
> 
> 				managing directors:
> 				uli wilkes
> 				jürgen brandt
> 				oliver blaum
> 
> 				amtsgericht köln
> 				hrb 33 444
> 				ust-idnr DE209049800
> 
> Am 27.01.2012 um 12:12 schrieb Sebastian Tänzer:
> 
>>  
>> I found the problem:
>> 
>> getHref2IndexHtml() generated the URL of the next child if the parent doesn't have any content (i.e. there's only folders in there).
>> I solved this for now by using a python script checking for content like this:
>> 
>> request = container.REQUEST
>> response = request.response
>> 
>> nodes = context.filteredChildNodes()
>> folder_types = ['ZMSFolder', 'ZMSDocument']
>> content = []
>> 
>> for n in nodes:
>> if n.meta_id not in folder_types:
>> content.append(n.meta_id)
>> 
>> if content:
>> return True
>> else:
>> return False
>> 
>> and including it in the sitemap generation:
>> 
>> ...
>> <dtml-in "content.filteredTreeNodes(REQUEST=REQUEST, meta_types=['ZMSFolder'])">
>> <dtml-if "checkContent() and not isResource(REQUEST) and isActive(REQUEST)">
>> <url>
>> <loc><dtml-var domain><dtml-var "getHref2IndexHtml(REQUEST)" html_quote></loc>
>> <lastmod><dtml-var "getLangFmtDate(ZopeTime(),'eng','%Y-%m-%d')"></lastmod>
>> <dtml-comment><lastmod><dtml-var "getLangFmtDate(getObjProperty('change_dt',REQUEST),'eng','%Y-%m-%d')"></lastmod></dtml-comment>
>> <dtml-if "getObjProperty('attr_zmsgoogle_bot_priority',REQUEST)"><priority><dtml-var "getObjProperty('attr_zmsgoogle_bot_priority',REQUEST)" fmt="%.5f"></priority><dtml-else></dtml-if>
>> <dtml-if "getObjProperty('attr_zmsgoogle_bot_changefreq',REQUEST)"><changefreq><dtml-var "getObjProperty('attr_zmsgoogle_bot_changefreq',REQUEST)"></changefreq><dtml-else></dtml-if>
>> </url>
>> </dtml-if>
>> </dtml-in> 
>> ...
>> 
>> This works as expected for now.
>> 
>> Optimizations highly welcome!
>> 
>> Cheers, Sebastian
>> 
>> Am 27.01.2012 um 11:32 schrieb Niels Dettenbach:
>> 
>> > Am Freitag, 27. Januar 2012, 11:12:28 schrieben Sie:
>> >> any idea about the double output of some folders?
>> > ...not yet, as i can't reproduce this (at least with my published version).
>> > 
>> > Will check this (i.e. if it relies on some hidden folders or something like 
>> > that) on wednesday next week in detail and come back then.
>> > 
>> > 
>> > best regards,
>> > 
>> > 
>> > Niels.
>> > -- 
>> > ---
>> > Niels Dettenbach
>> > Syndicat IT&Internet
>> > http://www.syndicat.com/
>> 
> 
> 
>