El Drupal

Índex
- 1.Introducció
- 2.Instal·lació
- 3.Apartats del panell d'administració
- 3.1.Contingut (content)
- 3.2.Estructura (structure)
- 3.3.Aparença (appearance)
- 3.4.Persones (people)
- 3.5.Mòduls (modules)
- 3.6.Configuració (configuration)
- 3.7.Informes (reports)
- 3.8.Ajuda (help)
- 3.9.Definir tipus de contingut
- 3.10.Definir taxonomies
- 4.Exemple pràctic. Implementació d'una publicació electrònica en Drupal
- 5.Instal·lar mòduls
- 6.Taula de correspondències entre Drupal i WordPress
- 7.Integració amb xarxes socials
- 8.Creació de temes (themes) en Drupal
1.Introducció

2.Instal·lació
-
Els arxius del core descarregats de drupal.org.
-
Un servidor amb PHP+MySQL (local o remot).
-
Una base de dades MySQL i les dades d'accés (usuari i contrasenya). Si es tracta d'un servidor remot, accés per FTP al servidor (i l’usuari i contrasenya corresponents).
-
Si el volem instal·lar en un idioma diferent de l'anglès, els arxius de traducció; per exemple, en castellà a http://localize.drupal.org/translate/languages/es, o en català a http://localize.drupal.org/translate/languages/ca.
-
Descomprimir els arxius descarregats del web de Drupal. Podem canviar el nom de la carpeta pel que vulguem: si inicialment es diu drupal7.14 el podem canviar per revista, per exemple.
-
Copiar els arxius en el servidor (local o remot) en el directori adequat (“www” o “htdocs”, depenent del servidor), de manera que puguem accedir al nostre lloc, per exemple, a http://localhost/revista o http://www.miservidoremoto.com/revista (suposant que hem donat el nom revista al directori).
-
Copiar i enganxar l'arxiu “site/default/default.settings.php” com a “settings.php”.
-
Crear una base de dades buida des del nostre gestor de bases de dades (per exemple “phpMyAdmin”, probablement en l'adreça http://localhost/phpmyadmin o on sigui apropiat en el nostre servidor local o remot). Per al nostre exemple, imaginem que també hem anomenat la base de dades revista.
-
Entrar amb el navegador a l’adreça http://localhost/revista.
-
Seleccionar l'opció “Install Drupal in English” (1)
-
Apareixerà una pantalla en què se'ns demanarà el nom de la base de dades i l'usuari i contrasenya per a accedir-hi. Posem les dades i continuem.
-
Si hem escrit les dades correctes, ara ens demanaran les dades de la configuració del lloc i les dades del compte de l'administrador de Drupal (si estem instal·lant en “localhost”, per a provar podem posar “admin/admin”, encara que això, per descomptat, no és gens segur en un lloc real). És important apuntar aquest usuari i la contrasenya, ja que els haurem d'usar per a tornar a entrar a Drupal posteriorment com a administradors.
-
Continuem i si tot va bé tindrem el lloc funcionant.




2.1.Canviar l'idioma
-
Activar el mòdul core locale (aquest mòdul s'encarrega d'activar la funcionalitat multiidioma).
-
Anar a la secció de configuració de l'idioma (a admin/config/regional/ language) i seleccionar els idiomes que vulguem.
-
Baixar i instal·lar el mòdul “localization update”.
-
A partir d'aquest moment, els textos s'actualitzaran a tots els idiomes que tinguem actius.
2.2.Estructura de continguts de Drupal

-
Publicat (published). Si desmarquem aquesta opció el node es desarà però no serà visible per als visitants del nostre lloc.
-
Promogut en la portada (promoted to front page). Si marquem aquesta opció el node apareixerà en la portada del lloc.
-
Fix al començament de les llistes (sticky at top of lists). En cas que aquest contingut aparegui en una llista, sempre serà el primer de la llista.
-
La portada o “Home page”, en què es mostren tots els continguts (nodes) promoguts en la portada.
-
Les pàgines úniques per a cadascun dels continguts (nodes), per defecte amb la ruta “node/xx”, en què “xx” és l'identificador del contingut.
2.3.Tipus de continguts i taxonomies
-
Els tipus de continguts. Ens hem de plantejar si hi ha tipus de continguts diferenciats. Per exemple, necessitem notícies i articles d'opinió? Hem de valorar la possibilitat de definir tipus diferents en el moment en què es tracti de continguts que cal mostrar d'una manera totalment diferent, o que tinguin camps diferents. Per a diferenciar les notícies de diferents categories, en lloc d'utilitzar tipus de continguts, usarem categories, ja que els camps i la manera de visualitzar-les totes són iguals. En general, definirem pocs tipus de contingut i usarem categories i etiquetes per a organitzar el contingut de cada tipus.
-
Les taxonomies (vocabularis de paraules clau que podem assignar als continguts). Les taxonomies són molt útils, ja que permeten crear categories fàcilment, a més d’etiquetar els continguts lliurement. Poden funcionar de dues maneres: com a categories o com a etiquetes. Una categoria és una llista “tancada” de possibilitats, mentre que una etiqueta és lliure i se’n poden afegir de noves en qualsevol moment. A efectes interns, pràcticament no hi ha cap diferència i el Drupal les tracta igual: la diferència està més aviat a nivell d'usuari. Les categories usen una llista desplegable i les etiquetes un camp de text amb “autocompletat”. Podem separar les etiquetes amb comes.
3.Apartats del panell d'administració

-
Panell de control (dashboard). Ens dóna una visió global i el podem personalitzar.
-
Contingut (content). Tot el relacionat amb els continguts.
-
Estructura (structure). Tot el relacionat amb l'estructura del lloc (blocs, tipus de contingut, menús i taxonomia).
-
Aparença (appearance). Aparença (bàsicament, els themes).
-
Persones (people). Gestió dels usuaris del lloc.
-
Mòduls (modules). Llista de mòduls disponibles.
-
Configuració (configuration). Configuració del lloc.
-
Informes (reports).
-
Ajuda (help).
3.1.Contingut (content)

-
Contingut (content). Gestió dels continguts (nodes). Conté una llista amb tots els continguts que es poden filtrar per tipus o per estatus (publicat, no publicat, etc.). Per descomptat, també ens permet afegir nous continguts.
-
Comentaris (comments). Gestió dels comentaris que han escrit els visitants del lloc. En aquest apartat pot ser que ens trobem comentaris en estat de moderació, que l'administrador ha d’aprovar perquè siguin visibles (de manera similar a WordPress).
3.2.Estructura (structure)

-
Gestionar camps (manage fields), per a modificar els camps associats.
-
Gestionar la presentació (manage display) per a modificar la manera en què es veuen aquests camps depenent del “mode de presentació”.
3.3.Aparença (appearance)
3.4.Persones (people)
-
A Llista podem veure la llista de tots els usuaris registrats en el lloc, que podem filtrar per "rol", "permís" o "estat". A més, podem editar cadascun d'ells fent servir l'opció "Edit".
-
Al mateix temps, a la pestanya Permisos disposem de 2 subpestanyes: "Permisos" i "Rols".
-
A "Permisos" podem activar o desactivar els permisos per a cadascun dels rols definits a la nostra aplicació.
-
A "Rols" veiem una llista dels rols disponibles. Per defecte n'hi ha solament 3 rols: usuari anònim, usuari registrat i administrador. Podem afegir més rols depenent de les nostres necessitats (per exemple, editor, corrector, etc.), als quals haurem d'activar els permisos corresponents.
-
3.5.Mòduls (modules)
3.6.Configuració (configuration)
-
Persones. Opcions relacionades amb els usuaris, per exemple la manera de registrar-se.
-
Autoria del contingut. Formats de text. El Drupal disposa de tres formats de text diferents:
-
Plain text (o text net). Només text.
-
Filtered HTML. L'opció per defecte, permet afegir algunes etiquetes bàsiques d'HTML, com a capçaleres (h1, h2), strong, etc. Podem modificar aquestes etiquetes permeses com vulguem.
-
Full HTML. Quan activem aquesta opció en editar el text s'admet qualsevol etiqueta d'HTML.
-
-
Cerca i metadades. Opcions relatives a la cerca i a com es mostren els URL dels continguts.
-
Mitjans. Aquí podem definir les mides predefinides per a les imatges. El Drupal construeix per defecte tres mides diferents per a cada imatge que pugem al sistema. Podem modificar la manera de crear aquestes imatges o fins i tot crear nous tipus.
-
Regional i idioma. Les opcions relatives a l'idioma, les traduccions i la manera de mostrar les dates. Aquest apartat és molt important en qualsevol lloc multiidioma.
-
Sistema. La informació bàsica del nostre lloc (nom, lema, etc.). Nombre de continguts publicats en la portada (per defecte són deu).
-
Interfície d'usuari. En aquest apartat podem definir dreceres: accessos ràpids en el panell d'administració.
-
Desenvolupament. Opcions per a desenvolupadors i per a millorar el rendiment del lloc. Una vegada publicat el projecte, hauríem d'activar la memòria cau (cache) de pàgines i blocs, i unificar en un sol arxiu tots els documents CSS i JavaScript del nostre tema.
-
Serveis web. Opcions relatives a la publicació automàtica d’RSS.
3.7.Informes (reports)
-
Rebre un informe de l'estat funcional del lloc i de qualsevol problema detectat.
-
Actualitzacions disponibles per als mòduls i temes instal·lats.
-
Missatges recents del registre.
-
Esdeveniments registrats recentment.
-
Frases principals en les cerques.
-
Informació general dels camps en tots els tipus de contingut.
-
Errors principals d’"accés denegat".
-
Errors principals de "la pàgina no s’ha trobat".
3.8.Ajuda (help)
3.9.Definir tipus de contingut

3.10.Definir taxonomies
-
Definir categories en el contingut i, per tant, definir l'estructura relacionada.
-
Etiquetar els continguts com vulguem.
-
Fer una llista (automàticament) dels continguts a partir d'aquestes categories o etiquetes.

-
Anar a “Estructura/Tipus de contingut/Gestionar camps”.
-
Agregar un nou camp amb l'etiqueta “Tipus de notícia” i nom intern “field_tipus_notícia”.
-
Com a tipus de camp hem de seleccionar “Referència de terme” per a vincular el camp amb un vocabulari de la taxonomia. A “Control” podem triar com funcionarà: en forma de llista desplegable, autocompletat (etiquetatge lliure) o com a caselles de selecció.
-
Desar.
-
En el pas següent, seleccionarem el vocabulari que volem vincular. En el nostre exemple, “Tipus de notícia”.
-
Finalment podem canviar les opcions per defecte del camp, com l'etiqueta que es mostrarà a l'usuari, si és un camp obligatori o no, o el nombre de valors (es podrien vincular diversos valors simultàniament si fos necessari).
4.Exemple pràctic. Implementació d'una publicació electrònica en Drupal
4.1.Brífing del projecte
-
La secció principal mostrarà notícies que podran ser, per exemple, dels tipus següents: esports, política, economia, gent, temps i internacional.
-
Volem crear un apartat d'opinió en què els editors puguin escriure articles com si es tractés d'un blog.
-
També tindrem una secció que només mostri fotos d'actualitat.
-
També necessitem crear una pàgina de contacte amb una presentació de la revista.
-
Tindrem sempre visible un menú amb les seccions (categories) a més dels apartats de fotos, opinió i contacte.
-
Totes les pàgines tindran l'opció de compartir en xarxes socials.
4.2.Creació de l'estructura de continguts
-
Notícia
-
Opinió
-
El títol
-
El cos
-
La categoria
-
Predeterminat: correspon a la pàgina única del contingut.
-
Resum (teaser): correspon al mode resumit que apareix en les llistes (per exemple, en la portada, o en la llista d'una categoria o tag).
-
L'ordre dels camps.
-
Si apareix o no l'etiqueta de cada camp.
-
En quina mida apareix la imatge.
-
Etc.
-
“Article”
-
“Basic Page”
-
“Notícia”
-
“Opinió”
-
“Foto”
-
En l'apartat “Persones/Permisos/Rols” crearem un rol nou anomenat Editor.
-
Posteriorment, anirem a l'apartat “Permisos” i activarem per a aquest rol només els permisos relatius a l'apartat “Node access” per crear, editar i esborrar continguts.
-
Finalment, crearem un usuari en l'apartat “Persones/Llista” i li assignarem el rol “Editor”.
-
Anar a “Estructura/vistes”.
-
Agregar una nova vista.
-
Donar-hi el nom Fotos i filtrar per tipus de contingut “Foto”.
-
Donar el nom que vulguem a l'adreça de la pàgina (per exemple Fotos).
-
Aquesta serà l'adreça que haurem d'utilitzar si la volem afegir al menú principal.
5.Instal·lar mòduls
-
Assegurar-se que el mòdul és compatible amb la versió de Drupal que usem.
-
Assegurar-se que és estable. Això es pot comprovar en la llista de mòduls de drupal.org perquè apareix de color verd; si està en desenvolupament (vermell) probablement funcioni però no tindrem fiabilitat total, per la qual cosa no és recomanable en un projecte comercial.
-
Llegir a fons la documentació del mòdul abans d'instal·lar-lo per a assegurar-nos que compleix amb les especificacions que volem.
-
En qualsevol cas, sempre l’hauríem d'instal·lar en un servidor de proves abans de fer-ho en el servidor de producció. D'aquesta manera, podrem detectar problemes abans de deixar-lo per definitiu. Una vegada comprovat, ja el podrem instal·lar en el servidor final

-
XML Sitemap (http://drupal.org/project/xmlsitemap). Genera automàticament un arxiu sitemap.xml compatible amb Google en l'arrel del servidor.
-
Pathauto (http://drupal.org/project/pathauto). Genera noms d'adreces per a les pàgines segons els títols del contingut (per exemple, /unexemple en lloc de /node/24).
-
Ubercart (http://drupal.org/project/ubercart). Mòdul de comerç electrònic de gran complexitat i amb moltíssimes opcions. En realitat, es tracta d'un grup extens de mòduls.
-
Simplenews (http://drupal.org/project/simplenews). Sistema complet de gestió de newsletters.
-
FiveStar (http://drupal.org/project/fivestar). Sistema de votació/valoració dels usuaris.
-
Organic Groups (http://drupal.org/project/og). Gestió de grups d'usuaris.
6.Taula de correspondències entre Drupal i WordPress
WordPress
|
Drupal
|
Comentaris
|
---|---|---|
Plug-ins |
Mòduls |
En altres plataformes es diuen extensions. El Drupal parteix inicialment amb molts més mòduls que el WordPress. |
Ginys (widgets) |
Blocs |
En WordPress existeix, a més, arrossegar i deixar caure. |
Tema |
Tema |
En tots dos casos els temes són dins de la carpeta “Themes” del servidor. |
Escriptori |
Escriptori |
Visió general del panell d'administració. |
Entrades i pàgines |
Articles i pàgines |
Els dos tipus de contingut que hi ha per defecte en totes dues plataformes. |
.php |
.tpl.php |
Extensió de les plantilles del tema. |
functions.php |
template.php |
Arxiu del tema per a afegir instruccions PHP de cada sistema. |
style.css |
nom.info |
Arxiu en què es declaren les opcions del tema. |
-
Possibilitat de definir nous tipus de contingut.
-
Possibilitat de definir camps en els tipus de contingut i de decidir l'ordre o com es visualitzen.
-
Gestió de continguts en múltiples idiomes.
-
Suport per a RDF.
-
El Drupal no disposa d'un editor de textos WYSIWYG preinstal·lat (el WordPress sí, TinyMCE), però en permet instal·lar una diversitat.
-
Sistema de gestió d'usuaris, rols i permisos molt més complet.
7.Integració amb xarxes socials
-
Que els usuaris del web puguin generar continguts (creant tipus de contingut amb els permisos apropiats per a usuaris registrats o anònims).
-
Que els usuaris quedin identificats amb el seu nom i el seu avatar (imatge de perfil).
-
Que puguin crear grups i contactes, i es puguin enviar missatges entre ells. Aquestes funcionalitats no existeixen per defecte però es poden proporcionar mitjançant mòduls addicionals.
-
A més, podem facilitar l'accés utilitzant de comptes externs:
-
OpenId (mòdul del core)
-
Facebook Connect (mòdul addicional)
-
Twitter (mòdul addicional)
-

-
Organic Groups (http://drupal.org/project/og). Permet als usuaris crear i administrar els seus propis grups. Cada grup pot tenir subscriptors i mantenir una pàgina principal del grup en què els subscrits es comuniquen entre ells.
-
User Relationships (http://drupal.org/project/user_relationships). Permet als usuaris crear relacions entre ells. És un component bàsic per a una xarxa social o qualsevol altre lloc en què els usuaris s’hagin de comunicar entre ells.
-
PrivateMsg (http://drupal.org/project/privatemsg). Permet als visitants del lloc web enviar-se missatges privats. Perfecte per a llocs orientats a la comunitat, com els fòrums i llocs de xarxes socials.
-
Invite (http://drupal.org/project/invite). Les invitacions són importants per crear a efectes de xarxa i el creixement exponencial d'una comunitat d'interessos. En aquest mòdul s'afegeix una funció “Convidar un amic”.
-
Contact Importer (http://drupal.org/project/contact_importer). Permet importar usuaris d'altres xarxes socials.
-
Fivestar (http://drupal.org/project/fivestar) (depèn de la Voting API). Sistema de votació per als continguts.
-
Radioactivity (http://drupal.org/project/radioactivity). Sistema per a prioritzar informació segons la popularitat: el més votat, comentat, vist, etc.
-
Activity (http://drupal.org/project/activity). Mostra informació de l'activitat de cada usuari (tal com fa Facebook, per exemple).
-
Feeds (http://drupal.org/project/feeds). Permet integrar feeds (fonts d'informació en RSS) que generen automàticament contingut (nodes).
-
Twitter (http://drupal.org/project/twitter). Integra el compte de Drupal amb el de Twitter, de manera que els continguts que publiquem en el nostre lloc es publiquen automàticament a Twitter
-
Gravatar (http://drupal.org/project/gravatar). Integra Gravatar com a imatge de perfil dels usuaris. Gravatar és un sistema global d'imatges de perfil associades a comptes de correu. En realitat, Gravatar és un servei que permet obtenir la imatge de perfil de qualsevol usuari a partir de la seva adreça de correu. En activar aquest mòdul, la imatge de perfil dels usuaris vindrà del servei Gravatar en lloc del sistema intern de Drupal.
-
Subscriptions (http://drupal.org/project/subscriptions). Permet als usuaris subscriure's als continguts.
-
CAPTCHA (http://drupal.org/project/captcha). Seguretat antibots.
8.Creació de temes (themes) en Drupal
-
Utilitzar un tema derivat d'un que ja existeix (child theme).
-
Utilitzar un tema derivat d'un tema framework.
-
Crear un tema des de zero.
8.1.Modificar un tema que ja existeix
-
Crear una carpeta nova a Sites/All/Themes amb el nom del nostre tema, per exemple /exemple.
-
En aquesta carpeta crear un arxiu de text, amb el mateix nom que la carpeta, exemple.info en què hi haurà les dades principals del tema (correspon a style.css de WordPress).
-
En l'arxiu info definirem la informació que defineix el tema.
;el nom del tema name = Exemple description = Tema derivat d'un altre ; obligatori, la versió del "core" core = 7.x ; full d'estils, almenys en definim un de nou, deriva els del pare stylesheets[all][] = exemple.css ;necessitem definir totes les regions, encara que siguin en el pare ;obligatòriament hi ha d'haver la regió 'content' regions[content] = Contingut ;el tema del qual deriva, ha d'existir a sites/all/themes base theme=unaltretema
8.2.Utilitzar un tema framework com a base
8.3.Crear un tema des de zero
8.3.1.Creació d’un tema “minimalista”
-
minimalista.info: la configuració de la nostra plantilla.
-
page.tpl.php: la plantilla que utilitzaran totes les pàgines.
name = Minimalista ;el nom del tema description = Tema molt molt simple d'exemple engine = phptemplate ; obligatori stylesheets[all][] = style.css ; full d'estils, podem afegir més regions[content] = Contingut ;aquesta regió és obligatòria! regions[la_meva_regio] = Una sola regió extra ; core = "7.x" ;obligatori, quina versió de Drupal es requereix
<h1>La meva plantilla</h1> <?php if ($page['content']) : ?> <div class="content"> <?php print render ($page['content']); ?> <!-- mostrar el contingut de la regió content --> </div> <?php endif; ?> <?php if ($page[la_meva_regio']) : ?> <div class="la_meva_regio"> <?php print render ($page['la_meva_regio']); ?> <!-- mostrar contingut de la regió la_meva_regio --> </div> <?php endif; ?>
print render ($page['content']);"
print render ($page['content']);
<d7_regions_minimalista.jpg>
<?php print render ($page['la_meva_regio']); ?>
.mycontent{ background-color: #ffcccc; width:80%; float:left; } .la_meva_regio{ background-color: #ccccff; width:20%; float:right; }
8.3.2.Creant un tema més complet
-
html.tpl.php. Com hem comentat anteriorment, és la que inclou l'estructura del document HTML (excepte el contingut de cos que correspon a “page.tpl.php”).
-
node.tpl.php. La plantilla d'un node. S'utilitza per a mostrar qualsevol contingut de qualsevol tipus de contingut. Podem definir plantilles específiques per a cada tipus de contingut utilitzant el seu nom, per exemple “node--noticia.tpl.php”, suposant que tenim un tipus de contingut “Notícia”. Correspon al contingut del loop en WordPress.
-
field.tpl.php. Atès que els tipus de contingut poden tenir camps específics, cada camp pot tenir una plantilla especial. “field.tpl.php” defineix la plantilla per a tots els camps per defecte, però podríem definir la plantilla “field-name-field_foto” en el cas d'un camp anomenat “field_foto”.
-
Copiar l'HTML i el CSS de la nostra plantilla de la maquetació en la carpeta del tema i canviar el nom de l'arxiu HTML per “page.tpl.php” (aquest serà la plantilla principal del nostre tema).
-
Crear l'arxiu “.info”.
-
Copiar-lo a “Sites/All/Themes” i activar-lo.
8.3.3.Exercici. Creació d'un tema des de zero a partir d'una plantilla estàtica (HTML + CSS)
-
index.html. La plantilla principal.
-
nasa_estils_responsive.css. El full d'estils.
-
Arxius d'imatge en /img.
name = Nasa description = Un tema basat en una plantilla estàtica prèvia core = 7.x project = "nasa" regions[content] = Content regions[sidebar] = Sidebar regions[footer] = Footer stylesheets[all][] = nasa_estils_responsive.css
-
El contingut és estàtic (naturalment).
-
Si hi ha imatges en l'HTML no apareixen (atès que el Drupal no troba la ruta).
<?=$base_path.$directory?>/img/badge_001.png.
<?= render($page['content']);?>
<?php print_r($main_menu); ?>
<?php print theme_links( array('links' => $main_menu, 'attributes' => array('class' => array('lamevaclase')))); ?>
<?php print render($page['footer']); ?>
<?php print render($page['sidebar']); ?>
<?php print $messages; ?>
<?php if ($tabs): ?><?php print render($tabs); ?><?php endif; ?>
page--front.tpl.php
page--node--xx.tpl.php
<div id="node-<?php print $node->nid; ?>" class="<?php print $classes; ?> clearfix" <?php print $attributes; ?>> <?php print $user_picture; ?> <?php print render($title_prefix); ?> <?php if (!$page): ?> <h2<?php print $title_attributes; ?>><a href="<?php print $node_url; ?>"> <?php print $title; ?></a></h2> <?php endif; ?> <?php print render($title_suffix); ?> <?php if ($display_submitted): ?> <div class="submitted"><?php print $submitted; ?> </div> <?php endif; ?> <div class="content"<?php print $content_attributes; ?>> <?php // We hide the comments and links now so that we can render them later. hide($content['comments']); hide($content['links']); print render($content); ?> </div> <?php print render($content['links']); ?> <?php print render($content['comments']); ?> </div>
<?php print render($page['content'])?>
<?php hide($content['field_foto']); print render($content);?> <div id="foto"> <?php print render($content['field_foto']);?> </div>