Integrating eZ Publish to an information system Gilles Guirand – Technical Director at Kaliop http://www.gandbox.fr RMLL 2010 July 8th
Integrating eZ Publish to an information system
Gilles Guirand – Technical Director at Kaliophttp://www.gandbox.fr
RMLL 2010July 8th
Integrating eZ Publish to an information system
RMLL 2010July 8th
Summary :
Chapter 1 : Introduction about eZ PublishChapter 2 : Custom & complex data modelingChapter 3 : Website factory & Cross-content publishingChapter 4 : API & External data integration (XML, SOAP, LDAP)Chapter 5 : Conclusion & questions
Integrating eZ Publish to an information system
Chapter 1 : Introduction about eZ Publish
An Open Source (GNU/GPL) Content Management System : the next business model
Community version(Full featured, no support)
Enterprise version(eZ Systems support)
Community contributions
GNU/GPL
GNU/GPL ?
Integrating eZ Publish to an information system
Chapter 1 : Introduction about eZ Publish
eZ Systems / eZ Publish & numbers
Since 1999 (10 Years+) 70+ eZ Systems employees2,7 M downloading200 000+ installations90+ business partners36000+ community members
Integrating eZ Publish to an information system
Chapter 1 : Introduction about eZ Publish
How eZ Publish works
eZ Publish
DATABASE (MySql / PostGre / …) FILESYSTEM
W e b s it e E x t r a n e t M o b ile
SEARCH
Extensions
eZ Flow
eZ Survey
eZ Webin
eZ Teamroom
API
XML / SOAP / JSON / LDAP /
ODF / …
100% TEMPLATES
CACHE
/ S c r ip t s / im p o r t s
e x p o r t s
C lu s t e r o p t io n N F S O p t io n
Integrating eZ Publish to an information system
RMLL 2010July 8th
Summary :
Chapter 1 : Introduction about eZ PublishChapter 2 : Custom & complex data modelingChapter 3 : Website factory & Cross-content publishingChapter 4 : API & External data integration (XML, SOAP, LDAP)Chapter 5 : Conclusion & questions
Integrating eZ Publish to an information system
Chapter 2 : Custom & complex data modeling
Nodes / objects / classes / attibutes / datatypes
NODES OBJECTS CLASSES ATTRIBUTES DATATYPES
Article 1
Article 2
Article 3
Article 4
Article 1
Article 2
Article 3
Article 4
Folder 1
Article 1
Folder 2
Store the position & hierarchical information
Store the content (versions /
language / drafts…)
Folder 1
Folder 2
Store the content structure
Title
Date
Short title
Long title
Author
Intro
Text
Localisation
Categories
Videos
Folder
Article
Textline
Multiline
XML (WYSIWYG)
Date
GMaps location
Object Relation
Objects relation
Options
eZ Flow
…
Integrating eZ Publish to an information system
Chapter 2 : Custom & complex data modeling
How eZ Publish manage the dynamic content storage ?
Drupal CCK comparison ?– +++ eZ Publish upgrading, complex datatypes, no modules needed, static SQL modeling
– --- Dramatic SQL queries (cache needed)
DATABASE (MySql / PostGre / …) FILESYSTEM SEARCH
NO TABLES / FIELDS ADDS -> RECORDS ADDS
NO DIRECT FIELDS STORAGE –> CONTENTS SERIALIZATION STORAGE
Images / videos / files storages (resized, renamed, …)
Search index storage (querying, facetting, complex browsing…)
ROADMAP : NO SQL storage system, like Apache Solr / Apache CouchDB
Integrating eZ Publish to an information system
RMLL 2010July 8th
Summary :
Chapter 1 : Introduction about eZ PublishChapter 2 : Custom & complex data modelingChapter 3 : Website factory & Cross-content publishingChapter 4 : API & External data integration (XML, SOAP, LDAP)Chapter 5 : Conclusion & questions
Integrating eZ Publish to an information system
Chapter 3 : Website factory & cross-content publishing
- ?W h y t o d e p lo y a m u lt i s it e s y s t e m
• C o n t e n t s h a r in g (content, medias, users, cross-publishing)
• F e a t u r e s f a c t o r iz a t io n (1 development for N websites)• Content features : News, articles, folders, pictures, videos, …
• Community features : Comments, Blogs, Forums, Newsletters, …
• Information system features : LDAP, SSO, Web Services, Databases, …
• C o s t o p t m iz a t io n
• Implicit features factorization result
• main motivation ?
Integrating eZ Publish to an information system
Chapter 3 : Website factory & cross-content publishing
?F o r w h a t k in d o f p r o je c t s
• Ve r t ic a l N e t w o r k o r g a n iz a t io n • International, national, local Websites
• H o r iz o n t a l N e t w o r k o r g a n iz a t io n
• Thematics Websites
• Temporary publications (events)
• P r o d u c t b u s in e s s m o d e l (white labelling)• Website generator – Website factory (contents, blogs, forums, …)
• Low costs Websites resseling : « ready to use »
Integrating eZ Publish to an information system
Chapter 3 : Website factory & cross-content publishing
1We b s it e 2We b s it e 3We b s it e W e b s it e N
D a t a b a s 1e
S it e a c c e 1s s
D a t a b a s 2e
D a t a b a s 3e
D a t a b a s e N
D a t a b a s e
S e r v e r
S it e a c c e 2s s
S it e a c c e 3s s
S it e a c c e s s N
1VA R 2VA R 3VA R VA R N
• 1 e Z In s t a lla t io n
• 1 D a t a b a s e f o r e a c hw e b s it e
• 1 v a r d ir e c t o r y f o r e a c h w e b s it e
• 1 s it e a c c e s s f o r (1 e a c h w e b s it e v a r
1 & d a t a b a s e)s e t t in g s
Integrating eZ Publish to an information system
Chapter 3 : Website factory & cross-content publishing
1We b s it e 2We b s it e 3We b s it e W e b s it e N
D a t a b a se
S it e a c c e 1s s
D a t a b a s e
S e r v e r
S it e a c c e 2s s
S it e a c c e 3s s
S it e a c c e s s N
VAR
• 1 e Z In s t a lla t io n
• 1 D a t a b a s e f o r a l lw e b s it e s
• 1 v a r d ir e c t o r y f o r a llw e b s it e s
• 1 s it e a c c e s s f o r (1 e a c h w e b s it e
s u b t r e e f o r e a c h)w e b s it e
F a il o v e r
Subtree 1 /2 /X
Subtree 1 /2 /Y
Subtree 1 /2 /Z
Subtree 1 /2 /N
Integrating eZ Publish to an information system
Chapter 3 : Website factory & cross-content publishing
H o w t o m a k e a c h o ic e b e t w e e n m o n o a n d m u lt i ?d a t a b a s e
HighLowSPOF sequel
-10%+30%Content, media, users & roles sharing proportion
+500-100Number of Website to generate ?
Multi databaseMono databaseQuestions
Integrating eZ Publish to an information system
Chapter 3 : Website factory & cross-content publishing
:Lis t e x is t in g We b s it e s a n d c r e a t e a n e w o n e
E d it a n e x is t in g W e b s it e
c o n f ig u r a t io n
C r e a t e a n e w W e b s it e f r o m 1c o n t e n t m o d e l
W e b s it e sm a n a g e m e n t
C r e a t e a n e w W e b s it e f r o m 2c o n t e n t m o d e l
… m o d e lN
Integrating eZ Publish to an information system
Chapter 3 : Website factory & cross-content publishing
S e le c t y o u r m a inla n g u a g e
S e le c t y o u r C S SS t y le S h e e t
( C u s t o m iz a t io n it e m s , , n u m b e r p e r p a g e c o lu m n s
- , …)d r o p d o w n m e n u
C o n t a c t e m a il
G o o g le m a p s k e y
:C r e a t e a n e w We b s it e
Integrating eZ Publish to an information system
Chapter 3 : Website factory & cross-content publishing
- : F r o n t e n d e x e m p le D e f a u lt d e s ig n A ll f e a t u r e s a r e a v a ila b le
D e f a u lt C S S S t y le S h e e t
Integrating eZ Publish to an information system
Chapter 3 : Website factory & cross-content publishing
- : F r o n t e n d e x a m p le :// -h t t p ja r d in s e n s c e n e. /p ic a r d ie c o m C u s t o m C S S
S t y le S h e e t C u s t o m
, s l id e s h o w f r o m e Z P u b lis h m e d ia
c o n t e n t( )J a v a S c r ip t
S e a r c h e n g in e
« B lo c k »m a n a g e m e n t
G o o g le m a p s
Integrating eZ Publish to an information system
RMLL 2010July 8th
Summary :
Chapter 1 : Introduction about eZ PublishChapter 2 : Custom & complex data modelingChapter 3 : Website factory & Cross-content publishingChapter 4 : API & External data integration (XML, SOAP, LDAP)Chapter 5 : Conclusion & questions
Integrating eZ Publish to an information system
Chapter 4 : API & Extrenal data integration
1 : M e t h o d C o n t e n t s y n d ic a t io n
eZ Publish
DATABASE (MySql / PostGre / …) FILESYSTEM SEARCH
API
XML / SOAP / JSON / LDAP / ODF / …
CRON
Import (create nodes, objects, create search index, refresh caches, …)
ROADMAP : New RESTfull API
+++ : enable the content sharing, content relations, back-end content editing…
--- : need PHP expert development, and optimization
Integrating eZ Publish to an information system
Chapter 4 : API & Extrenal data integration
2 : ( )M e t h o d S e r v e r s id e in c lu d e S S I
eZ Publish
DATABASE (MySql / PostGre / …) FILESYSTEM SEARCH
API
XML / SOAP / JSON / LDAP / ODF / …
CRON
cURL HTTP loading / includind
+++ : easy & fast development. Could use the cache system, URL system
--- : disable the content sharing, content relations, back-end content editing…
Integrating eZ Publish to an information system
Chapter 4 : API & Extrenal data integration
3 : ( )M e t h o d E d g e s id e in c lu d e E S I
eZ Publish
DATABASE (MySql / PostGre / …) FILESYSTEM SEARCH
API
+++ : easy & fast development. Could use the cache system, URL system
--- : disable the content sharing, content relations, back-end content editing…
HTML + ESI
HTML Parts
HTML Final
http://exemple.com/1.html
: C a s e s t u d ie :// - .h t t p c o f in o g a s h o p f r
Integrating eZ Publish to an information system Chapter 4 : API & Extrenal data integration
RMLL 2010July 8th
Conclusion & Questions
FR : http://www.gandbox.fr EN : http://share.ez.no
Integrating eZ Publish to an information system
Chapter 4 : API & Extrenal data integration
Web
eZ Publish
Widget UWA NewsletterOther XML
…
XML
iPhone
XML JSON
Working with eZ Find and SolR
Gilles Guirand – Technical Director at Kaliophttp://www.gandbox.fr
RMLL 2010July 8th
Wo r k in g w it h e Z F in d a n dS o lR
RMLL 2010July 8th
Summary :
Chapter 1 : Introduction about eZ FindChapter 2 : Content storage versus index storageChapter 3 : eZ Find, first step to the next generation CMS ?
Working with eZ Find & Solr
Chapter 1 : Introduction about eZ Find
eZ find features overview
http://www.ird.fr
Relevancy displaying, using percent values (100%, 99%, …)
Text highlighting
Working with eZ Find & Solr
Chapter 1 : Introduction about eZ Find
eZ find features overview
Custom templating, like custom HTML displaying, google maps displaying, …
http://www.weekend-esprit-de-picardie.com/
Working with eZ Find & Solr
Chapter 1 : Introduction about eZ Find
eZ find features overview
http://www.tourismebretagne.com/
Custom filtering, like a price range
Cumulative faceting search and filtering
Content browsing (a kind of search !)
Working with eZ Find & Solr
Chapter 1 : Introduction about eZ Find
eZ find features overview
– Relevency– Multi-site indexing– External content indexing (Nutch)– Multi format document indexing (Tika)– Stopwords by language (multi Sole core)– Synonyms by language (multi Solr core)– Heuristic syntax approximation– Complex browsing, facetting, filtering (Lucene)
Working with eZ Find & Solr
Chapter 1 : Introduction about eZ Find
How eZ Find work
eZ Publish
HTTP REST
Add contentUpdate contentDelete content
Move content….
Querying, faceting, …
Templating
Wo r k in g w it h e Z F in d a n dS o lR
RMLL 2010July 8th
Summary :
Chapter 1 : Introduction about eZ FindChapter 2 : Content storage versus index storageChapter 3 : eZ Find, first step to the next generation CMS ?
Working with eZ Find & Solr
Chapter 2 : Content storage VS Index storage
DATATYPES
Textline
Multiline
XML (WYSIWYG)
Date
GMaps location
Object Relation
Objects relation
Options
eZ Flow
…
eZ Publish
SOLR FIELD TYPE
String
Text
Float
…
Filters :
Lowercase
Tokenize
Stopwords
Etc.
+Transform & create Solr fields for searching, sorting, facetting…
Working with eZ Find & Solr
Chapter 2 : Content storage VS Index storage
Field type management on the Solr side
Open and read the file : /ezfind/java/solr/conf/schema.xml.This configuration file contains the hard-coded definition for a certain amount of fields (metadata fieldsfor instance), but also defines the so-called dynamic fields :
Solr relies on several configuration files, one of them is used to tell him that :- '_s' at the end of a field name means string,- '_t' for text, etc.
Working with eZ Find & Solr
Chapter 2 : Content storage VS Index storage
Field type management on the Solr side
This files can also be used to define more complex behaviours for given eZ Publish datatypes, like the keywords datatype (ezkeyword). Two different field types definitions can be found– 'keyword' for case-sensitive cases
– 'lckeyword' for lower-case cases
This example, keywords fields management, teaches a lot about Solr configuration. One can note the way Solr filters are called, how coma-based word separations are handled (PatternTokenizerFactory), case-sensitivity management (LowerCaseFilterFactory), duplicate removal (RemoveDuplicatesTokenFilterFactory), etc.
Working with eZ Find & Solr
Chapter 2 : Content storage VS Index storage
Check what Solr actually indexed
http://localhost:8983/solr/admin/
Fieldname
Value
Working with eZ Find & Solr
Chapter 2 : Content storage VS Index storage
Real life exemple
Filtering events using a date range, (multi dates event… each month event)
« Event » content class :Dates (ezmatrix ? Custom datatype )
Titre (textline)
Intro (XML)
…
PHP Class
attr_date_1
attr_date_2
attr_date_3
…
Front_end filtering
http://www.tourismebretagne.com
Wo r k in g w it h e Z F in d a n dS o lR
RMLL 2010July 8th
Summary :
Chapter 1 : Introduction about eZ FindChapter 2 : Content storage versus index storageChapter 3 : eZ Find, first step to the next generation CMS ?
Working with eZ Find & Solr Chapter 3 : eZ Find, first step to the next generation CMS ?
eZ Find : first step to the next generation CMS ?
Advanced content Indexing(indexing, querying, faceting,
browsing)
Dynamic content storage
COULD BE BETTER (no SQL)
FileSystem
FrameWork API
COULD BE BETTER
Custom API / Zeta
Hooks / workflow /Restfull API
Read the eZ Find roadmap
RMLL 2010July 8th
Conclusion & Questions
FR : http://www.gandbox.fr EN : http://share.ez.no