Skip to Content
RSSGrab the RSS feed! ->

Como cargar de código tus páginas de panels

Serán más rápidas, más fácil de hacer deployment, y las tendrás bajo control de versiones.

Todos sabemos que puedes proveer de views en código, y de hecho es recomendable. Pero y las páginas de Panels? También es posible. De hecho, es bastante fácil.

Digamos que ya has terminado de hacer el trabajo una versión beta de estas páginas, y estas listo para empezar a tenerlo bajo control de versiones, y dormir mas tranquilo.

1. Creamos nuestro módulo que cargará estas páginas.

panels_default_pages_file_structure.png
Llamaremos a nuestro módulo ctools_defaults. A la derecha vemos la estructura y los ficheros que vamos a necesitar en nuestro módulo.
Dentro del directorio pages iremos metiendo cada una de nuestras páginas exportadas.

2. Implementar hook_ctools_plugin_api()

Esto se hace para hacer saber a ctools que nuestro módulo tiene algo que decir. Lo hacemos en ctools_defaults.module.

<?php
/**
  * Implementation of hook_ctools_plugin_api().
  */
function ctools_defaults_ctools_plugin_api($module, $api) {
  if (
$module == 'page_manager' && $api == 'pages_default') {
    return array(
'version' => 1);
  }
}
?>

3. Implementar hook_default_page_manager_pages()

El nombre del fichero, importante, sera NOMBREDEMODULO.pages_default.inc - en nuestro caso ctools_defaults.pages_default.inc. Como somos chicos listos, dentro haremos un pequeño truco, para facilitarnos la vida y tener cada página en su fichero independiente. Esto nos permitirá tener un control de versiones independiente para cada página, así como facilitar el proceso de re-exportar el código cuando hagamos cambios.

<?php
/**
* Implementation of hook_default_page_manager_pages().
*/
function ctools_defaults_default_page_manager_pages() {
 
$pages = array();
 
$path = drupal_get_path('module', 'ctools_defaults') . '/pages';
 
$files = drupal_system_listing('.inc$', $path, 'name', 0);
  foreach(
$files as $file) {
    include_once
$file->filename;
   
$pages[$page->name] = $page;
   }
  return
$pages;
}
?>

Que hay de especial, no mucho, este código busca ficheros .inc en el directorio llamado pages dentro de nuestro módulo, y para cada uno, le dirá a panels que tenemos página por defecto. Cada nuevo fichero que pongamos aquí, se cargará automáticamente.

4. Exportar nuestras páginas de panels.

El proceso es bastante sencillo, pero por si acaso alguno se pierde, el botón está aquí cuando entras a editar tu página de panels:
panel_page_export_button.png

Lo que te llevará a una página con el codigo listo para ser copiado, tal que así:
panel_page_export_code.png

5. Crear nuestro nombrepagina.inc

Creamos un nombredepagina.inc dentro del directorio pages en el directorio de nuestro módulo.

<?php
// paste below the code exported from the panels UI
?>

Dentro de este fichero, abriremos php, y pegamos el código copiado de la anterior pantalla, directamente, sin complejos. Salvamos el fichero.

6. Limpiar la cache

Panels cachea (afortunadamente) las páginas por defecto que proveen los módulos de terceros, así es que deberemos de limpiar la cache, cuando creemos una nueva pagina por defecto, y cuando modifiquemos el código de alguna ya en el sistema.

Conclusión

Esta técnica nos permite dormir mas tranquilos. Si alguna vez alguien toca algo, y no se rompe todo, podremos revertir al código original. Podremos de esta manera crear paginas basándonos en otras parecidas si hace falta, por ejemplo, reduciendo así nuestro tiempo de desarrollo, y mejorando nuestras relaciones personales como un bonus.

Si tenéis algún comentario ya sabéis, si me equivoco en algo por favor decírmelo, y lo corrijo cuanto antes.

AttachmentSize
ctools_defaults.tar.gz926 bytes

Enviar un comentario nuevo

El contenido de este campo se mantiene privado y no se mostrará públicamente.

Idiomas

Contact