31. Light-CMS (un esbós)

Índex

 

Introducció

Els programes CMS usuals tenen una gran quantitat de temes, i molts contenen plantilles diferents, i encara poden ésser ampliats amb una multitud de programes annexos. Això és un avantatge, però també una nosa: pot succeir que hàgim de perdre hores i hores buscant el model perfecte que resoldrà les nostres necessitats per trobar-nos al capdavall que el mateix autor ens suggereix determinats canvis via CSS i fins i tot via PHP. Si de totes maneres hem d'acabar embrutant-nos les mans, podem plantejar-nos de fer-ho de bon començament i construir-nos una eina a mida.

En aquest capítol desenvolupem un CMS propi, al qual donem el nom de Light-CMS, en al·lusió a la simplicitat: s'hi fan servir exclusivament una part dels recursos explicats en aquest curs i en el curs d'HTML.

Ho il·lustrem amb el desenvolupament d'un petit web anomenat Amics dels Vegetals, però amb canvis mímims es pot fer servir per a qualsevol altre propoòsit.

 

Algunes definicions

En l'àmbit del Light-CMS farem servir els termes i els conceptes següents:

Cal preveure, a més, plantilles de gestió de contingut i de control, reservades a l'administrador i als usuaris registrats de suficient nivell.

 

Taules MySQL

Hi ha una base de dades MySQL amb només tres taules, on es contenen tots els textos i les referències a imatges i altres objectes:

La gestió d'aquesta base de dades sempre pot ésser indirecta: un cop creada pel webmaster, tan l'administrador com els col·laboradors autoritzats hi operen a través de formularis.

 

Taula Articles

Camp Tipus Obligatorietat Contingut
Id bigint Índex autonumèric
Nom text Nom del text, escollit en el moment de crear el registre i introduït mitjançant un formulari.
Text longtext No Text introduït amb l'editor, que incorpora doncs etiquetes HTML.
Nota text No Text introduï mitjançant un formulari
Autor text No Nom d'usuari de qui faci un canvi, assignat automàticament en els casos en què es consideri oportú.
Data text Data, en el format yymmdd, introduït automàticament mitançant codi PHP.
Estructura tinytext Codi alfabètic que dóna compte de la posició de l'element en l'estructura: 'a' per a la pàgina d'inici, un dos o tres caràcter formats per les lletres compreses entre la 'b' i la 'y' i un sol caràcter, 'z', per als posts del blog.
Descriptor text No Descriptor (=etiqueta); pot no contenir-ne cap, contenir-ne un o contenir-ne més d'un.

L'existència de camps com Nota i Descriptor, de denominacions força abstractes, en permet un ús flexible, adaptable a cada projecte concret. En el cas de l'exemple que es presenta més endavant, fem servir Nota per a presentar el nom científic dels gèneres i de les espècies, i Descriptor per a incloure-hi referències a continguts marginals no sistemàtics (per exemple, la referència al poema de Joan Maragall sobre la Fageda d'en Jordà).

 

Observacions sobre l'ús de l'editor wysiwyg

El camp Text pot contenir una codificació més o menys complexa: amb imatges assignades directament, amb espais i separadors, amb taules, amb indicacions d'estil. Tot depèn dels paràmetres assignats a l'editor wysiwyg. Avalueu en quines mans poseu les eines actives, i considereu aquesta regla d'or: Com més nombrós i menys preparat i cohesionat sigui el grup que hi té accés, menys atribucions ha de tenir. En els casos extrems - per exemple alguns fòrums - és gairebé obligat prescindir totalment de l'editor; en el cas extrem - com ara el Twitter - només s'ha de poder actuar mitjançant formularis sense opcions.

 

Taula Objectes

Camp Tipus Obligatorietat Contingut
Id bigint Índex autonumèric
Tipus text Els valors possibles són: img (imatge), link (enllaç exterior), av-int (enllaç a un àudio/video interior), av-ext (ídem exterior) i iframe (adreça de document inserit).
Nom text Nom de l'objecte.
Dades text Adreça interior o exterior de l'objecte.
IdArt tinytext Vincle per defecte amb un article, expressat en termes d'Estructura.

Les imatges i els altres objectes interiors són continguts en sengles carpetes.

 

Taula Usuaris

Una taula d'usuaris recolliria les dades corresponents a aquests; una estructura bàsica podria ser la següent:

 

Components

A continuació presentem el detall dels components desenvolupats en aquest esbós. Copiant els programes, poden aprofitar-se en una nova aplicació. Tingueu presents però les observacions següents:

arbre

Contrapartida de buscamapa, presenta el mapa de tots els documents del web en forma d'esquema dentat. No s'hi inclouen, però, els del blog.

arbre

article

Presenta el contingut central de la pàgina, bàsicament format per diversos camps de text, combinats de la manera que es consideri més adequada (i si es considera oportú - cosa que aquí no hem fet - amb imatges incorporades mitjançant l'editor wysiwyg).

article

blog

Presentació abreujada dels posts del blog.

blog

breadcrumbs

Indica en quin punt de l'estructura ens trobem i, fent clic a inici o en un nom de pàgina superior, ens permet de migrar-hi.

breadcrumbs

buscamapa

Enllaça amb la pàgina que presenta el mapa del web.

buscamapa

found-list

Contrapartida de searcher, que presenta les indicacions dels elements trobats i els enllaços a aquests.

found-list

iframe

Presenta un iframe amb mapes, etc... procedents d'un web extern.

iframe

imatges

Presenta la imatge o el conjunt d'imatges vinculades a un determinat article.

imatges

links

Presenta la llista de links associada a un article. (Anàlogues serien les llistes d'àudios i de vídeos).

iframe

logo

Presenta una imatge gran (tipus tramvia de Lisboa del WordPress).

logo

menu

Presenta un menú en forma de llista amb els dos primers nivells. I aplicant-hi les especificacions CSS adequades, podem fer que aparegui com un desplegable.

menu

menu3

Presenta un menú que condueix del nivell 2 al nivell 3.

menu3

searcher

Casella de formulari que, un cop informada, engega una recerca a la base de dades.

searcher

 

Plantilles

Cada plantilla conté un o més components, continguts en sengles elements DIV, distribuïts per la superfície de la pàgina amb el recurs, si cal, a float i amb l'addició, si cal, de separadors (hr), textos breus, etc. de caràcter fix. Hi ha una gran flexibilitat combinatòria; només cal, és clar, que el conjunt tingui sentit.

Els components s'hi insereixen amb el format següent:

<div class="article"><?php include("article.php"); ?></div>

p.php

En alguns casos l'aplicació d'una plantilla o una altra depèn d'algun factor; en aquest cas hi ha d'haver un programa que discrimini entre les diverses possibilitats. En el cas que ens ocupa, fem servir p.php; la comesa d'aquest programa és de discriminar entre pàgina inicial, pàgina de primer nivell, pàgina de segon nivell i pàgina de tercer nivell.

p

Notem que el programa precedent és PHP pur, sense contingut HTML

i.php

Conté: logo, menu, breadcrumbs, searcher, article, buscamapa i blog.

i

p1.php

Pàgina de primer nivell que conté: menu, breadcrumbs, searcher, article, imatges, iframe i links.

p1

p2.php

Pàgina de segon nivell, anàloga a l'anterior, però sense menu ni searcher, i amb l'addició de menu3, per a passar als documents de tercer nivell.

p3.php

Pàgina de tercer nivell, anàloga a les anteriors, però que conté només breadcrumbs, article, imatges, iframe i links.

pb.ph3

Pàgina de presentació de les pàgines individuals del blog, que conté breadcrumbs, article, imatges, iframe i blog

q

El fet que una pàgina de blog presenti recursivamnent en blog sencer serveix per a evitar haver de fer marxa enrere.

fl.php

Presenta la llista de documents trobats a partir de searcher; conté breadcrumbs i found-list.

r

 

Documents amb estil

L'aplicació de les eines anteriors dóna lloc als documents amb el contingut i el format desitjats. Dins de HEAD, aplicat mitjançant un include, hi ha dos fulls d'estil, un de general, estil.css i un d'específic per al menú deplegable, menu.css.

Mostra amb estil

 

Documents sense estil

Vegeu, a títol d'exemple, la pàgina inicial desproveïda d'estil (i0.php): no s'hi ha inclòs head.php sinó head0.php, desproveït d'especificacions d'estil. Tingueu present que si feu clic en qualsevol punt passareu immediatament a documents normals, amb estil, i si retorneu a inici, també el trobareu amb estil.

Mostra sense estil

 

Alimentació del web

 

Usuaris