Está usted en Indice > Construcción > Lenguajes > PHP > Lecciones y Paso a Paso > Ampliar funciones en templates de DotClear en PHP
Construcción
Maletín
Utilidades
Cursos
Promoción
Rentabilidad
Zona Novatos
Foros
Acceso a tu cuenta

Ampliar funciones en templates de DotClear en PHP

Los templates en DotClear no dependen de ningún sistema de plantillas, sino que se basan en código HTML con llamadas embebidas a funciones o métodos estáticos de clases PHP. Por ejemplo, en el template por defecto, la llamada para mostrar el contenido de un post es la siguiente:

<?php dcPostContent(); ?>Esta función realiza la operación de obtener de base de datos el texto de un post y escribirlo en la pantalla del usuario.

Al instalar un plugin que modifique alguna funcionalidad relacionada con el texto, éste necesita que se cambie las llamadas de los templates para poder tener el control de lo que sucede. Por ejemplo, el plugin Highliting Search, que sirve para colorear las palabras que coincidan en una búsqueda, en su instalación pide que se modifique la llamada de la siguiente forma:

<?php highlight::dcPostContent(); ?>En esta llamada, highlight es una clase que el propio plugin copia en su directorio, y dcPostContent() es un método, al que se llama de forma estática, y que reescribe la función por defecto para que además de mostrar el contenido de un post, inserte un estilo para resaltar ciertas palabras.

La metodología para ampliar funcionalidades, por tanto, es simple: se copia el método por defecto en otro lugar, se amplía su funcionalidad y se modifica la llamada para que el template utilice la función nueva y no la anterior.

Sin embargo, hay un problema al tener más de un plugin que amplíe de forma distinta una misma funcionalidad. Siguiendo con el ejemplo anterior, otro plugin, el Syntax Highlighter, que se utiliza para colorear texto en base a una sintaxis, necesita que la llamada en el template se haga de la siguiente forma:

<?php syntaxHL::PostContent(); ?>De esta forma se pasaría el control del texto a la clase syntaxHL de este plugin, perdiéndose a la vez la funcionalidad que proporcionaba el anterior Highliting Search.

La solución, para estos casos en los que chocan los plugins, pasa por escribir un método propio que contenga la funcionalidad principal (mostrar un texto) más las dos funcionalidades ampliadas (resaltar términos de búsqueda y colorear texto con sintaxis). Para ello, lo ideal es colocar todas las funcionalidades propias en un mismo archivo dentro del template, pero independiente de la lógica de presentación. Llamaremos a este archivo functions.php. El primer paso sería incluir una llamada a este fichero de funciones en el inicio de template.php, que es el archivo principal del template:

<?php
include ('functions.php');
?>El archivo functions.php debe contener una clase con los métodos que se quieran ampliar. En este ejemplo he llamado a la clase myBlog y he ampliado los métodos que se utilizan para mostrar texto completo y mostrar el abstract. En ellos he unido las funcionalidades de los dos plugins anteriores, para poder disponer de ambos.

<?php

class myBlog {

function PostContent() {
global $news;

if ($part > 0) {
$text = $news->blog->getPart($news->f('post_content'),$part);
} else {
$text = $news->getContent();
}
$text = syntaxHL::highlight($text);
$text = highlight::highlightAll($text);
echo $text;
}

function PostAbstract($s='%s',
$l='<p><a href="%s" title="Read %s">Read next</a></p>') {
global $news;

if ($news->f('post_chapo') != '') {
$text = $news->getChapo();
$text = syntaxHL::highlight($text);
$text = highlight::highlightAll($text);
printf($s, $text);
printf($l,$news->getPermURL(),$news->f('post_titre'));
} else {
$text = $news->getContent();
$text = syntaxHL::highlight($text);
$text = highlight::highlightAll($text);
echo $text;
}
}
}

?>

Por último, las llamadas en el archivo template.php a estos métodos se deben modificar para que apunten a estos nuevos métodos.

<?php myBlog::PostContent(); ?>
<?php myBlog::PostAbstract(); ?>




Autor: Joaquín Martí­ García
http://www.7bytes.net/tb.php?id=8

Usuarios que han visto este tema también han visto...

- Introducción basica a Flash con PHP
- Días online
- Agregar caritas al sistema en PHP
- Paginador en PHP con buscador incluído para MySQL
- Instrucciones para conectar con una Base de Datos MySQL en PHP


Versión imprimible - Versión imprimible de este documento
Enviar e-mail - Enviar por e-mail este documento
Publicidad

Información legal | Política de Privacidad | Contacte con nosotros

Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.


Página generada el 30-08-2008 a las 18:58:44