Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Tesseract, T3UNIFR12
1. Le projet Tesseract
Système d’affichage universel pour
TYPO3
François Suter, Développeur TYPO3 senior, fsuter@cobweb.ch
T3UNIFR12 - Annecy, 25 juin 2012
2. présentation
•développe avec TYPO3
depuis 2004
•membre du Core Team
depuis 2008
•dirige équipe de documentation
depuis 2011
4. cobweb.ch
agence web, depuis 1996
> 8 ans expertise TYPO3
intégrateur n°1 en Suisse Romande
équipe expérimentée en
consultance
design web
développement TYPO3 & autres
PME, multinationales & ONG
5. ecodev.ch
Services IT en Suisse
> 6 ans d’expertise TYPO3
7 employés
25. filtres fournisseurs afficheurs
D at a Data Data
F i l te r Provider Consumer
re
qu
View
ut
es
tp
t
ou
Controller
D at a Data
F i l te r Provider
... output
re q u e s t
Model
26. filtres fournisseurs afficheurs
D at a Data Data
F i l te r Provider Consumer
re
qu
View
ut
es
tp
t
ou
Controller
D at a Data
F i l te r Provider
... output
re q u e s t
Model
27. filtres fournisseurs afficheurs
D at a Data Data
F i l te r Provider Consumer
re
qu
View
ut
es
tp
t
ou
Controller
D at a Data
F i l te r Provider
... output
re q u e s t
Model
28. filtres fournisseurs afficheurs
D at a Data Data
F i l te r Provider Consumer
re
qu
View
ut
es
tp
t
ou
Controller
D at a Data
F i l te r Provider
... output
re q u e s t
Model
29. filtres fournisseurs afficheurs
D at a Data Data
F i l te r Provider Consumer
re
qu
View
ut
es
tp
t
ou
Controller
D at a Data
F i l te r Provider
... output
re q u e s t
Model
30. filtres fournisseurs afficheurs
D at a Data Data
F i l te r Provider Consumer
re
qu
View
ut
es
tp
t
ou
Controller
D at a Data
F i l te r Provider
... output
re q u e s t
Model
31. filtres fournisseurs afficheurs
D at a Data Data
F i l te r Provider Consumer
re
qu
View
ut
es
tp
t
ou
Controller
D at a Data
F i l te r Provider
... output
re q u e s t
Model
32. filtres fournisseurs afficheurs
D at a Data Data
F i l te r Provider Consumer
re
qu
View
ut
es
tp
t
ou
Controller
D at a Data
F i l te r Provider
... output
re q u e s t
Model
33. filtres fournisseurs afficheurs
dataquery (SQL)
D at a Data
googlequery (Google box) Data
F i l te r Provider Consumer
tagpackprovider (Tag Pack)
re
qu
View
ut
es
tp
t
ou
Controller
D at a Data
F i l te r Provider
... output
re q u e s t
Model
34. filtres fournisseurs afficheurs
dataquery (SQL)
D at a Data templatedisplay (HTML)
Data
googlequery (Google box)
F i l te r Provider fluiddisplay (Fluid)
Consumer
tagpackprovider (Tag Pack)
phpdisplay (PHP)
re
qu
View
ut
es
tp
t
ou
Controller
D at a Data
F i l te r Provider
... output
re q u e s t
Model
35. filtres fournisseurs afficheurs
dataquery (SQL)
D at a Data templatedisplay (HTML)
Data
googlequery (Google box)
F i l te r Provider fluiddisplay (Fluid)
Consumer
tagpackprovider (Tag Pack)
phpdisplay (PHP)
re
qu
View
ut
es
tp
t
ou
displaycontroller
Controller
displaycontroller_advanced
D at a Data
F i l te r Provider
... output
re q u e s t
Model
36. filtres fournisseurs afficheurs
dataquery (SQL)
D at a Data templatedisplay (HTML)
Data
googlequery (Google box)
datafilter r
F i l te Provider fluiddisplay (Fluid)
Consumer
tagpackprovider (Tag Pack)
phpdisplay (PHP)
re
qu
View
ut
es
tp
t
ou
displaycontroller
Controller
displaycontroller_advanced
D at a Data
F i l te r Provider
... output
re q u e s t
Model
37. filtres fournisseurs afficheurs
dataquery (SQL)
D at a Data templatedisplay (HTML)
Data
googlequery (Google box)
datafilter r
F i l te Provider fluiddisplay (Fluid)
Consumer
tagpackprovider (Tag Pack)
phpdisplay (PHP)
re
qu
View
ut
es
tp
t
ou
displaycontroller
Controller
displaycontroller_advanced
D at a Data
F i l te r Provider
... output
re q u e s t
tesseract
expressions
Model overlays
context
41. Fédération Internationale de Motocyclisme
Une grande variété de données provenant de sources
externes
Fournisseur de données
42. Fédération Internationale de Motocyclisme
Une grande variété de données provenant de sources
externes
Fournisseur de données
43. Fédération Internationale de Motocyclisme
Une grande variété de données provenant de sources
externes
Fournisseur de données
Filtre de données
44. Fédération Internationale de Motocyclisme
Une grande variété de données provenant de sources
externes
Fournisseur de données
Filtre de données
45. Fédération Internationale de Motocyclisme
Une grande variété de données provenant de sources
externes
Fournisseur de données Afficheur
Filtre de données
46. Fédération Internationale de Motocyclisme
Une grande variété de données provenant de sources
externes
Fournisseur de données Afficheur
Filtre de données
47. Fédération Internationale de Motocyclisme
Une grande variété de données provenant de sources
externes
Fournisseur de données Afficheur
Contrôleur
Filtre de données
48. Fédération Internationale de Motocyclisme
Une grande variété de données provenant de sources
externes
Fournisseur de données Afficheur
Contrôleur
Filtre de données
49. Fédération Internationale de Motocyclisme
Une grande variété de données provenant de sources
externes
Fournisseur de données Afficheur
Contrôleur
Résultat
Filtre de données
76. utilisez et partagez...
les extensions sont toutes
disponibles dans le TER
site officiel
www.typo3-tesseract.com
@TYPO3_tesseract
Notes de l'éditeur
DME\n
\n
DME\n
Founded in 1996, Cobweb is a Swiss web agency in Geneva.\nWith over 6 years experience on TYPO3, we are the leading TYPO3 integrator in Western Swizerland.\n\nOur experienced team consists of 10 senior consultant, webdesigner and developer.\n\nOur clients are local Small and Medium Entreprises, Major companies like Manpower or non-profit organizations like International Federation of Red Cross and Red Crescent Societies.\n
Ecodev is a Swiss IT services company based in Neuchâtel.\nEcodev has been using TYPO3 since 2006 and consists of a team 7 people.\n
François is the initiator and architect of the project. He was supported by Fabien and Roberto.\nMy self, as usual for business developers, I haven't really worked on the project... but I had the pleasure to experience it on various client projects.\n
François is the initiator and architect of the project. He was supported by Fabien and Roberto.\nMy self, as usual for business developers, I haven't really worked on the project... but I had the pleasure to experience it on various client projects.\n
François is the initiator and architect of the project. He was supported by Fabien and Roberto.\nMy self, as usual for business developers, I haven't really worked on the project... but I had the pleasure to experience it on various client projects.\n
Over the years we worked on a large number of web sites. Our experience is that - although every web site is different - there’s one particular requirement that we need to meet in most projects. So we set out to create a general solution to this recurring need.\n
So what’s that requirement? It’s the need to display variously structured information on the web site. This can be...\n- contacts, locations, pieces of real estate, job offers, pharmacies, you name it\nto sum it up “stuff”\n\n
So what’s that requirement? It’s the need to display variously structured information on the web site. This can be...\n- contacts, locations, pieces of real estate, job offers, pharmacies, you name it\nto sum it up “stuff”\n\n
So what’s that requirement? It’s the need to display variously structured information on the web site. This can be...\n- contacts, locations, pieces of real estate, job offers, pharmacies, you name it\nto sum it up “stuff”\n\n
So what’s that requirement? It’s the need to display variously structured information on the web site. This can be...\n- contacts, locations, pieces of real estate, job offers, pharmacies, you name it\nto sum it up “stuff”\n\n
So what’s that requirement? It’s the need to display variously structured information on the web site. This can be...\n- contacts, locations, pieces of real estate, job offers, pharmacies, you name it\nto sum it up “stuff”\n\n
So what’s that requirement? It’s the need to display variously structured information on the web site. This can be...\n- contacts, locations, pieces of real estate, job offers, pharmacies, you name it\nto sum it up “stuff”\n\n
So what’s that requirement? It’s the need to display variously structured information on the web site. This can be...\n- contacts, locations, pieces of real estate, job offers, pharmacies, you name it\nto sum it up “stuff”\n\n
So what’s that requirement? It’s the need to display variously structured information on the web site. This can be...\n- contacts, locations, pieces of real estate, job offers, pharmacies, you name it\nto sum it up “stuff”\n\n
So what’s that requirement? It’s the need to display variously structured information on the web site. This can be...\n- contacts, locations, pieces of real estate, job offers, pharmacies, you name it\nto sum it up “stuff”\n\n
So what’s that requirement? It’s the need to display variously structured information on the web site. This can be...\n- contacts, locations, pieces of real estate, job offers, pharmacies, you name it\nto sum it up “stuff”\n\n
So what’s that requirement? It’s the need to display variously structured information on the web site. This can be...\n- contacts, locations, pieces of real estate, job offers, pharmacies, you name it\nto sum it up “stuff”\n\n
So what’s that requirement? It’s the need to display variously structured information on the web site. This can be...\n- contacts, locations, pieces of real estate, job offers, pharmacies, you name it\nto sum it up “stuff”\n\n
So what’s that requirement? It’s the need to display variously structured information on the web site. This can be...\n- contacts, locations, pieces of real estate, job offers, pharmacies, you name it\nto sum it up “stuff”\n\n
So what’s that requirement? It’s the need to display variously structured information on the web site. This can be...\n- contacts, locations, pieces of real estate, job offers, pharmacies, you name it\nto sum it up “stuff”\n\n
So what’s that requirement? It’s the need to display variously structured information on the web site. This can be...\n- contacts, locations, pieces of real estate, job offers, pharmacies, you name it\nto sum it up “stuff”\n\n
So what’s that requirement? It’s the need to display variously structured information on the web site. This can be...\n- contacts, locations, pieces of real estate, job offers, pharmacies, you name it\nto sum it up “stuff”\n\n
So what’s that requirement? It’s the need to display variously structured information on the web site. This can be...\n- contacts, locations, pieces of real estate, job offers, pharmacies, you name it\nto sum it up “stuff”\n\n
So what’s that requirement? It’s the need to display variously structured information on the web site. This can be...\n- contacts, locations, pieces of real estate, job offers, pharmacies, you name it\nto sum it up “stuff”\n\n
So what’s that requirement? It’s the need to display variously structured information on the web site. This can be...\n- contacts, locations, pieces of real estate, job offers, pharmacies, you name it\nto sum it up “stuff”\n\n
Clients want to display stuff on their web site, stuff that often comes from internal systems and represent their domain of activity\nAnd what do we want to do with that stuff? Most of the time, always the same:\n- list it\n- browse it\n- view its details\n- search it\n- and create cross-links between various pieces of information\nIf you don’t have some special solution, you find yourself repeating the same developments over and over\nThe TYPO3 Extension Repository is full of extensions each dedicated to one particular type of structured information\nThis is not a solution\n
Clients want to display stuff on their web site, stuff that often comes from internal systems and represent their domain of activity\nAnd what do we want to do with that stuff? Most of the time, always the same:\n- list it\n- browse it\n- view its details\n- search it\n- and create cross-links between various pieces of information\nIf you don’t have some special solution, you find yourself repeating the same developments over and over\nThe TYPO3 Extension Repository is full of extensions each dedicated to one particular type of structured information\nThis is not a solution\n
Clients want to display stuff on their web site, stuff that often comes from internal systems and represent their domain of activity\nAnd what do we want to do with that stuff? Most of the time, always the same:\n- list it\n- browse it\n- view its details\n- search it\n- and create cross-links between various pieces of information\nIf you don’t have some special solution, you find yourself repeating the same developments over and over\nThe TYPO3 Extension Repository is full of extensions each dedicated to one particular type of structured information\nThis is not a solution\n
Clients want to display stuff on their web site, stuff that often comes from internal systems and represent their domain of activity\nAnd what do we want to do with that stuff? Most of the time, always the same:\n- list it\n- browse it\n- view its details\n- search it\n- and create cross-links between various pieces of information\nIf you don’t have some special solution, you find yourself repeating the same developments over and over\nThe TYPO3 Extension Repository is full of extensions each dedicated to one particular type of structured information\nThis is not a solution\n
Clients want to display stuff on their web site, stuff that often comes from internal systems and represent their domain of activity\nAnd what do we want to do with that stuff? Most of the time, always the same:\n- list it\n- browse it\n- view its details\n- search it\n- and create cross-links between various pieces of information\nIf you don’t have some special solution, you find yourself repeating the same developments over and over\nThe TYPO3 Extension Repository is full of extensions each dedicated to one particular type of structured information\nThis is not a solution\n
Clients want to display stuff on their web site, stuff that often comes from internal systems and represent their domain of activity\nAnd what do we want to do with that stuff? Most of the time, always the same:\n- list it\n- browse it\n- view its details\n- search it\n- and create cross-links between various pieces of information\nIf you don’t have some special solution, you find yourself repeating the same developments over and over\nThe TYPO3 Extension Repository is full of extensions each dedicated to one particular type of structured information\nThis is not a solution\n
Clients want to display stuff on their web site, stuff that often comes from internal systems and represent their domain of activity\nAnd what do we want to do with that stuff? Most of the time, always the same:\n- list it\n- browse it\n- view its details\n- search it\n- and create cross-links between various pieces of information\nIf you don’t have some special solution, you find yourself repeating the same developments over and over\nThe TYPO3 Extension Repository is full of extensions each dedicated to one particular type of structured information\nThis is not a solution\n
In 2006 I presented my first thoughts about the need for a general solution at T3DD06.\nNothing much happened afterwards, but in late 2007 I had an opportunity to develop a first rough solution, which was presented during T3DD08\nIn 2008 several large projects gave us the opportunity to start the real development and to put the solution to test on large, high-traffic web sites.\nThe project matured all the way to the current day and we chose T3CON10 as a deadline for going public.\n
So now on to the solution itself.\nWhat’s the possible solution to this conundrum? You can see it coming: a generic solution.\nBig words\nDoes that scare you? It should.\n
Generic solutions...\nThat’s often how it ends up. You want to do everything and you end up with an overly complex structure which nobody understands anymore after a while.\nBut it needs not be so\nThere are clever generic solutions!\nThey rely on a simple principle: modularity\n
Generic solutions...\nThat’s often how it ends up. You want to do everything and you end up with an overly complex structure which nobody understands anymore after a while.\nBut it needs not be so\nThere are clever generic solutions!\nThey rely on a simple principle: modularity\n
How did we make this modularity come true?\nThis is the architecture of our solution.\nAt the center is a controller which receives a request to produce some output. It calls on something called a Data Provider which returns a set of data.\nThis data is passed to a Data Consumer to produce some output, which is returned by the controller. A typical output will be HTML to display in the TYPO3 FE.\nHow can that work?\nData Providers and Data Consumers exchange data in standardized formats. This means that there can exist any number of consumers and providers who don’t need to know anything about one another. They must be able to produce or handle the standard data formats. In effect this is an implementation of the Model-View-Controller pattern.\nOn top of that Data Providers may receive input from Data Filters that is used to restrict the data returned by the Data Provider (think browsing, filtering, searching).\n\n
How did we make this modularity come true?\nThis is the architecture of our solution.\nAt the center is a controller which receives a request to produce some output. It calls on something called a Data Provider which returns a set of data.\nThis data is passed to a Data Consumer to produce some output, which is returned by the controller. A typical output will be HTML to display in the TYPO3 FE.\nHow can that work?\nData Providers and Data Consumers exchange data in standardized formats. This means that there can exist any number of consumers and providers who don’t need to know anything about one another. They must be able to produce or handle the standard data formats. In effect this is an implementation of the Model-View-Controller pattern.\nOn top of that Data Providers may receive input from Data Filters that is used to restrict the data returned by the Data Provider (think browsing, filtering, searching).\n\n
How did we make this modularity come true?\nThis is the architecture of our solution.\nAt the center is a controller which receives a request to produce some output. It calls on something called a Data Provider which returns a set of data.\nThis data is passed to a Data Consumer to produce some output, which is returned by the controller. A typical output will be HTML to display in the TYPO3 FE.\nHow can that work?\nData Providers and Data Consumers exchange data in standardized formats. This means that there can exist any number of consumers and providers who don’t need to know anything about one another. They must be able to produce or handle the standard data formats. In effect this is an implementation of the Model-View-Controller pattern.\nOn top of that Data Providers may receive input from Data Filters that is used to restrict the data returned by the Data Provider (think browsing, filtering, searching).\n\n
How did we make this modularity come true?\nThis is the architecture of our solution.\nAt the center is a controller which receives a request to produce some output. It calls on something called a Data Provider which returns a set of data.\nThis data is passed to a Data Consumer to produce some output, which is returned by the controller. A typical output will be HTML to display in the TYPO3 FE.\nHow can that work?\nData Providers and Data Consumers exchange data in standardized formats. This means that there can exist any number of consumers and providers who don’t need to know anything about one another. They must be able to produce or handle the standard data formats. In effect this is an implementation of the Model-View-Controller pattern.\nOn top of that Data Providers may receive input from Data Filters that is used to restrict the data returned by the Data Provider (think browsing, filtering, searching).\n\n
How did we make this modularity come true?\nThis is the architecture of our solution.\nAt the center is a controller which receives a request to produce some output. It calls on something called a Data Provider which returns a set of data.\nThis data is passed to a Data Consumer to produce some output, which is returned by the controller. A typical output will be HTML to display in the TYPO3 FE.\nHow can that work?\nData Providers and Data Consumers exchange data in standardized formats. This means that there can exist any number of consumers and providers who don’t need to know anything about one another. They must be able to produce or handle the standard data formats. In effect this is an implementation of the Model-View-Controller pattern.\nOn top of that Data Providers may receive input from Data Filters that is used to restrict the data returned by the Data Provider (think browsing, filtering, searching).\n\n
How did we make this modularity come true?\nThis is the architecture of our solution.\nAt the center is a controller which receives a request to produce some output. It calls on something called a Data Provider which returns a set of data.\nThis data is passed to a Data Consumer to produce some output, which is returned by the controller. A typical output will be HTML to display in the TYPO3 FE.\nHow can that work?\nData Providers and Data Consumers exchange data in standardized formats. This means that there can exist any number of consumers and providers who don’t need to know anything about one another. They must be able to produce or handle the standard data formats. In effect this is an implementation of the Model-View-Controller pattern.\nOn top of that Data Providers may receive input from Data Filters that is used to restrict the data returned by the Data Provider (think browsing, filtering, searching).\n\n
The modularity translates into a number of extensions, each with its own specialization.\nData Providers: dataquery (SQL-based), googlequery (Google Search Appliance or Google Mini), tagpackprovider (Tag Pack)\nData Consumers: templatedisplay (HTML templates), phpdisplay (straight templating in PHP)\nControllers: displaycontroller and displaycontroller_advanced which allows for more complicated interactions between the components\nData Filters: only datafilter, but it’s very powerful and we’ll come back to that later\nAdditionally there are a number of related extensions: tesseract (which is obviously a base extension), expressions (used by datafilter, more later), overlays (used by dataquery to transparently handle translations) and context (used to define some global values in TypoScript which can be picked up with datafilter - this is a more advanced concept of Tesseract, which I will not cover here)\n\n
The modularity translates into a number of extensions, each with its own specialization.\nData Providers: dataquery (SQL-based), googlequery (Google Search Appliance or Google Mini), tagpackprovider (Tag Pack)\nData Consumers: templatedisplay (HTML templates), phpdisplay (straight templating in PHP)\nControllers: displaycontroller and displaycontroller_advanced which allows for more complicated interactions between the components\nData Filters: only datafilter, but it’s very powerful and we’ll come back to that later\nAdditionally there are a number of related extensions: tesseract (which is obviously a base extension), expressions (used by datafilter, more later), overlays (used by dataquery to transparently handle translations) and context (used to define some global values in TypoScript which can be picked up with datafilter - this is a more advanced concept of Tesseract, which I will not cover here)\n\n
The modularity translates into a number of extensions, each with its own specialization.\nData Providers: dataquery (SQL-based), googlequery (Google Search Appliance or Google Mini), tagpackprovider (Tag Pack)\nData Consumers: templatedisplay (HTML templates), phpdisplay (straight templating in PHP)\nControllers: displaycontroller and displaycontroller_advanced which allows for more complicated interactions between the components\nData Filters: only datafilter, but it’s very powerful and we’ll come back to that later\nAdditionally there are a number of related extensions: tesseract (which is obviously a base extension), expressions (used by datafilter, more later), overlays (used by dataquery to transparently handle translations) and context (used to define some global values in TypoScript which can be picked up with datafilter - this is a more advanced concept of Tesseract, which I will not cover here)\n\n
The modularity translates into a number of extensions, each with its own specialization.\nData Providers: dataquery (SQL-based), googlequery (Google Search Appliance or Google Mini), tagpackprovider (Tag Pack)\nData Consumers: templatedisplay (HTML templates), phpdisplay (straight templating in PHP)\nControllers: displaycontroller and displaycontroller_advanced which allows for more complicated interactions between the components\nData Filters: only datafilter, but it’s very powerful and we’ll come back to that later\nAdditionally there are a number of related extensions: tesseract (which is obviously a base extension), expressions (used by datafilter, more later), overlays (used by dataquery to transparently handle translations) and context (used to define some global values in TypoScript which can be picked up with datafilter - this is a more advanced concept of Tesseract, which I will not cover here)\n\n
The modularity translates into a number of extensions, each with its own specialization.\nData Providers: dataquery (SQL-based), googlequery (Google Search Appliance or Google Mini), tagpackprovider (Tag Pack)\nData Consumers: templatedisplay (HTML templates), phpdisplay (straight templating in PHP)\nControllers: displaycontroller and displaycontroller_advanced which allows for more complicated interactions between the components\nData Filters: only datafilter, but it’s very powerful and we’ll come back to that later\nAdditionally there are a number of related extensions: tesseract (which is obviously a base extension), expressions (used by datafilter, more later), overlays (used by dataquery to transparently handle translations) and context (used to define some global values in TypoScript which can be picked up with datafilter - this is a more advanced concept of Tesseract, which I will not cover here)\n\n
How does that translate into real projects? Tesseract is not some conceptual piece of code. It has been powering large web sites for about two years.\nLet’s look at a couple of them to better understand how the Tesseract components are called into action.\n\n\n
The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3.\nThanks to Tesseract no specific extension needed to be developed to display this data.\nThe workhorse here is Data Query. We use SQL to query any of the imported tables.\nHere’s an example query, aimed at retrieving a list of races.\nThis query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season.\nOn the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering.\nFinally everything is bound together by a Display Controller.\nWhen the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller.\nYou can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.\n\n\n
The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3.\nThanks to Tesseract no specific extension needed to be developed to display this data.\nThe workhorse here is Data Query. We use SQL to query any of the imported tables.\nHere’s an example query, aimed at retrieving a list of races.\nThis query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season.\nOn the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering.\nFinally everything is bound together by a Display Controller.\nWhen the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller.\nYou can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.\n\n\n
The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3.\nThanks to Tesseract no specific extension needed to be developed to display this data.\nThe workhorse here is Data Query. We use SQL to query any of the imported tables.\nHere’s an example query, aimed at retrieving a list of races.\nThis query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season.\nOn the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering.\nFinally everything is bound together by a Display Controller.\nWhen the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller.\nYou can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.\n\n\n
The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3.\nThanks to Tesseract no specific extension needed to be developed to display this data.\nThe workhorse here is Data Query. We use SQL to query any of the imported tables.\nHere’s an example query, aimed at retrieving a list of races.\nThis query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season.\nOn the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering.\nFinally everything is bound together by a Display Controller.\nWhen the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller.\nYou can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.\n\n\n
The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3.\nThanks to Tesseract no specific extension needed to be developed to display this data.\nThe workhorse here is Data Query. We use SQL to query any of the imported tables.\nHere’s an example query, aimed at retrieving a list of races.\nThis query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season.\nOn the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering.\nFinally everything is bound together by a Display Controller.\nWhen the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller.\nYou can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.\n\n\n
The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3.\nThanks to Tesseract no specific extension needed to be developed to display this data.\nThe workhorse here is Data Query. We use SQL to query any of the imported tables.\nHere’s an example query, aimed at retrieving a list of races.\nThis query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season.\nOn the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering.\nFinally everything is bound together by a Display Controller.\nWhen the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller.\nYou can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.\n\n\n
The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3.\nThanks to Tesseract no specific extension needed to be developed to display this data.\nThe workhorse here is Data Query. We use SQL to query any of the imported tables.\nHere’s an example query, aimed at retrieving a list of races.\nThis query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season.\nOn the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering.\nFinally everything is bound together by a Display Controller.\nWhen the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller.\nYou can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.\n\n\n
The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3.\nThanks to Tesseract no specific extension needed to be developed to display this data.\nThe workhorse here is Data Query. We use SQL to query any of the imported tables.\nHere’s an example query, aimed at retrieving a list of races.\nThis query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season.\nOn the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering.\nFinally everything is bound together by a Display Controller.\nWhen the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller.\nYou can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.\n\n\n
The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3.\nThanks to Tesseract no specific extension needed to be developed to display this data.\nThe workhorse here is Data Query. We use SQL to query any of the imported tables.\nHere’s an example query, aimed at retrieving a list of races.\nThis query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season.\nOn the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering.\nFinally everything is bound together by a Display Controller.\nWhen the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller.\nYou can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.\n\n\n
The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3.\nThanks to Tesseract no specific extension needed to be developed to display this data.\nThe workhorse here is Data Query. We use SQL to query any of the imported tables.\nHere’s an example query, aimed at retrieving a list of races.\nThis query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season.\nOn the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering.\nFinally everything is bound together by a Display Controller.\nWhen the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller.\nYou can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.\n\n\n
The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3.\nThanks to Tesseract no specific extension needed to be developed to display this data.\nThe workhorse here is Data Query. We use SQL to query any of the imported tables.\nHere’s an example query, aimed at retrieving a list of races.\nThis query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season.\nOn the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering.\nFinally everything is bound together by a Display Controller.\nWhen the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller.\nYou can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.\n\n\n
The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3.\nThanks to Tesseract no specific extension needed to be developed to display this data.\nThe workhorse here is Data Query. We use SQL to query any of the imported tables.\nHere’s an example query, aimed at retrieving a list of races.\nThis query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season.\nOn the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering.\nFinally everything is bound together by a Display Controller.\nWhen the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller.\nYou can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.\n\n\n
The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3.\nThanks to Tesseract no specific extension needed to be developed to display this data.\nThe workhorse here is Data Query. We use SQL to query any of the imported tables.\nHere’s an example query, aimed at retrieving a list of races.\nThis query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season.\nOn the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering.\nFinally everything is bound together by a Display Controller.\nWhen the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller.\nYou can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.\n\n\n
The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3.\nThanks to Tesseract no specific extension needed to be developed to display this data.\nThe workhorse here is Data Query. We use SQL to query any of the imported tables.\nHere’s an example query, aimed at retrieving a list of races.\nThis query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season.\nOn the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering.\nFinally everything is bound together by a Display Controller.\nWhen the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller.\nYou can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.\n\n\n
The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3.\nThanks to Tesseract no specific extension needed to be developed to display this data.\nThe workhorse here is Data Query. We use SQL to query any of the imported tables.\nHere’s an example query, aimed at retrieving a list of races.\nThis query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season.\nOn the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering.\nFinally everything is bound together by a Display Controller.\nWhen the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller.\nYou can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.\n\n\n
The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3.\nThanks to Tesseract no specific extension needed to be developed to display this data.\nThe workhorse here is Data Query. We use SQL to query any of the imported tables.\nHere’s an example query, aimed at retrieving a list of races.\nThis query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season.\nOn the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering.\nFinally everything is bound together by a Display Controller.\nWhen the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller.\nYou can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.\n\n\n
The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3.\nThanks to Tesseract no specific extension needed to be developed to display this data.\nThe workhorse here is Data Query. We use SQL to query any of the imported tables.\nHere’s an example query, aimed at retrieving a list of races.\nThis query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season.\nOn the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering.\nFinally everything is bound together by a Display Controller.\nWhen the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller.\nYou can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.\n\n\n
The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3.\nThanks to Tesseract no specific extension needed to be developed to display this data.\nThe workhorse here is Data Query. We use SQL to query any of the imported tables.\nHere’s an example query, aimed at retrieving a list of races.\nThis query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season.\nOn the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering.\nFinally everything is bound together by a Display Controller.\nWhen the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller.\nYou can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.\n\n\n
The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3.\nThanks to Tesseract no specific extension needed to be developed to display this data.\nThe workhorse here is Data Query. We use SQL to query any of the imported tables.\nHere’s an example query, aimed at retrieving a list of races.\nThis query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season.\nOn the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering.\nFinally everything is bound together by a Display Controller.\nWhen the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller.\nYou can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.\n\n\n
The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3.\nThanks to Tesseract no specific extension needed to be developed to display this data.\nThe workhorse here is Data Query. We use SQL to query any of the imported tables.\nHere’s an example query, aimed at retrieving a list of races.\nThis query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season.\nOn the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering.\nFinally everything is bound together by a Display Controller.\nWhen the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller.\nYou can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.\n\n\n
The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3.\nThanks to Tesseract no specific extension needed to be developed to display this data.\nThe workhorse here is Data Query. We use SQL to query any of the imported tables.\nHere’s an example query, aimed at retrieving a list of races.\nThis query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season.\nOn the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering.\nFinally everything is bound together by a Display Controller.\nWhen the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller.\nYou can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.\n\n\n
The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3.\nThanks to Tesseract no specific extension needed to be developed to display this data.\nThe workhorse here is Data Query. We use SQL to query any of the imported tables.\nHere’s an example query, aimed at retrieving a list of races.\nThis query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season.\nOn the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering.\nFinally everything is bound together by a Display Controller.\nWhen the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller.\nYou can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.\n\n\n
The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3.\nThanks to Tesseract no specific extension needed to be developed to display this data.\nThe workhorse here is Data Query. We use SQL to query any of the imported tables.\nHere’s an example query, aimed at retrieving a list of races.\nThis query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season.\nOn the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering.\nFinally everything is bound together by a Display Controller.\nWhen the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller.\nYou can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.\n\n\n
The International Motorcycle Federation represent a very typical case. The client has a vast quantity of data in external systems: everything related to races (pilots, manufacturers, championships, results, etc.) in a proprietary database and official documents managed with Alfresco. All this data is imported into TYPO3.\nThanks to Tesseract no specific extension needed to be developed to display this data.\nThe workhorse here is Data Query. We use SQL to query any of the imported tables.\nHere’s an example query, aimed at retrieving a list of races.\nThis query is not executed as is. A Data Filter is applied to it, restricting the selection of races to one particular championship and one particular season.\nOn the other hand is the template. We use templatedisplay to use a HTML template, complete markers mapped to database fields and TypoScript configuration for finer rendering.\nFinally everything is bound together by a Display Controller.\nWhen the Data Query has executed its query, the resulting data set is passed to the Template Display component, which produces output, which is in turn sent to the FE by the Display Controller.\nYou can see how this matches the schema presented before, but this time with real-world components applied to a real-world web site.\n\n\n
A second example of real-life, large web site using Tesseract is Manpower Switzerland.\nHere again we have data coming from third-party system, namely job offers pushed to TYPO3 by a specialized job offers and applications management system.\nThis project relies on a Google Mini Server for searching, but we needed to bind search results with Tesseract to display customized lists of job offers.\nThe overall schema is the same as before, so I’ll mention what is really specific here.\nOne interesting point is that we created special pages using Tesseract that contain the job offer itself plus a number of information relating to it (in particular its primary key) as meta data. Using this information, Google Mini is able to perform a full-text search, but return the corresponding jobs primary keys.\nThe querying itself is performed using the “googlequery” extension which queries the Google server and returns the resulting data according to the Tesseract standards.\nHere are some screenshots of “googlequery”, first is some general information, in the second tab comes the selection of information that we want to retrieve. This information will be available for mapping into the HTML template the same way that we saw in the previous example.\n
A second example of real-life, large web site using Tesseract is Manpower Switzerland.\nHere again we have data coming from third-party system, namely job offers pushed to TYPO3 by a specialized job offers and applications management system.\nThis project relies on a Google Mini Server for searching, but we needed to bind search results with Tesseract to display customized lists of job offers.\nThe overall schema is the same as before, so I’ll mention what is really specific here.\nOne interesting point is that we created special pages using Tesseract that contain the job offer itself plus a number of information relating to it (in particular its primary key) as meta data. Using this information, Google Mini is able to perform a full-text search, but return the corresponding jobs primary keys.\nThe querying itself is performed using the “googlequery” extension which queries the Google server and returns the resulting data according to the Tesseract standards.\nHere are some screenshots of “googlequery”, first is some general information, in the second tab comes the selection of information that we want to retrieve. This information will be available for mapping into the HTML template the same way that we saw in the previous example.\n
A second example of real-life, large web site using Tesseract is Manpower Switzerland.\nHere again we have data coming from third-party system, namely job offers pushed to TYPO3 by a specialized job offers and applications management system.\nThis project relies on a Google Mini Server for searching, but we needed to bind search results with Tesseract to display customized lists of job offers.\nThe overall schema is the same as before, so I’ll mention what is really specific here.\nOne interesting point is that we created special pages using Tesseract that contain the job offer itself plus a number of information relating to it (in particular its primary key) as meta data. Using this information, Google Mini is able to perform a full-text search, but return the corresponding jobs primary keys.\nThe querying itself is performed using the “googlequery” extension which queries the Google server and returns the resulting data according to the Tesseract standards.\nHere are some screenshots of “googlequery”, first is some general information, in the second tab comes the selection of information that we want to retrieve. This information will be available for mapping into the HTML template the same way that we saw in the previous example.\n
A second example of real-life, large web site using Tesseract is Manpower Switzerland.\nHere again we have data coming from third-party system, namely job offers pushed to TYPO3 by a specialized job offers and applications management system.\nThis project relies on a Google Mini Server for searching, but we needed to bind search results with Tesseract to display customized lists of job offers.\nThe overall schema is the same as before, so I’ll mention what is really specific here.\nOne interesting point is that we created special pages using Tesseract that contain the job offer itself plus a number of information relating to it (in particular its primary key) as meta data. Using this information, Google Mini is able to perform a full-text search, but return the corresponding jobs primary keys.\nThe querying itself is performed using the “googlequery” extension which queries the Google server and returns the resulting data according to the Tesseract standards.\nHere are some screenshots of “googlequery”, first is some general information, in the second tab comes the selection of information that we want to retrieve. This information will be available for mapping into the HTML template the same way that we saw in the previous example.\n
A second example of real-life, large web site using Tesseract is Manpower Switzerland.\nHere again we have data coming from third-party system, namely job offers pushed to TYPO3 by a specialized job offers and applications management system.\nThis project relies on a Google Mini Server for searching, but we needed to bind search results with Tesseract to display customized lists of job offers.\nThe overall schema is the same as before, so I’ll mention what is really specific here.\nOne interesting point is that we created special pages using Tesseract that contain the job offer itself plus a number of information relating to it (in particular its primary key) as meta data. Using this information, Google Mini is able to perform a full-text search, but return the corresponding jobs primary keys.\nThe querying itself is performed using the “googlequery” extension which queries the Google server and returns the resulting data according to the Tesseract standards.\nHere are some screenshots of “googlequery”, first is some general information, in the second tab comes the selection of information that we want to retrieve. This information will be available for mapping into the HTML template the same way that we saw in the previous example.\n
A second example of real-life, large web site using Tesseract is Manpower Switzerland.\nHere again we have data coming from third-party system, namely job offers pushed to TYPO3 by a specialized job offers and applications management system.\nThis project relies on a Google Mini Server for searching, but we needed to bind search results with Tesseract to display customized lists of job offers.\nThe overall schema is the same as before, so I’ll mention what is really specific here.\nOne interesting point is that we created special pages using Tesseract that contain the job offer itself plus a number of information relating to it (in particular its primary key) as meta data. Using this information, Google Mini is able to perform a full-text search, but return the corresponding jobs primary keys.\nThe querying itself is performed using the “googlequery” extension which queries the Google server and returns the resulting data according to the Tesseract standards.\nHere are some screenshots of “googlequery”, first is some general information, in the second tab comes the selection of information that we want to retrieve. This information will be available for mapping into the HTML template the same way that we saw in the previous example.\n
\n
\n
To go a step further in understanding how Tesseract works, let’s step through a simple, but more detailed example.\nImage the following scenario: you want to display a list of BE users on your web site, so that people can easily get in touch with the site’s administrators.\nThis is not possible by default in TYPO3 and you would normally have to develop a custom extension or some other workaround.\n\n
This example is actually a summary of the first Tesseract tutorial, which is available on the Tesseract web site and is included in the proceeding of this conference.\nTo get a list of BE users we’re going to use “dataquery”, since it allows us to send a SQL query to the TYPO3 database.\nWe choose to select just the admin’s name, username and e-mail address.\n\n
A simple HTML template is more than enough for this example (as it is - in our experience - 99% of the time).\nThe syntax is fairly simple. It relies on markers close to the usual TYPO3 syntax, plus some control elements like loops and conditions.\nWe’ll come back to this component later.\n\n\n
As a controller we use an instance of extension “displaycontroller”, which acts as a FE plugin. As can be expected from a controller, it defines the relations between the various components.\nIn this case we just have a Data Provider and a Data Consumer.\nNow that these two components have been related with one another, we can go back to the Data Consumer and take the next step...\n
...which is to map the data coming from the database to the markers that we placed in the template.\nThis is easily achieved with a convenient point and click interface.\nEach marker can be matched to one field. There are different field types, which - roughly - correspond to the base content object types. Additional TypoScript can be entered for each field.\n
Bingo, a list of BE users in under 5 minutes.\nThis is a very simple example of what can be achieved with Tesseract. It’s far more powerful that this, but this example highlights a typical workflow.\n
I would like to dwell a bit longer on one particular component type: the Data Filter. Its flexibility is one important reason for Tesseract’s capability to handle most situations that you can throw at it.\nWe discussed before the danger that looms over all generic solutions: as they try to cover all situations they grow ever more complex until they become unwieldy and unmaintainable.\nOne way we avoided this pitfall in Tesseract is to exclude some features from it: one such feature is search forms.\nIt comes at a little additional efforts for site administrators, but let me try to convince you of this choice.\n
The problem with search forms is that they are often very specific to a project. Since the data is always different, the criteria change all the time.\nAnd there are often very precise design requirements too.\nLook at this first form. That’s just simple drop-down menu to select years.\nNext form. There’s still the year selector, but a few more have been added to that.\nNext is the page browser. That’s also a form of filter. And note that we still have a year selector, but this time represented by actual pages.\nAnd then there are some really sophisticated forms, with many fields, requiring some unusual layouts\nHere’s another one to search for watches on many criteria.\nThis whole variety of search forms and filters is very difficult to achieve with a generic solution without ending up with an extremely complicated piece of software.\nThis is the reason why we chose to leave form building completely out of Tesseract.\n
The problem with search forms is that they are often very specific to a project. Since the data is always different, the criteria change all the time.\nAnd there are often very precise design requirements too.\nLook at this first form. That’s just simple drop-down menu to select years.\nNext form. There’s still the year selector, but a few more have been added to that.\nNext is the page browser. That’s also a form of filter. And note that we still have a year selector, but this time represented by actual pages.\nAnd then there are some really sophisticated forms, with many fields, requiring some unusual layouts\nHere’s another one to search for watches on many criteria.\nThis whole variety of search forms and filters is very difficult to achieve with a generic solution without ending up with an extremely complicated piece of software.\nThis is the reason why we chose to leave form building completely out of Tesseract.\n
The problem with search forms is that they are often very specific to a project. Since the data is always different, the criteria change all the time.\nAnd there are often very precise design requirements too.\nLook at this first form. That’s just simple drop-down menu to select years.\nNext form. There’s still the year selector, but a few more have been added to that.\nNext is the page browser. That’s also a form of filter. And note that we still have a year selector, but this time represented by actual pages.\nAnd then there are some really sophisticated forms, with many fields, requiring some unusual layouts\nHere’s another one to search for watches on many criteria.\nThis whole variety of search forms and filters is very difficult to achieve with a generic solution without ending up with an extremely complicated piece of software.\nThis is the reason why we chose to leave form building completely out of Tesseract.\n
The problem with search forms is that they are often very specific to a project. Since the data is always different, the criteria change all the time.\nAnd there are often very precise design requirements too.\nLook at this first form. That’s just simple drop-down menu to select years.\nNext form. There’s still the year selector, but a few more have been added to that.\nNext is the page browser. That’s also a form of filter. And note that we still have a year selector, but this time represented by actual pages.\nAnd then there are some really sophisticated forms, with many fields, requiring some unusual layouts\nHere’s another one to search for watches on many criteria.\nThis whole variety of search forms and filters is very difficult to achieve with a generic solution without ending up with an extremely complicated piece of software.\nThis is the reason why we chose to leave form building completely out of Tesseract.\n
The problem with search forms is that they are often very specific to a project. Since the data is always different, the criteria change all the time.\nAnd there are often very precise design requirements too.\nLook at this first form. That’s just simple drop-down menu to select years.\nNext form. There’s still the year selector, but a few more have been added to that.\nNext is the page browser. That’s also a form of filter. And note that we still have a year selector, but this time represented by actual pages.\nAnd then there are some really sophisticated forms, with many fields, requiring some unusual layouts\nHere’s another one to search for watches on many criteria.\nThis whole variety of search forms and filters is very difficult to achieve with a generic solution without ending up with an extremely complicated piece of software.\nThis is the reason why we chose to leave form building completely out of Tesseract.\n
The problem with search forms is that they are often very specific to a project. Since the data is always different, the criteria change all the time.\nAnd there are often very precise design requirements too.\nLook at this first form. That’s just simple drop-down menu to select years.\nNext form. There’s still the year selector, but a few more have been added to that.\nNext is the page browser. That’s also a form of filter. And note that we still have a year selector, but this time represented by actual pages.\nAnd then there are some really sophisticated forms, with many fields, requiring some unusual layouts\nHere’s another one to search for watches on many criteria.\nThis whole variety of search forms and filters is very difficult to achieve with a generic solution without ending up with an extremely complicated piece of software.\nThis is the reason why we chose to leave form building completely out of Tesseract.\n
The problem with search forms is that they are often very specific to a project. Since the data is always different, the criteria change all the time.\nAnd there are often very precise design requirements too.\nLook at this first form. That’s just simple drop-down menu to select years.\nNext form. There’s still the year selector, but a few more have been added to that.\nNext is the page browser. That’s also a form of filter. And note that we still have a year selector, but this time represented by actual pages.\nAnd then there are some really sophisticated forms, with many fields, requiring some unusual layouts\nHere’s another one to search for watches on many criteria.\nThis whole variety of search forms and filters is very difficult to achieve with a generic solution without ending up with an extremely complicated piece of software.\nThis is the reason why we chose to leave form building completely out of Tesseract.\n
The problem with search forms is that they are often very specific to a project. Since the data is always different, the criteria change all the time.\nAnd there are often very precise design requirements too.\nLook at this first form. That’s just simple drop-down menu to select years.\nNext form. There’s still the year selector, but a few more have been added to that.\nNext is the page browser. That’s also a form of filter. And note that we still have a year selector, but this time represented by actual pages.\nAnd then there are some really sophisticated forms, with many fields, requiring some unusual layouts\nHere’s another one to search for watches on many criteria.\nThis whole variety of search forms and filters is very difficult to achieve with a generic solution without ending up with an extremely complicated piece of software.\nThis is the reason why we chose to leave form building completely out of Tesseract.\n
The problem with search forms is that they are often very specific to a project. Since the data is always different, the criteria change all the time.\nAnd there are often very precise design requirements too.\nLook at this first form. That’s just simple drop-down menu to select years.\nNext form. There’s still the year selector, but a few more have been added to that.\nNext is the page browser. That’s also a form of filter. And note that we still have a year selector, but this time represented by actual pages.\nAnd then there are some really sophisticated forms, with many fields, requiring some unusual layouts\nHere’s another one to search for watches on many criteria.\nThis whole variety of search forms and filters is very difficult to achieve with a generic solution without ending up with an extremely complicated piece of software.\nThis is the reason why we chose to leave form building completely out of Tesseract.\n
The problem with search forms is that they are often very specific to a project. Since the data is always different, the criteria change all the time.\nAnd there are often very precise design requirements too.\nLook at this first form. That’s just simple drop-down menu to select years.\nNext form. There’s still the year selector, but a few more have been added to that.\nNext is the page browser. That’s also a form of filter. And note that we still have a year selector, but this time represented by actual pages.\nAnd then there are some really sophisticated forms, with many fields, requiring some unusual layouts\nHere’s another one to search for watches on many criteria.\nThis whole variety of search forms and filters is very difficult to achieve with a generic solution without ending up with an extremely complicated piece of software.\nThis is the reason why we chose to leave form building completely out of Tesseract.\n
Instead forms can be built with any solution you choose: any of the existing form extensions, a custom-made plugin, even the standard mailform for simple cases.\nThanks to the expressions library, the Data Filter can retrieve data from many sources including any GET/POST variables, TypoScript values, FE user values, etc.\nThus it does not matter how a search form is built nor how filters or restrictions are defined. It’s possible to catch all these values using a Data Filter.\nThese values then get injected into the Data Consumer to restrict its selection.\nThis is very powerful.\n
So, Tesseract, fine and dandy. But there’s extbase, fluid, flow3, phoenix and all that.\nWith all the wonders promised by recent and upcoming new technologies, you may wonder why we invested so much in the Tesseract project.\n\n
First of all the actual development started back in early 2008. Back then extbase didn’t exist and neither did fluid, flow3 was not even alpha and phoenix was still only conceptual.\nSo we built a solution on an existing base, but we tried to make it as independent as possible: if you consider the whole Tesseract architecture, it’s really just the controller who are built as pibase plugins.\nThe other components are independent.\nThere could be an extbase-based controller.\n
There’s already a Fluid-based Data Consumer on Forge. It’s not released yet because it depends on changes in Fluid that are not stable yet, but which enable Fluid to run outside of an Extbase context.\nBut in the very near future it will be possible to also use Fluid within Tesseract.\n
What with further in the future, with Phoenix?\nThis is very hard to say for now. There are talks about trying to create generic domain models. This might render Tesseract obsolete, but we’re not there yet.\nThe modular structure of Tesseract can certainly be reproduced in the v5 and some of the logic reused.\nIn the meantime Tesseract helps solve real-world problems in a very flexible way and we’re very happy about releasing it to the community.\n
\n
All extensions that make up Tesseract have been released to the TER on Monday this week.\nWe have also set up a dedicated web site with a global overview of the project and some tutorials. We plan to release more tutorials in the future, as well as tips & tricks and examples of advanced usage.\nSo go and look at the web site and watch the introductory screencast. Try out Tesseract and give us your feedback. We hope you will find it as useful as we do.\n