SlideShare a Scribd company logo
dylan@pretaweb.comPlone Conf 2010 Dylan Jay
FunnelWeb
Easy Content Conversions
Dylan Jay
PretaWeb
dylan@pretaweb.comPlone Conf 2010 Dylan Jay
Content Conversions suck

Large existing sites

Static html or old CMS

Hard to quote on

Content audit

Use plone to fix content

Convert Docs to Pages (coming...)
dylan@pretaweb.comPlone Conf 2010 Dylan Jay
History

2008 - Obrien Intranet

2009 – pretaweb.funnelweb (deprecated)

Plone UI > Actions > Import

2010 – transmogrify.* release on pypi

2010 – collective.developermanual

sphinx to plone

2010 – funnelweb Recipe + Script

Thanks – Dylan Jay, Vitaliy Podoba, Rok Garbas, Mikko Ohtamaa, Tim
Knap
dylan@pretaweb.comPlone Conf 2010 Dylan Jay
Demo
dylan@pretaweb.comPlone Conf 2010 Dylan Jay
funnelweb.recipe

Add to buildout
[funnelweb]
recipe = funnelweb
crawler-url=http://www.whitehouse.gov
dylan@pretaweb.comPlone Conf 2010 Dylan Jay
bin/funnelweb

Crawls

Caches locally

Filters

Removes template

Restructures

Determines title,hidden etc

Uploads to plone
dylan@pretaweb.comPlone Conf 2010 Dylan Jay
Common Options

crawler:site_url

crawler:ignore

ploneupload:target

template1:description

template1:text

*-disable
dylan@pretaweb.comPlone Conf 2010 Dylan Jay
Command Line

bin/funnelweb --crawler:max=50
--localupload:output=var/funnelwebdebug
dylan@pretaweb.comPlone Conf 2010 Dylan Jay
Viewing the Pipeline

bin/funnelweb --pipeline
dylan@pretaweb.comPlone Conf 2010 Dylan Jay
Custom pipeline

bin/funnelweb –pipeline > pipeline.cfg

{edit} pipeline.cfg

bin/funnelweb --pipeline=pipeline.cfg
dylan@pretaweb.comPlone Conf 2010 Dylan Jay
Making your own blueprint
class MyBlueprint(object):
classProvides(ISectionBlueprint)
implements(ISection)
def __init__(self, transmogrifier, name, options, previous):
self.previous = previous
def __iter__(self):
for item in self.previous:
dosomethingto(item)
yield item
<utility component=".myblueprint.MyBluePrintr"
name="transmogrify.myblueprint" />
dylan@pretaweb.comPlone Conf 2010 Dylan Jay
transmogrify.webcrawler

transmogrify.webcrawler

Crawls site or cache for content

transmogrify.webcrawler.typerecognitor

Sets Plone content type based on mime-type

transmogrify.webcrawler.cache

Saves content to disk
dylan@pretaweb.comPlone Conf 2010 Dylan Jay
transmogrify.htmlcontentextractor

transmogrify.htmlcontentextractor

Provide XPath for title, description, text etc.

transmogrify.htmlcontentextractor.auto

Guesses XPaths from content
dylan@pretaweb.comPlone Conf 2010 Dylan Jay
transmogrify.siteanalyser

transmogrify.siteanalyser.relinker

Moves, renames, url tidying

transmogrify.siteanalyser.title

Guess page titles

transmogrify.siteanalyser.defaultpage

Move index pages into folders

transmogrify.siteanalyser.attach

Move attachments closer to pages
dylan@pretaweb.comPlone Conf 2010 Dylan Jay
transmogrify.ploneremote

Remoteconstructor

Adds content to plone via xmlrpc

Remoteschemaupdater

Updates content of existing object

Remotenavigationexcluder

Hides content not in orginal sites navigation

Remoteworkflowupdater

Publish content

Remoteredirector

Creates aliases for items that have moved
dylan@pretaweb.comPlone Conf 2010 Dylan Jay
Other blueprints

transmogrify.pathsorter

Puts folders before content and content in
right order

collective.transmogrifier.sections.condition

Useful to drop certain content
dylan@pretaweb.comPlone Conf 2010 Dylan Jay
Where to get it

http://github.com:djay/funnelweb.git

http://github.com:djay/transmogrify.*

Pypi release TBA
dylan@pretaweb.comPlone Conf 2010 Dylan Jay
#TODO
• Extract content styles into visual editor
dylan@pretaweb.comPlone Conf 2010 Dylan Jay
Thanks
• djay@pretaweb.com
• IRC: djjay
• Twitter: djay75

More Related Content

PPTX
Plone: The CMS that hits above it's weight
Dylan Jay
 
ODP
Plone pwns
Dylan Jay
 
ODP
TTW FTW: Plone as the new wordpress
Dylan Jay
 
PDF
The goodies of zope, pyramid, and plone (2)
Dylan Jay
 
ODP
Pyramid Lighter/Faster/Better web apps
Dylan Jay
 
PDF
The eggless Plone manifesto (or Plone the open source cms-as-a-service platf...
Dylan Jay
 
PDF
Pyramid Deployment and Maintenance
Jazkarta, Inc.
 
PDF
Contributing to WordPress Core - Peter Wilson
WordCamp Sydney
 
Plone: The CMS that hits above it's weight
Dylan Jay
 
Plone pwns
Dylan Jay
 
TTW FTW: Plone as the new wordpress
Dylan Jay
 
The goodies of zope, pyramid, and plone (2)
Dylan Jay
 
Pyramid Lighter/Faster/Better web apps
Dylan Jay
 
The eggless Plone manifesto (or Plone the open source cms-as-a-service platf...
Dylan Jay
 
Pyramid Deployment and Maintenance
Jazkarta, Inc.
 
Contributing to WordPress Core - Peter Wilson
WordCamp Sydney
 

What's hot (20)

KEY
Doing Things the WordPress Way
Matt Wiebe
 
PPTX
WordPress Structure and Best Practices
markparolisi
 
PDF
Html5 intro
Kevin DeRudder
 
PDF
Scrip queue tree
Marco Arias
 
PPT
Secure All The Things!
Dougal Campbell
 
KEY
Higher Order WordPress Security
Dougal Campbell
 
PPTX
Take Command of WordPress With WP-CLI at WordCamp Long Beach
Diana Thompson
 
PDF
WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli
GetSource
 
PDF
PHPをさわらず作る!デザイナーさんのためのWordPress【超!初級】
Mami Kuroki
 
PDF
Phing i Fabric - Budowanie i deployment aplikacji webowych
leafnode
 
PDF
Manage WordPress with Awesome using wp cli
GetSource
 
PDF
Mehr Performance für WordPress - WordCamp Köln
Walter Ebert
 
PDF
Write your first WordPress plugin
Anthony Montalbano
 
PDF
Drupal 8 Theme System: The Backend of Frontend
Acquia
 
PDF
SocketStream
Paul Jensen
 
PPTX
Take Command of WordPress With WP-CLI
Diana Thompson
 
KEY
Advanced WordPress Development Environments
Beau Lebens
 
PDF
Mastering WordPress Vol.1
Wataru OKAMOTO
 
PDF
The wp config.php
Anthony Montalbano
 
PDF
Real-Time Django
Bolster Labs
 
Doing Things the WordPress Way
Matt Wiebe
 
WordPress Structure and Best Practices
markparolisi
 
Html5 intro
Kevin DeRudder
 
Scrip queue tree
Marco Arias
 
Secure All The Things!
Dougal Campbell
 
Higher Order WordPress Security
Dougal Campbell
 
Take Command of WordPress With WP-CLI at WordCamp Long Beach
Diana Thompson
 
WordCamp Vancouver 2012 - Manage WordPress with Awesome using wp-cli
GetSource
 
PHPをさわらず作る!デザイナーさんのためのWordPress【超!初級】
Mami Kuroki
 
Phing i Fabric - Budowanie i deployment aplikacji webowych
leafnode
 
Manage WordPress with Awesome using wp cli
GetSource
 
Mehr Performance für WordPress - WordCamp Köln
Walter Ebert
 
Write your first WordPress plugin
Anthony Montalbano
 
Drupal 8 Theme System: The Backend of Frontend
Acquia
 
SocketStream
Paul Jensen
 
Take Command of WordPress With WP-CLI
Diana Thompson
 
Advanced WordPress Development Environments
Beau Lebens
 
Mastering WordPress Vol.1
Wataru OKAMOTO
 
The wp config.php
Anthony Montalbano
 
Real-Time Django
Bolster Labs
 
Ad

Similar to Funnelweb ploneconf2010 (20)

ODP
Getting All Your Web Apps To Wear The Company Brand
knappt
 
ODP
A winning combination: Plone as CMS and your favorite Python web framework as...
Carlos de la Guardia
 
PDF
EECI2009 - From Design to Dynamic - Rapid ExpressionEngine Development
FortySeven Media
 
ODP
Introduction to Plone (PyCon Ireland 2010)
Kevin Gill
 
PPTX
World Plone Day 2012 Taipei
TsungWei Hu
 
PPT
New in Plone 3.3. What to expect from Plone 4
Quintagroup
 
PDF
Acceptance testing plone sites and add ons with robot framework and selenium
Asko Soukka
 
PPT
Pinax Long Tutorial Slides
Daniel Greenfeld
 
ODP
Plone - A Comprehensive Content Management Solution
TsungWei Hu
 
PDF
Prerendering: Revisit
Samael Wang
 
ODP
Plone for python programmers
Dylan Jay
 
PPTX
Getting Started with Pelican
Nazrul Kamaruddin
 
PPT
High Performance Web Pages - 20 new best practices
Stoyan Stefanov
 
PDF
HTML5: Smart Markup for Smarter Websites [Future of Web Apps, Las Vegas 2011]
Aaron Gustafson
 
PDF
Browser-level testing
Martin Kleppmann
 
PDF
Plone Futures, Plone Conference 2016 Keynote by Eric Steele
T. Kim Nguyen
 
PDF
Plone Futures
Eric Steele
 
PPTX
Diazo: Bridging Designers and Programmers
TsungWei Hu
 
ODP
DrupalEasy: Intro to Theme Development
ultimike
 
Getting All Your Web Apps To Wear The Company Brand
knappt
 
A winning combination: Plone as CMS and your favorite Python web framework as...
Carlos de la Guardia
 
EECI2009 - From Design to Dynamic - Rapid ExpressionEngine Development
FortySeven Media
 
Introduction to Plone (PyCon Ireland 2010)
Kevin Gill
 
World Plone Day 2012 Taipei
TsungWei Hu
 
New in Plone 3.3. What to expect from Plone 4
Quintagroup
 
Acceptance testing plone sites and add ons with robot framework and selenium
Asko Soukka
 
Pinax Long Tutorial Slides
Daniel Greenfeld
 
Plone - A Comprehensive Content Management Solution
TsungWei Hu
 
Prerendering: Revisit
Samael Wang
 
Plone for python programmers
Dylan Jay
 
Getting Started with Pelican
Nazrul Kamaruddin
 
High Performance Web Pages - 20 new best practices
Stoyan Stefanov
 
HTML5: Smart Markup for Smarter Websites [Future of Web Apps, Las Vegas 2011]
Aaron Gustafson
 
Browser-level testing
Martin Kleppmann
 
Plone Futures, Plone Conference 2016 Keynote by Eric Steele
T. Kim Nguyen
 
Plone Futures
Eric Steele
 
Diazo: Bridging Designers and Programmers
TsungWei Hu
 
DrupalEasy: Intro to Theme Development
ultimike
 
Ad

More from Dylan Jay (7)

PPTX
5 things STILL! TOO! HARD! in Plone 5
Dylan Jay
 
ODP
Surviving an earthquake's worth of traffic
Dylan Jay
 
ODP
Buildout: How to maintain big app stacks without losing your mind
Dylan Jay
 
ODP
Opps I deployed it again-ploneconf2010
Dylan Jay
 
ODP
Opps i deployed it again
Dylan Jay
 
ODP
TestBrowser Driven Development: How to get bulletproof code from lazy developers
Dylan Jay
 
PPT
How to host an app for $20 in 20min using buildout and hostout
Dylan Jay
 
5 things STILL! TOO! HARD! in Plone 5
Dylan Jay
 
Surviving an earthquake's worth of traffic
Dylan Jay
 
Buildout: How to maintain big app stacks without losing your mind
Dylan Jay
 
Opps I deployed it again-ploneconf2010
Dylan Jay
 
Opps i deployed it again
Dylan Jay
 
TestBrowser Driven Development: How to get bulletproof code from lazy developers
Dylan Jay
 
How to host an app for $20 in 20min using buildout and hostout
Dylan Jay
 

Funnelweb ploneconf2010

  • 1. [email protected] Conf 2010 Dylan Jay FunnelWeb Easy Content Conversions Dylan Jay PretaWeb
  • 2. [email protected] Conf 2010 Dylan Jay Content Conversions suck  Large existing sites  Static html or old CMS  Hard to quote on  Content audit  Use plone to fix content  Convert Docs to Pages (coming...)
  • 3. [email protected] Conf 2010 Dylan Jay History  2008 - Obrien Intranet  2009 – pretaweb.funnelweb (deprecated)  Plone UI > Actions > Import  2010 – transmogrify.* release on pypi  2010 – collective.developermanual  sphinx to plone  2010 – funnelweb Recipe + Script  Thanks – Dylan Jay, Vitaliy Podoba, Rok Garbas, Mikko Ohtamaa, Tim Knap
  • 5. [email protected] Conf 2010 Dylan Jay funnelweb.recipe  Add to buildout [funnelweb] recipe = funnelweb crawler-url=http://www.whitehouse.gov
  • 6. [email protected] Conf 2010 Dylan Jay bin/funnelweb  Crawls  Caches locally  Filters  Removes template  Restructures  Determines title,hidden etc  Uploads to plone
  • 7. [email protected] Conf 2010 Dylan Jay Common Options  crawler:site_url  crawler:ignore  ploneupload:target  template1:description  template1:text  *-disable
  • 8. [email protected] Conf 2010 Dylan Jay Command Line  bin/funnelweb --crawler:max=50 --localupload:output=var/funnelwebdebug
  • 9. [email protected] Conf 2010 Dylan Jay Viewing the Pipeline  bin/funnelweb --pipeline
  • 10. [email protected] Conf 2010 Dylan Jay Custom pipeline  bin/funnelweb –pipeline > pipeline.cfg  {edit} pipeline.cfg  bin/funnelweb --pipeline=pipeline.cfg
  • 11. [email protected] Conf 2010 Dylan Jay Making your own blueprint class MyBlueprint(object): classProvides(ISectionBlueprint) implements(ISection) def __init__(self, transmogrifier, name, options, previous): self.previous = previous def __iter__(self): for item in self.previous: dosomethingto(item) yield item <utility component=".myblueprint.MyBluePrintr" name="transmogrify.myblueprint" />
  • 12. [email protected] Conf 2010 Dylan Jay transmogrify.webcrawler  transmogrify.webcrawler  Crawls site or cache for content  transmogrify.webcrawler.typerecognitor  Sets Plone content type based on mime-type  transmogrify.webcrawler.cache  Saves content to disk
  • 13. [email protected] Conf 2010 Dylan Jay transmogrify.htmlcontentextractor  transmogrify.htmlcontentextractor  Provide XPath for title, description, text etc.  transmogrify.htmlcontentextractor.auto  Guesses XPaths from content
  • 14. [email protected] Conf 2010 Dylan Jay transmogrify.siteanalyser  transmogrify.siteanalyser.relinker  Moves, renames, url tidying  transmogrify.siteanalyser.title  Guess page titles  transmogrify.siteanalyser.defaultpage  Move index pages into folders  transmogrify.siteanalyser.attach  Move attachments closer to pages
  • 15. [email protected] Conf 2010 Dylan Jay transmogrify.ploneremote  Remoteconstructor  Adds content to plone via xmlrpc  Remoteschemaupdater  Updates content of existing object  Remotenavigationexcluder  Hides content not in orginal sites navigation  Remoteworkflowupdater  Publish content  Remoteredirector  Creates aliases for items that have moved
  • 16. [email protected] Conf 2010 Dylan Jay Other blueprints  transmogrify.pathsorter  Puts folders before content and content in right order  collective.transmogrifier.sections.condition  Useful to drop certain content
  • 17. [email protected] Conf 2010 Dylan Jay Where to get it  http://github.com:djay/funnelweb.git  http://github.com:djay/transmogrify.*  Pypi release TBA
  • 18. [email protected] Conf 2010 Dylan Jay #TODO • Extract content styles into visual editor
  • 19. [email protected] Conf 2010 Dylan Jay Thanks • [email protected] • IRC: djjay • Twitter: djay75