Chapter 1 - RMLL 2010

pielibraryInternet and Web Development

Dec 4, 2013 (3 years and 8 months ago)

96 views

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


RMLL 2010

July 8th

Summary :


Chapter 1 :

Introduction about eZ Publish

Chapter 2 :

Custom & complex data modeling

Chapter 3 :

Website factory & Cross
-
content publishing

Chapter 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
employees

2,7 M downloading

200 000+ installations

90+ business partners

36000+ community
members

Integrating eZ Publish to an information system


Chapter 1 :

Introduction about eZ Publish

Integrating eZ Publish to an information system


Chapter 1 :

Introduction about eZ Publish

Integrating eZ Publish to an information system


Chapter 1 :

Introduction about eZ Publish

And more…

Integrating eZ Publish to an information system


Chapter 1 :

Introduction about eZ Publish


How eZ Publish works

eZ Publish

DATABASE (MySql / PostGre / …)

FILESYSTEM

Website

Extranet

Mobile

SEARCH

Extensions

eZ Flow

eZ Survey

eZ Webin

eZ Teamroom

API

XML / SOAP /
JSON / LDAP /
ODF / …

100% TEMPLATES

CACHE

Scripts / imports /
exports

Cluster option

NFS Option

Integrating eZ Publish to an
information system


RMLL 2010

July 8th

Summary :


Chapter 1 :

Introduction about eZ Publish

Chapter 2 :

Custom & complex data modeling

Chapter 3 :

Website factory & Cross
-
content publishing

Chapter 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 2010

July 8th

Summary :


Chapter 1 :

Introduction about eZ Publish

Chapter 2 :
Custom & complex data modeling

Chapter 3 :

Website factory & Cross
-
content publishing

Chapter 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

Why to deploy a multi
-
site system ?


Content sharing

(content, medias, users, cross
-
publishing)



Features factorization

(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, …



Cost optmization


Implicit features factorization result


main motivation ?


Integrating eZ Publish to an information system


Chapter 3 :

Website factory & cross
-
content publishing

For what kind of projects ?


Vertical Network organization



International, national, local Websites



Horizontal Network organization


Thematics Websites


Temporary publications (events)



Product business model

(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

Website 1

Website 2

Website 3

Website N

Database 1

Siteaccess 1

Database 2

Database 3

Database N

Database
Server

Siteaccess 2

Siteaccess 3

Siteaccess N

VAR 1

VAR 2

VAR 3

VAR N


1 eZ Installation


1 Database for each website


1 var directory for each
website


1 siteaccess for each website
(1 var & 1 database settings)

Integrating eZ Publish to an information system


Chapter 3 :

Website factory & cross
-
content publishing

Website 1

Website 2

Website 3

Website N

Database

Siteaccess 1

Database
Server

Siteaccess 2

Siteaccess 3

Siteaccess N

VAR


1 eZ Installation


1 Database for all websites


1 var directory for all websites


1 siteaccess for each website
(1 subtree for each website)

Fail over

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

How to make a choice between mono and multi database ?

Questions

Mono database

Multi database

Number of Website
to generate ?

-
100

+500

SPOF sequel

Low

High

Content, media,
users & roles
sharing proportion

+30%

-
10%

Integrating eZ Publish to an information system


Chapter 3 :

Website factory & cross
-
content publishing

List existing Websites and create a new one :

Edit an existing Web
site configuration

Create a new Website
from content model 1

Websites management

Create a new Website
from content model 2

… model N

Integrating eZ Publish to an information system


Chapter 3 :

Website factory & cross
-
content publishing

Select your main language

Select your CSS StyleSheet

Customization (items number per page,
columns, drop
-
down menu, …)

Contact email

Google maps key

Create a new Website :

Integrating eZ Publish to an information system


Chapter 3 :

Website factory & cross
-
content publishing

Front
-
end exemple : Default design

All features are available

Default CSS StyleSheet

Integrating eZ Publish to an information system


Chapter 3 :

Website factory & cross
-
content publishing

Front
-
end example :
http://jardinsenscene
-
picardie.com/

Custom CSS StyleSheet

Custom slideshow, from
eZ Publish media
content (JavaScript)

Search engine

« Block » management

Google maps

Integrating eZ Publish to an
information system


RMLL 2010

July 8th

Summary :


Chapter 1 :

Introduction about eZ Publish

Chapter 2 :
Custom & complex data modeling

Chapter 3 :

Website factory & Cross
-
content publishing

Chapter 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

Method 1 : Content syndication

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

Method 2 : Server side include (SSI)

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

Method 3 : Edge side include (ESI)

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



Case studie :
http://cofinoga
-
shop.fr


Integrating eZ Publish to an information system


Chapter 4 :

API & Extrenal data integration

RMLL 2010

July 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

Newsletter

Other XML



XML

iPhone

XML

JSON

Working with eZ Find and SolR



Gilles Guirand



Technical Director at Kaliop

http://www.gandbox.fr



RMLL 2010

July 8th

Working with eZ Find and SolR


RMLL 2010

July 8th

Summary :


Chapter 1 :

Introduction about eZ Find

Chapter 2 :
Content storage versus index storage

Chapter 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 content

Update content

Delete content

Move content

….

Querying, faceting, …

Templating

Working with eZ Find and SolR


RMLL 2010

July 8th

Summary :


Chapter 1 :

Introduction about eZ Find

Chapter 2 :

Content storage versus index storage

Chapter 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 fields

for 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

Working with eZ Find and SolR


RMLL 2010

July 8th

Summary :


Chapter 1 :

Introduction about eZ Find

Chapter 2 :
Content storage versus index storage

Chapter 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 2010

July 8th

Conclusion & Questions

FR :
http://www.gandbox.fr

EN :
http://share.ez.no