Content Types

Compared with FeinCMS content types, pennyblack content types can provide further functionality

Additional hooks

  • replace_links

    This method if it exists is called before the newsletter is sent. It should replace all links with a newly generated link to be able to track every link click:

    HREF_RE = re.compile(r'href\="((\{\{[^}]+\}\}|[^"><])+)"')
    
    def replace_links(self, job):
        """
        Replaces all links and inserts pingback links
        """
        offset = 0
        for match in HREF_RE.finditer(self.text):
            link = match.group(1)
            if check_if_redirect_url(link):
                continue
            # don't replace links to proxy view
            if u'link_url' in link:
                continue
            replacelink = job.add_link(link)
            self.text = ''.join((self.text[:match.start(1)+offset], replacelink, self.text[match.end(1)+offset:]))
            offset += len(replacelink) - len(match.group(1))
    
  • prepare_to_send

    Is meant to add some additional style informations into the content. Because email clients often only accept inline style information.

    def prepare_to_send(self):
        """
        insert link_style into all a tags
        """
        self.text = re.sub(r"<a ","<a {% get_newsletterstyle request text_and_image_title %}", self.text)
    

Provided content types

Pennyblack comes with some content types bundled which sould be sufficient for most use cases.

Project Versions

Table Of Contents

Previous topic

Installation

Next topic

Bouncedetection

This Page