SlideShare una empresa de Scribd logo
1 de 29
Descargar para leer sin conexión
Taller de Drupal – Sesión 4
Drupal Theming
Características del theming con
             Drupal
 Un “theme” es una serie de ficheros que define la capa
 de presentación (el look and feel) de una web con Drupal.

 Un theme especifica la estructura de la página, las hojas
 de estilo y, si es necesario, el Javascript

 Para crear o modificar un theme se necesita
 conocimientos de xHTML y CSS y la terminología
 usada en Drupal
Algunos themes de Drupal




más información: http://drupal.org/project/Themes
Anatomía de un theme de Drupal




más información: http://drupal.org/node/231036
Anatomía de un theme de Drupal

       .info
           name (required)
           description
           core
           engine
           base theme
           regions
           stylesheets
           scripts




más información: http://drupal.org/node/171205
Anatomía de un theme de Drupal
 ; $Id: garland.info,v 1.5 2007/07/01 23:27:32 goba Exp $
 name = Garland
 description = Tableless, recolorable, multi-column, fluid width theme (default).
 version = VERSION
 core = 6.x
 engine = phptemplate
 stylesheets[all][] = style.css
 stylesheets[print][] = print.css



 Minnelli sub-theme of Garland.:
 ; $Id: minnelli.info,v 1.7 2007/12/04 20:58:44 goba Exp $
 name = Minnelli
 description = Tableless, recolorable, multi-column, fixed width theme.
 version = VERSION
 core = 6.x
 base theme = garland
 stylesheets[all][] = minnelli.css
Anatomía de un theme de Drupal

  Template files
    ●
        page.tpl.php
    ●
        node.tpl.php
    ●
        block.tpl.php
    ●
        box.tpl.php
    ●
        comment.tpl.php
Anatomía de un theme de Drupal

  template.php
  Nos sirve para sobreescribir las
   funciones de theme y para las
   funciones “preprocesors”
Anatomía de un theme de Drupal
        Subthemes
            Los subtemas heredan las
             propiedades del sus ancestros.
            Facilita la creación de variaciones de
             temas, por ejemplo de temas
             contribuidos.




más información: http://drupal.org/node/225125
Themes base para empezar un
       theme personalizado

    Nos facilitan tareas comunes que todos
     los themes necesitan
    Algunos incluyen un framework de CSS
     (960, blueprint)
    Muchas alternativas. Los más famosos:
     Zen, Blueprint, Genesis.

más información:
http://www.chapterthree.com/blog/squiggy_rubio/review_drupal_6_starter_themes
hook_theme

     El registro de temas de Drupal guarda
       información cacheada de los hooks de temas
       disponibles y como manejarlos
     Los módulos han de usar el hook_theme para
       “registrar” sus funciones theme_
     Es necesario borrar la cache para volver a
       registrar estas funciones
     Podemos forzar durante el desarrollo a que se
       “refresque” estos registros en cada página

más información: http://api.drupal.org/api/function/hook_theme
http://drupal.org/node/173880#theme-registry
hook_theme
     function hook_theme($existing, $type, $theme, $path) {
       return array(
          'forum_display' => array(
             'arguments' => array('forums' => NULL, 'topics' => NULL, 'parents' => NULL,
     'tid' => NULL, 'sortby' => NULL, 'forum_per_page' => NULL),
          ),
          'forum_list' => array(
             'arguments' => array('forums' => NULL, 'parents' => NULL, 'tid' => NULL),
          ),
          'forum_topic_list' => array(
             'arguments' => array('tid' => NULL, 'topics' => NULL, 'sortby' => NULL,
     'forum_per_page' => NULL),
          ),
          'forum_icon' => array(
             'arguments' => array('new_posts' => NULL, 'num_posts' => 0, 'comment_mode'
     => 0, 'sticky' => 0),
          ),
          'forum_topic_navigation' => array(
             'arguments' => array('node' => NULL),
          ),
       );
     }

más información: http://api.drupal.org/api/function/hook_theme
http://drupal.org/node/173880#theme-registry
Subthemes

        Problema: Empezar desde 0 un tema
        Problema: Queremos tener variaciones
         menores de un tema (colores, fondos,
         etc)
        Problema: Queremos usar un tema
         contribuido pero con algunas
         modificaciones y nos interesa poder ir
         actualizándolo

más información: http://drupal.org/node/225125
Subthemes

Usando un subtheme:
●
    no necesitamos empezar desde 0
●
    podemos crear pequeñas variaciones de
    manera fácil
●
    podemos actualizar los temas padre sin
    problemas ya que estos no los modificamos.
Subthemes

El .info con la misma estructura pero usando la
  variable “base theme” (que nos indica el theme
  padre)
El subtheme hereda las propiedades de su
  “padre”. Podemos sobreescribir estas
  propiedades para modificarlas o añadir nuevas.
Subthemes – Manos a la obra
Instalamos Blueprint: http://drupal.org/project/blueprint

Creamos una carpeta llamada subtema y le ponemos el fichero subtema.info con:
name = Subtema
description = Tema subtema
core = 6.x
base theme = blueprint
stylesheets[all][] = subtema.css

Creamos un fichero subtema.css dónde podemos modificar alguna propiedad. Ej:
body {
    font-size: 2em;
}

Copiamos el fichero node.tpl.php de Blueprint y lo modificamos.
Subthemes – Herencias
¿Qué se hereda?
●Todas las hojas de estilo (CSS)
●Todos los javascripts

●Todos los templates (.tpl.php)

●Todo lo definido en el template.php

●Screenshot




¿Qué no se hereda?
●El logo.png
●Algunas opciones del .info como las regiones

●Todo lo definido en theme-settings.php

●Todo lo definido en el directorio “color”
Sobreescribiendo themes


            Problema: Queremos modificar el html que devuelve el core
            de Drupal o un módulo contribuido.

            Solución mala: Parcheamos directamente el código.
            No es mantenible

            Solución buena: Sobreescribimos (override) la función theme
            desde otro fichero y sin modificar el original




más información: http://drupal.org/node/173880
Sobreescribiendo themes




más información: http://drupal.org/node/173880
Sobreescribiendo themes

   El Core y los módulos devuelven el código html usando una función
   theme_

   function theme_box($title, $content, $region = 'main') {
     $output = '<h2 class="title">'. $title .'</h2><div>'. $content .'</div>';
     return $output;
   }

   Se usa la función theme() para permitir la sobreescritura:

   Return theme('box',$title,$content);




más información: http://drupal.org/node/173880
Sobreescribiendo themes

      Al usar la función theme('box') Drupal mira si existe y en este orden:

      nombre_del_tema_box() Por ejemplo: zen_box()
      nombre_del_engine_box() Por ejemplo: phptemplate_box()
      theme_box() La función original

      Cuando Drupal encuentra una de las funciones no busca más y devuelve
      el resultado de esa función.




más información: http://drupal.org/node/173880
Sobreescritura de tpl.php

        Drupal de manera automática ya permite
         sobreescribir ficheros tpl.php tan sólo
         modificando el nombre del fichero.
        Ejemplo:
        node-[type].tpl.php
             base template: node.tpl.php
             "node-story.tpl.php", "node-blog.tpl.php", etc.


        .
más información: http://drupal.org/node/190815
Firebug – El mejor amigo del
                 maquetador




                  Imprescindible, no salgáis de casa sin él




más información: http://getfirebug.com/
Theme Devel
     Nos ayuda a identificar de forma fácil las funciones que
     Intervienen en la maquetación de un elemento

     Sólo es necesario habilitarlo y hacer click sobre el
     elemento del que necesitamos la información.

     Nos ayuda a averiguar que función o template debemos
     sobreescribir




más información: http://drupal.org/node/209561
Template preprocessors

Las funciones preprocess sólo se aplican a los
Hooks de themes implementados como templates.

El rol principal es preparar las variables que se van
a usar dentro de los template (tpl.php)

function MYMODULE_preprocess_node(&$variables) {
// modificaciones en $variables.
}
Sections

           Nos permite asignar un tema diferente de la misma
           Manera que se gestiona dónde ha de ir un bloque

           Podemos tener varios subtemas diferentes y
           asignarlos por secciones




más información: http://drupal.org/project/sections
Theme de administración

Drupal permite asignar un tema diferente para
la administración.

Hay temas pensados para esta función: rootcandy.
http://drupal.org/project/rootcandy

Es recomendable tenerlo mientras creamos un
tema para “evitar accidentes”
Jquery y Drupal
●
  Drupal 6 lleva en el Core Jquery 1.2
●
  Usando Jquery Update podemos tener siempre la última
  versión.
  http://drupal.org/project/jquery_update
●
  Podemos añadir un fichero javascript desde el .info
  scripts[] = myscript.js
●
  O usando la función drupal_add_js
  (http://api.drupal.org/api/function/drupal_add_js)
●
  Hay que usar
  Drupal.behaviors.nombre_unico = function() {}
  en lugar de
  $(document).ready()

Más contenido relacionado

La actualidad más candente

codigos HTLM
codigos HTLMcodigos HTLM
codigos HTLM
yumnel
 

La actualidad más candente (20)

Drupal
DrupalDrupal
Drupal
 
Introduccion drupal
Introduccion drupalIntroduccion drupal
Introduccion drupal
 
Todo lo que necesitas saber sobre Drupal 8
Todo lo que necesitas saber sobre Drupal 8Todo lo que necesitas saber sobre Drupal 8
Todo lo que necesitas saber sobre Drupal 8
 
Drupal - Introducción
Drupal - IntroducciónDrupal - Introducción
Drupal - Introducción
 
Framework
FrameworkFramework
Framework
 
Phpmyadmin
PhpmyadminPhpmyadmin
Phpmyadmin
 
codigos HTLM
codigos HTLMcodigos HTLM
codigos HTLM
 
Instalación de drupal 7 en windows y en ubuntu
Instalación de drupal 7 en windows y en ubuntuInstalación de drupal 7 en windows y en ubuntu
Instalación de drupal 7 en windows y en ubuntu
 
Curso CDA: Seguridade e rendemento en Drupal
Curso CDA: Seguridade e rendemento en DrupalCurso CDA: Seguridade e rendemento en Drupal
Curso CDA: Seguridade e rendemento en Drupal
 
PHP Tema 4 - Acceso a bases de datos MySQL en PHP
PHP Tema 4 - Acceso a bases de datos MySQL en PHPPHP Tema 4 - Acceso a bases de datos MySQL en PHP
PHP Tema 4 - Acceso a bases de datos MySQL en PHP
 
Resumen INTRODUCCION DE LOS SISTEMAS OPERATIVOS EN RED. REDES LINUX SERVER (T...
Resumen INTRODUCCION DE LOS SISTEMAS OPERATIVOS EN RED. REDES LINUX SERVER (T...Resumen INTRODUCCION DE LOS SISTEMAS OPERATIVOS EN RED. REDES LINUX SERVER (T...
Resumen INTRODUCCION DE LOS SISTEMAS OPERATIVOS EN RED. REDES LINUX SERVER (T...
 
Drupal 8, presente y futuro
Drupal 8, presente y futuroDrupal 8, presente y futuro
Drupal 8, presente y futuro
 
Presentación Drupal
Presentación DrupalPresentación Drupal
Presentación Drupal
 
Drupal 8 WorkShop - e-Ghost 2015
Drupal 8 WorkShop - e-Ghost 2015  Drupal 8 WorkShop - e-Ghost 2015
Drupal 8 WorkShop - e-Ghost 2015
 
dotCMS: un Web CMS Open Source de perfil empresarial
dotCMS: un Web CMS Open Source de perfil empresarialdotCMS: un Web CMS Open Source de perfil empresarial
dotCMS: un Web CMS Open Source de perfil empresarial
 
Introducción a Drupal
Introducción a DrupalIntroducción a Drupal
Introducción a Drupal
 
PHP. Bases de Datos
PHP. Bases de DatosPHP. Bases de Datos
PHP. Bases de Datos
 
Php.y.my sql
Php.y.my sqlPhp.y.my sql
Php.y.my sql
 
04 Primeros pasos con my sql
04 Primeros pasos con my sql04 Primeros pasos con my sql
04 Primeros pasos con my sql
 
Gestores de contenido
Gestores de contenidoGestores de contenido
Gestores de contenido
 

Destacado

2008. Michael Angerer. Bulgarien – Wirtschaftsdynamik setzt sich fort. CEE-Wi...
2008. Michael Angerer. Bulgarien – Wirtschaftsdynamik setzt sich fort. CEE-Wi...2008. Michael Angerer. Bulgarien – Wirtschaftsdynamik setzt sich fort. CEE-Wi...
2008. Michael Angerer. Bulgarien – Wirtschaftsdynamik setzt sich fort. CEE-Wi...
Forum Velden
 
El movimiento-uniforme-y-rectilineo
El movimiento-uniforme-y-rectilineoEl movimiento-uniforme-y-rectilineo
El movimiento-uniforme-y-rectilineo
Edy Hurt
 
Media Port 2012, Session 1: Regionalmedien Austria
Media Port 2012, Session 1: Regionalmedien AustriaMedia Port 2012, Session 1: Regionalmedien Austria
Media Port 2012, Session 1: Regionalmedien Austria
WAN-IFRA
 
Memoria de la actividad del grupo Atlas VPM 2011 2
Memoria de la actividad del grupo Atlas VPM 2011 2Memoria de la actividad del grupo Atlas VPM 2011 2
Memoria de la actividad del grupo Atlas VPM 2011 2
Atlas VPM
 
Memoria de las actividades del grupo Atlas VPM 2012
Memoria de las actividades del grupo Atlas VPM 2012Memoria de las actividades del grupo Atlas VPM 2012
Memoria de las actividades del grupo Atlas VPM 2012
Atlas VPM
 
AkkuPower Ladegeräte Katalog
AkkuPower Ladegeräte KatalogAkkuPower Ladegeräte Katalog
AkkuPower Ladegeräte Katalog
AkkuShop.de
 

Destacado (19)

028 amanat kppm
028 amanat kppm028 amanat kppm
028 amanat kppm
 
victor Folder
victor Foldervictor Folder
victor Folder
 
2008. Michael Angerer. Bulgarien – Wirtschaftsdynamik setzt sich fort. CEE-Wi...
2008. Michael Angerer. Bulgarien – Wirtschaftsdynamik setzt sich fort. CEE-Wi...2008. Michael Angerer. Bulgarien – Wirtschaftsdynamik setzt sich fort. CEE-Wi...
2008. Michael Angerer. Bulgarien – Wirtschaftsdynamik setzt sich fort. CEE-Wi...
 
Taiwan für Deutsche: Was ich wichtig finde
Taiwan für Deutsche: Was ich wichtig findeTaiwan für Deutsche: Was ich wichtig finde
Taiwan für Deutsche: Was ich wichtig finde
 
Ttg kooperationen kl-v01 (1)
Ttg kooperationen kl-v01 (1)Ttg kooperationen kl-v01 (1)
Ttg kooperationen kl-v01 (1)
 
El movimiento-uniforme-y-rectilineo
El movimiento-uniforme-y-rectilineoEl movimiento-uniforme-y-rectilineo
El movimiento-uniforme-y-rectilineo
 
Game ON
Game ONGame ON
Game ON
 
Media Port 2012, Session 1: Regionalmedien Austria
Media Port 2012, Session 1: Regionalmedien AustriaMedia Port 2012, Session 1: Regionalmedien Austria
Media Port 2012, Session 1: Regionalmedien Austria
 
Content Thinking - wenn man Content Strategie ernst nimmt
Content Thinking - wenn man Content Strategie ernst nimmtContent Thinking - wenn man Content Strategie ernst nimmt
Content Thinking - wenn man Content Strategie ernst nimmt
 
Memoria de la actividad del grupo Atlas VPM 2011 2
Memoria de la actividad del grupo Atlas VPM 2011 2Memoria de la actividad del grupo Atlas VPM 2011 2
Memoria de la actividad del grupo Atlas VPM 2011 2
 
BUYING Butler Tutorial No.2 - Methodische Anforderungsanalyse für Office-Lösu...
BUYING Butler Tutorial No.2 - Methodische Anforderungsanalyse für Office-Lösu...BUYING Butler Tutorial No.2 - Methodische Anforderungsanalyse für Office-Lösu...
BUYING Butler Tutorial No.2 - Methodische Anforderungsanalyse für Office-Lösu...
 
Recruiting-to-go 2013 · Modul 5 · Dr. Patricia Hänel
Recruiting-to-go 2013 · Modul 5 · Dr. Patricia HänelRecruiting-to-go 2013 · Modul 5 · Dr. Patricia Hänel
Recruiting-to-go 2013 · Modul 5 · Dr. Patricia Hänel
 
Memoria de las actividades del grupo Atlas VPM 2012
Memoria de las actividades del grupo Atlas VPM 2012Memoria de las actividades del grupo Atlas VPM 2012
Memoria de las actividades del grupo Atlas VPM 2012
 
SoSe 2013 | IT-Zertifikat: DM - 00_Organisatorisches
 SoSe 2013 | IT-Zertifikat: DM - 00_Organisatorisches SoSe 2013 | IT-Zertifikat: DM - 00_Organisatorisches
SoSe 2013 | IT-Zertifikat: DM - 00_Organisatorisches
 
Bit wisem 2015-wieners-sitzung-09_Software-Entwicklung
Bit wisem 2015-wieners-sitzung-09_Software-EntwicklungBit wisem 2015-wieners-sitzung-09_Software-Entwicklung
Bit wisem 2015-wieners-sitzung-09_Software-Entwicklung
 
2015 8a bei Fielmann
2015 8a bei Fielmann2015 8a bei Fielmann
2015 8a bei Fielmann
 
Bit sosem 2016-wieners-sitzung-04_theoretische-informatik
Bit sosem 2016-wieners-sitzung-04_theoretische-informatikBit sosem 2016-wieners-sitzung-04_theoretische-informatik
Bit sosem 2016-wieners-sitzung-04_theoretische-informatik
 
GoLab_EuropeanProjects_DIM2014_mdiez
GoLab_EuropeanProjects_DIM2014_mdiezGoLab_EuropeanProjects_DIM2014_mdiez
GoLab_EuropeanProjects_DIM2014_mdiez
 
AkkuPower Ladegeräte Katalog
AkkuPower Ladegeräte KatalogAkkuPower Ladegeräte Katalog
AkkuPower Ladegeräte Katalog
 

Similar a Taller de Drupal - Sesión 4

Curso Drupal. Theming con Drupal
Curso Drupal. Theming con DrupalCurso Drupal. Theming con Drupal
Curso Drupal. Theming con Drupal
Mediaglobe Innova
 

Similar a Taller de Drupal - Sesión 4 (20)

Temas Drupal
Temas DrupalTemas Drupal
Temas Drupal
 
ABC theming en Drupal7
ABC theming en Drupal7ABC theming en Drupal7
ABC theming en Drupal7
 
Site building
Site buildingSite building
Site building
 
Desarrollo de Themes de WordPress desde cero. @DarioBF en @WPBilbao
Desarrollo de Themes de WordPress desde cero. @DarioBF en @WPBilbaoDesarrollo de Themes de WordPress desde cero. @DarioBF en @WPBilbao
Desarrollo de Themes de WordPress desde cero. @DarioBF en @WPBilbao
 
Sitios responsivos con Adaptive Theme
Sitios responsivos con Adaptive ThemeSitios responsivos con Adaptive Theme
Sitios responsivos con Adaptive Theme
 
Curso Drupal. Theming con Drupal
Curso Drupal. Theming con DrupalCurso Drupal. Theming con Drupal
Curso Drupal. Theming con Drupal
 
1 Diseño Web introducción a Drupal
1 Diseño Web   introducción a Drupal1 Diseño Web   introducción a Drupal
1 Diseño Web introducción a Drupal
 
Joomla!Day 2011 España - Taller desarrollo de plantillas Joomla! - Sergio Igl...
Joomla!Day 2011 España - Taller desarrollo de plantillas Joomla! - Sergio Igl...Joomla!Day 2011 España - Taller desarrollo de plantillas Joomla! - Sergio Igl...
Joomla!Day 2011 España - Taller desarrollo de plantillas Joomla! - Sergio Igl...
 
Vistiendo a WordPress
Vistiendo a WordPressVistiendo a WordPress
Vistiendo a WordPress
 
Drupal7 para desarrolladores
Drupal7 para desarrolladoresDrupal7 para desarrolladores
Drupal7 para desarrolladores
 
Drupal conceptos básicos y su alcance en proyectos
Drupal conceptos básicos y su alcance en proyectosDrupal conceptos básicos y su alcance en proyectos
Drupal conceptos básicos y su alcance en proyectos
 
Desarrollo de temas de apariencia para Liferay 6.1
Desarrollo de temas de apariencia para Liferay 6.1Desarrollo de temas de apariencia para Liferay 6.1
Desarrollo de temas de apariencia para Liferay 6.1
 
El universo JavaScript en Drupal 7
El universo JavaScript en Drupal 7El universo JavaScript en Drupal 7
El universo JavaScript en Drupal 7
 
003 - Temas & temas hijos en WordPress
003 - Temas & temas hijos en WordPress003 - Temas & temas hijos en WordPress
003 - Temas & temas hijos en WordPress
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2
 
Acceso a-base-de-datos-en-php
Acceso a-base-de-datos-en-phpAcceso a-base-de-datos-en-php
Acceso a-base-de-datos-en-php
 
Joomladay Mallorca 2010 Templates Workshop
Joomladay Mallorca 2010 Templates WorkshopJoomladay Mallorca 2010 Templates Workshop
Joomladay Mallorca 2010 Templates Workshop
 
Twig y otros "themas" en Drupal 8
Twig y otros "themas" en Drupal 8Twig y otros "themas" en Drupal 8
Twig y otros "themas" en Drupal 8
 
Tutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. TwigTutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. Twig
 
¡Twig desde 0!
¡Twig desde 0! ¡Twig desde 0!
¡Twig desde 0!
 

Último

6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
Wilian24
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Fernando Solis
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
jlorentemartos
 

Último (20)

SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 
Sesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdfSesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdf
 
Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 
Desarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por ValoresDesarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por Valores
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
PP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomasPP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomas
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdf
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdf
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
Power Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptxPower Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptx
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
 

Taller de Drupal - Sesión 4

  • 1. Taller de Drupal – Sesión 4
  • 3. Características del theming con Drupal Un “theme” es una serie de ficheros que define la capa de presentación (el look and feel) de una web con Drupal. Un theme especifica la estructura de la página, las hojas de estilo y, si es necesario, el Javascript Para crear o modificar un theme se necesita conocimientos de xHTML y CSS y la terminología usada en Drupal
  • 4. Algunos themes de Drupal más información: http://drupal.org/project/Themes
  • 5. Anatomía de un theme de Drupal más información: http://drupal.org/node/231036
  • 6. Anatomía de un theme de Drupal .info name (required) description core engine base theme regions stylesheets scripts más información: http://drupal.org/node/171205
  • 7. Anatomía de un theme de Drupal ; $Id: garland.info,v 1.5 2007/07/01 23:27:32 goba Exp $ name = Garland description = Tableless, recolorable, multi-column, fluid width theme (default). version = VERSION core = 6.x engine = phptemplate stylesheets[all][] = style.css stylesheets[print][] = print.css Minnelli sub-theme of Garland.: ; $Id: minnelli.info,v 1.7 2007/12/04 20:58:44 goba Exp $ name = Minnelli description = Tableless, recolorable, multi-column, fixed width theme. version = VERSION core = 6.x base theme = garland stylesheets[all][] = minnelli.css
  • 8. Anatomía de un theme de Drupal Template files ● page.tpl.php ● node.tpl.php ● block.tpl.php ● box.tpl.php ● comment.tpl.php
  • 9. Anatomía de un theme de Drupal template.php Nos sirve para sobreescribir las funciones de theme y para las funciones “preprocesors”
  • 10. Anatomía de un theme de Drupal Subthemes Los subtemas heredan las propiedades del sus ancestros. Facilita la creación de variaciones de temas, por ejemplo de temas contribuidos. más información: http://drupal.org/node/225125
  • 11. Themes base para empezar un theme personalizado Nos facilitan tareas comunes que todos los themes necesitan Algunos incluyen un framework de CSS (960, blueprint) Muchas alternativas. Los más famosos: Zen, Blueprint, Genesis. más información: http://www.chapterthree.com/blog/squiggy_rubio/review_drupal_6_starter_themes
  • 12. hook_theme El registro de temas de Drupal guarda información cacheada de los hooks de temas disponibles y como manejarlos Los módulos han de usar el hook_theme para “registrar” sus funciones theme_ Es necesario borrar la cache para volver a registrar estas funciones Podemos forzar durante el desarrollo a que se “refresque” estos registros en cada página más información: http://api.drupal.org/api/function/hook_theme http://drupal.org/node/173880#theme-registry
  • 13. hook_theme function hook_theme($existing, $type, $theme, $path) { return array( 'forum_display' => array( 'arguments' => array('forums' => NULL, 'topics' => NULL, 'parents' => NULL, 'tid' => NULL, 'sortby' => NULL, 'forum_per_page' => NULL), ), 'forum_list' => array( 'arguments' => array('forums' => NULL, 'parents' => NULL, 'tid' => NULL), ), 'forum_topic_list' => array( 'arguments' => array('tid' => NULL, 'topics' => NULL, 'sortby' => NULL, 'forum_per_page' => NULL), ), 'forum_icon' => array( 'arguments' => array('new_posts' => NULL, 'num_posts' => 0, 'comment_mode' => 0, 'sticky' => 0), ), 'forum_topic_navigation' => array( 'arguments' => array('node' => NULL), ), ); } más información: http://api.drupal.org/api/function/hook_theme http://drupal.org/node/173880#theme-registry
  • 14. Subthemes Problema: Empezar desde 0 un tema Problema: Queremos tener variaciones menores de un tema (colores, fondos, etc) Problema: Queremos usar un tema contribuido pero con algunas modificaciones y nos interesa poder ir actualizándolo más información: http://drupal.org/node/225125
  • 15. Subthemes Usando un subtheme: ● no necesitamos empezar desde 0 ● podemos crear pequeñas variaciones de manera fácil ● podemos actualizar los temas padre sin problemas ya que estos no los modificamos.
  • 16. Subthemes El .info con la misma estructura pero usando la variable “base theme” (que nos indica el theme padre) El subtheme hereda las propiedades de su “padre”. Podemos sobreescribir estas propiedades para modificarlas o añadir nuevas.
  • 17. Subthemes – Manos a la obra Instalamos Blueprint: http://drupal.org/project/blueprint Creamos una carpeta llamada subtema y le ponemos el fichero subtema.info con: name = Subtema description = Tema subtema core = 6.x base theme = blueprint stylesheets[all][] = subtema.css Creamos un fichero subtema.css dónde podemos modificar alguna propiedad. Ej: body { font-size: 2em; } Copiamos el fichero node.tpl.php de Blueprint y lo modificamos.
  • 18. Subthemes – Herencias ¿Qué se hereda? ●Todas las hojas de estilo (CSS) ●Todos los javascripts ●Todos los templates (.tpl.php) ●Todo lo definido en el template.php ●Screenshot ¿Qué no se hereda? ●El logo.png ●Algunas opciones del .info como las regiones ●Todo lo definido en theme-settings.php ●Todo lo definido en el directorio “color”
  • 19. Sobreescribiendo themes Problema: Queremos modificar el html que devuelve el core de Drupal o un módulo contribuido. Solución mala: Parcheamos directamente el código. No es mantenible Solución buena: Sobreescribimos (override) la función theme desde otro fichero y sin modificar el original más información: http://drupal.org/node/173880
  • 20. Sobreescribiendo themes más información: http://drupal.org/node/173880
  • 21. Sobreescribiendo themes El Core y los módulos devuelven el código html usando una función theme_ function theme_box($title, $content, $region = 'main') { $output = '<h2 class="title">'. $title .'</h2><div>'. $content .'</div>'; return $output; } Se usa la función theme() para permitir la sobreescritura: Return theme('box',$title,$content); más información: http://drupal.org/node/173880
  • 22. Sobreescribiendo themes Al usar la función theme('box') Drupal mira si existe y en este orden: nombre_del_tema_box() Por ejemplo: zen_box() nombre_del_engine_box() Por ejemplo: phptemplate_box() theme_box() La función original Cuando Drupal encuentra una de las funciones no busca más y devuelve el resultado de esa función. más información: http://drupal.org/node/173880
  • 23. Sobreescritura de tpl.php Drupal de manera automática ya permite sobreescribir ficheros tpl.php tan sólo modificando el nombre del fichero. Ejemplo: node-[type].tpl.php base template: node.tpl.php "node-story.tpl.php", "node-blog.tpl.php", etc. . más información: http://drupal.org/node/190815
  • 24. Firebug – El mejor amigo del maquetador Imprescindible, no salgáis de casa sin él más información: http://getfirebug.com/
  • 25. Theme Devel Nos ayuda a identificar de forma fácil las funciones que Intervienen en la maquetación de un elemento Sólo es necesario habilitarlo y hacer click sobre el elemento del que necesitamos la información. Nos ayuda a averiguar que función o template debemos sobreescribir más información: http://drupal.org/node/209561
  • 26. Template preprocessors Las funciones preprocess sólo se aplican a los Hooks de themes implementados como templates. El rol principal es preparar las variables que se van a usar dentro de los template (tpl.php) function MYMODULE_preprocess_node(&$variables) { // modificaciones en $variables. }
  • 27. Sections Nos permite asignar un tema diferente de la misma Manera que se gestiona dónde ha de ir un bloque Podemos tener varios subtemas diferentes y asignarlos por secciones más información: http://drupal.org/project/sections
  • 28. Theme de administración Drupal permite asignar un tema diferente para la administración. Hay temas pensados para esta función: rootcandy. http://drupal.org/project/rootcandy Es recomendable tenerlo mientras creamos un tema para “evitar accidentes”
  • 29. Jquery y Drupal ● Drupal 6 lleva en el Core Jquery 1.2 ● Usando Jquery Update podemos tener siempre la última versión. http://drupal.org/project/jquery_update ● Podemos añadir un fichero javascript desde el .info scripts[] = myscript.js ● O usando la función drupal_add_js (http://api.drupal.org/api/function/drupal_add_js) ● Hay que usar Drupal.behaviors.nombre_unico = function() {} en lugar de $(document).ready()