C�mo registrar un Conjunto de Plantillas

Los Conjuntos de Plantillas (Template Sets) proporcionan a los desarrolladores la habilidad de empacar un conjunto de plantillas que constituyan el diseño y la estructura completos de un sitio dentro de una extensión. Ese conjunto de plantillas se pone a disposición de los usuarios como una opción cuando crea un nuevo blog. Cuando el blog se crea, este se inicializa usando todas las plantillas contenidas en el conjunto de plantillas seleccionada.

Estas son algunas cosas que un desarrolladores puede especificar cuando registra un conjunto de plantillas a través de la API:

  • El nombre del conjunto de plantillas
  • El nombre de cada plantilla en el conjunto
  • El tipo de archivo para la plantilla archive
  • El mapeo de archivos para la plantilla archive
  • El nombre de archivos de las plantillas del índice

El siguiente es un extracto de un código de muestra para registrar un conjunto de plantillas. Un ejemplo más complejo se encuentra después del salto.

   1:  sub init_registry {
   2:      my $plugin = shift;
   3:      $plugin->registry({
   4:          template_sets => {
   5:              my_set => {
   6:                  label => "Mi Propio Conjunto",
   7:                  base_path => 'plugins/MiConjutno/plantillas',
   8:                  order => 100,
   9:                  templates => {
  10:                       # las plantillas se muestran aqui
  11:                  },
  12:              },
  13:          },
  14:      });
  15:  };

Opciones de Paquetes de Plantillas

Cuando registrar un conjunto de plantillas, especificas una lista de plantillas que serán incluidas en el conjunto. La lista de plantillas se segmenta en tipos de plantillas. En cada tipo de plantilla, se enlistan todas las plantillas de ese tipo. A continuación se enlistan los tipos de plantillas soportados:

Tipos de Plantillas

  • índice
  • individual
  • archivo
  • sistema
  • modulo
  • widget

Opciones de las plantillas Índice

  • label – el nombre con el que se conoce la plantilla
  • outfile – el nombre del archivo de salida
  • rebuild_me – 1 si la plantilla se reconstruye con los índices, 0 si no.

Opciones de plantillas Individuales

  • label – el nombre con el que se conoce la plantilla

Opciones de plantillas de Archivo

  • label – el nombre con el que se conoce la plantilla
  • mappings – la lista de todos los mapeos que tiene la plantilla. Mapeo son las posibles usos que tiene una plantilla. Puede usarse para archivar por categorías, por meses, por autores y necesita indicar como se formarán los diferentes tipos de archivos.

Opciones de mapeo de platinllas

  • archive_type – el nombre con el que se mostrará el archivo
  • file_template – la ruta dónde se generarán los archivos para esta plantilla
  • preferred – cuando existan mas de un mapeo para una misma plantilla, el mapeo «preferido» se usará al construir los enlaces al archivo

Tipos de Archivos permitidos

  • Individual
  • Página
  • Mensual
  • Mensual por Categoría
  • Mensual por Autor
  • Categoría

Opciones de plantillas de Sistema

  • label – el nombre con el que se conoce la plantilla

Opciones de plantillas de Módulos

  • label – el nombre con el que se conoce la plantilla

Ejemplo

   1: sub init_registry {
   2:     my $plugin = shift;
   3:     $plugin->registry({
   4:         template_sets => {
   5:             my_set => {
   6:                 label => "Mi Conjunto",
   7:                 base_path => 'plugins/MiConjunto/plantillas',
   8:                 order => 100,
   9:                 templates => {
  10:                     index => {
  11:                         'homepage' => {
  12:                             label => 'Inicio',
  13:                             outfile => 'index.php',
  14:                             rebuild_me => '1',
  15:                         },
  16:                     },
  17:                     individual => {
  18:                         'entry' => {
  19:                             label => 'Entrada Individual',
  20:                             mappings => {
  21:                                 entry_archive => {
  22:                                     archive_type => 'Individual',
  23:                                 },
  24:                             },
  25:                         },
  26:                     },
  27:                     archive => {
  28:                         'entry_listing' => {
  29:                             label => 'Lista de Entradas',
  30:                             mappings => {
  31:                                 monthly => {
  32:                                     archive_type => 'Individual',
  33:                                     preferred => '1',
  34:                                 },
  35:                                 category => {
  36:                                     archive_type => 'Category',
  37:                                     file_template => '%c/index.html',
  38:                                     preferred => '0',
  39:                                 },
  40:                             },
  41:                         },
  42:                     },
  43:                     system => {
  44:                         'search_results' => {
  45:                             label => 'Resultados de la Búsqueda',
  46:                             description_label => '',
  47:                         },
  48:                     },
  49:                     module => {
  50:                         'foo' => {
  51:                             label => 'Módulo X',
  52:                         },
  53:                     },
  54:                 },
  55:             },
  56:         },
  57:     });
  58: }