Ignore:
Timestamp:
Sep 18, 2009 5:29:41 PM (15 years ago)
Author:
liebster
Message:

Added metatags order feature, which is managed by metatags_order property of of configlet

File:
1 edited

Legend:

Unmodified
Added
Removed
  • quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/adapters.py

    r408 r1313  
    33from zope.component import queryMultiAdapter 
    44from Products.CMFCore.utils import getToolByName 
    5 from quintagroup.seoptimizer.interfaces import IKeywords 
     5 
     6from quintagroup.seoptimizer.interfaces import IKeywords, IMappingMetaTags 
     7from quintagroup.seoptimizer.util import SortedDict 
    68 
    79 
     
    1416    def listKeywords(self): 
    1517        portal_props = getToolByName(self.context, 'portal_properties') 
    16         seo_props = getToolByName(portal_props, 'seo_properties') 
     18        seo_props = getToolByName(portal_props, 'seo_properties', None) 
    1719 
    1820        # now set type is not using because of it unordered behaviour 
     
    2426        request = self.context.REQUEST 
    2527        seo_context = queryMultiAdapter((self.context, request), name='seo_context') 
    26         keywords = list(seo_context.seo_keywords()) 
    27         lower_keywords = map(lambda x: x.lower(), keywords) 
    28         additional = seo_props.additional_keywords 
     28        if seo_context: 
     29            keywords = list(seo_context.seo_keywords()) 
     30            lower_keywords = map(lambda x: x.lower(), keywords) 
     31            additional = seo_props.additional_keywords 
    2932 
    30         is_test = self.context.REQUEST.get('qseo_without_additional_keywords', None) 
     33            is_test = self.context.REQUEST.get('qseo_without_additional_keywords', None) 
    3134 
    32         if additional and is_test is None: 
    33             # extract words from url page using lynx browser 
    34             text = commands.getoutput('lynx --dump --nolist %s?qseo_without_additional_keywords=1' % self.context.absolute_url()).lower() 
    35             if text and text != 'sh: lynx: command not found': 
    36                 for keyword in additional: 
    37                     if keyword.lower() not in lower_keywords and re.compile(r'\b%s\b' % keyword, re.I).search(text): 
    38                         keywords.append(keyword) 
     35            if additional and is_test is None: 
     36                # extract words from url page using lynx browser 
     37                text = commands.getoutput('lynx --dump --nolist %s?qseo_without_additional_keywords=1' % self.context.absolute_url()).lower() 
     38                if text and text != 'sh: lynx: command not found': 
     39                    for keyword in additional: 
     40                        if keyword.lower() not in lower_keywords and re.compile(r'\b%s\b' % keyword, re.I).search(text): 
     41                            keywords.append(keyword) 
     42            return ', '.join(keywords) 
     43        return '' 
    3944 
    40         return ', '.join(keywords) 
     45 
     46class MappingMetaTags(object): 
     47    implements(IMappingMetaTags) 
     48 
     49    def __init__(self, context): 
     50        self.context = context 
     51        self.portal_props = getToolByName(self.context, 'portal_properties') 
     52        self.seo_props = getToolByName(self.portal_props, 'seo_properties', None) 
     53 
     54    def getMappingMetaTags(self): 
     55        metadata_name = SortedDict() 
     56        if self.seo_props: 
     57            pmn = self.seo_props.getProperty('metatags_order') 
     58            pmn = pmn and pmn or '' 
     59            for mt in [mt.split(' ') for mt in pmn if len(mt.split(' '))==2]: 
     60                metadata_name[mt[0]] = mt[1] 
     61        return metadata_name 
Note: See TracChangeset for help on using the changeset viewer.