one|content : joomla on steroids

39
one|content joomla! on steroids j and beyond 2010 paul delbar, delius

Upload: paul-delbar

Post on 27-Nov-2014

1.778 views

Category:

Technology


5 download

DESCRIPTION

The first ever public demo of one|content

TRANSCRIPT

Page 1: one|content : joomla on steroids

one|contentjoomla! on steroids

j and beyond 2010paul delbar, delius

Page 2: one|content : joomla on steroids

objectives

explain why we built one|contentexplain the basic conceptsshow a simple demotalk about advanced featuresget feedback, comments, suggestions, …

Page 3: one|content : joomla on steroids

why ? tell me why !

Page 4: one|content : joomla on steroids

example: mgxbymaterialise.com

complex product catalog website

Page 5: one|content : joomla on steroids

example: axolot.nl

IT training supplier

Page 6: one|content : joomla on steroids

example: 11.be

consortium of non-profits working in the south

Page 7: one|content : joomla on steroids

example: 11.be

everything is related to most other things

Page 8: one|content : joomla on steroids

example: hdp.be

corporate site for HR services company

Page 9: one|content : joomla on steroids

complex content construction strategies

content projection (everything is an article)makes it difficult for customers to manage content

hacking com_contentsimply never a good idea

developing a number of com_whatevercontent takes on average 2 days per content typevery flexible, but complex to build and hard to maintain

use a CCK extensiondo not address content relations very well (sic)

Page 10: one|content : joomla on steroids

what if we could …

build structured content sites in a declarative styleusing concepts the customer understands alreadywith minimal codingintegrating content from any data source

using a toolkit that is CMS-agnosticis suited for an integrator (not for end-users)is mildly extensible (but not a framework)

Page 11: one|content : joomla on steroids

the one|content vision

really everything, likearticlescountriesspeakersinventory itemsorderssearchesusers

content-based navigationoften the most logical way

content-based viewsbuild a consistent UIOO view concept

everything is content. content is everything.

Page 12: one|content : joomla on steroids

the content cloud

corporate website

campaignwebsite intranet divisional

website application

local data

shared contentnon-CMS data

Page 13: one|content : joomla on steroids

the basic concepts

Page 14: one|content : joomla on steroids

representing real-world concepts

Page 15: one|content : joomla on steroids

schemes

a scheme defines the meta-structure of an item

attributes individual data values, not visual types !

Page 16: one|content : joomla on steroids

model

a model is an instance of a schemehas specific values for each attribute

comparison using com_content article view : shows one modelcategory blog view : shows a list (selection) of models

Page 17: one|content : joomla on steroids

relations

in real life, stuff is related to other stuffdifferent types of relations

categorization : categories, topicscomposition: regions, subregions, countriesreflexive: hierarchies, graphs

other projection techniquessections, categories, ...tags

Page 18: one|content : joomla on steroids

view

an OO approach to viewsfor every scheme, build (at least)

a detail view : introducing nanoScripta list view : link to the detail view

admin viewlist viewedit view

Page 19: one|content : joomla on steroids

controller

controller taskslistdetailedit/adddelete

how to access the content com_onemod_nanonano content plugin and one package

Page 20: one|content : joomla on steroids

MVC elements

let’s demo !

Page 21: one|content : joomla on steroids

nanoScript basics

Page 22: one|content : joomla on steroids

overall principle

PHP-level library (autoloaded)similar to Smarty (but better, haha)

any content can contain nano tags (eg. HTML, XML, ...)the parser constructs a script execution treeuse: instantiate, load script, inject data, execute

<?php

$ns = new nScript();$ns->load( ‘template.html’ );$ns->set( ‘conference’, ‘J and Beyond’ );

echo $ns->execute();

Page 23: one|content : joomla on steroids

example

Page 24: one|content : joomla on steroids

tags and expressions

unary tagsbinary tags (closures)can be extended (class hierarchy)

used for things like {tidy}…{/tidy}

{set release = 1.6}

{if release > 1.5} <h1>Congratulations on releasing version {= release} !</h1>{else} <p class="late">Still at 1.5 !</p>{endif}

Page 25: one|content : joomla on steroids

variables

handles a number of formatsscalar variablesarraysobjects

expressions

The temperature is {= temp} degrees.

The second competitor's name is {= competitor[1]}.

The address is {= person->address}.

The order total is {= order->net + order->vat}.

Page 26: one|content : joomla on steroids

control structures

the usualif, then, elsewhile, endwhileloop

{if count(entries) > 0} <ul>The nominees for extension of the year are {loop entries e} <li>{= e->name]}</li> {endloop}</ul>{endif}

Page 27: one|content : joomla on steroids

structured HTML

section tag@ tagnamespaces

{section QUESTION title} <div class="question"> <h1 class="question">{= title}</h1> </div>{endsection}

<img src="{@ icon:question}" />{@ QUESTION "Why did we develop one ?"}

Page 28: one|content : joomla on steroids

nanoScript search path

sets folder sequence / hierarchy to checkapplications of it

could be used to implement template overrideslanguage-dependent script loading

Page 29: one|content : joomla on steroids

packages

makes nanoScript extensible withhelper functionalityJoomla functions

{if count(entries) > 0} <ul>The nominees for extension of the year are {loop entries e} <li>{= e->name]}</li> {endloop}</ul>{endif}

Page 30: one|content : joomla on steroids

custom nodes

extend the syntax with unary or binary nodesuseful examples

tidyExcel or PDF generator

<p>Comment:</p><div> <h1>{= entry->title}</h1> {tidy} {= entry->introText} {= entry->fullText} {endtidy}</div>

Page 31: one|content : joomla on steroids

the nanoScript content plugin

placed inside an articlesimilar to a content plugin, but more genericmakes content extremely dynamic

how would you use this ?show content depending on the user access level

access user info using a packageinclude one|content views

Page 32: one|content : joomla on steroids

advanced topics

with real-life examples

Page 33: one|content : joomla on steroids

more controller stuff

selecting modelshow does the select task work ?the query object

influencing selectionsfiltersquerying multiple related schemes

what about performance (caching, joins, …)building a custom model factory

Page 34: one|content : joomla on steroids

building a multi-scheme search form

similar to the edit formdifferent widgets

can include operators (like, begins with, …)find items related to one or more of …

example from MGX

Page 35: one|content : joomla on steroids

permissions : an open permissions system

controller permissionsform permissionsbuild your own terms

Page 36: one|content : joomla on steroids

behaviors

search and the search plugin (search behavior)slugcalendargooglerss

other examples of behaviors publishversioningmultilingualwikiclass

Page 37: one|content : joomla on steroids

stores and factories

data resides in different placesthe Joomla/Nooku databaseother MySQL tablesSQL Server, Oracle, …behind a SOAP service

schemes and storesseparates the logical and physical layers

stores and strategiesencapsulate the data-level adapter

Page 38: one|content : joomla on steroids

custom controllers and admins

framework-like extensionstask-oriented

duplicatepublish

wizard-likeduplicateimport/export

build semantic admins

Page 39: one|content : joomla on steroids

thanks !