|
*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.* TinyButStrong
version 2.01
*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.* |
|
|
Motor de Plantilla para Profesionales y Principiantes
para PHP versión 4.0.6 o superior
|
|
Tabla de Contenidos:
TinyButStrong (TBS) es una clase PHP muy útil para desarrollar una aplicación de una forma limpia, separando los scripts PHP y los archivos HTML. Con TBS, las páginas HTML son generadas dinámicamente al combinar una plantilla con datos. Esto es lo que se llama un Motor de Plantillas.
El nombre TBS viene del hecho que esta herramienta contiene solamente 8 funciones y aún es muy poderosa. Le permite combinar páginas de plantillas HTML con sus variables PHP. o datos de MySQL, PostgreSQL o SQLite.
TBS ha sido concebido de forma tal que Ud. pueda desarrollar su plantilla de páginas HTML con facilidad al usar cualquier editor HTML visual (como Dreamweaver o Frontpage). Pero si Ud. diseña sus páginas HTML con un editor de texto, también es una forma limpia de hacerlo. TBS también le permite crear Javascript dinámicamente.
Como su nombre lo dice, TBS es fácil de usar, fuerte y rápido, además es completamente °~° freeware °~°.
En el lado HTML:
Usted diseña una página la cual no contiene necesariamente algún script PHP, así como nada de programación. En esta página se colocan etiquetas TBS en los lugares donde se desea mostrar los datos dinámicos. Esta página se llama una 'plantilla'.
Existen dos tipos de etiquetas: los 'campos' que son utilizados para mostrar los ítems de datos dinámicos, y los 'bloques' que se usan para definir una área, generalmente a fin de mostrar registros de una fuente de datos.
En el lado PHP:
Usted utiliza variables tipo objetos TBS para manejar la combinación de su Plantilla HTML con los datos. Al final, TBS muestra los resultados de la combinación.
1. |
Copie el archivo tbs_class.php en un directorio de su sitio Web. |
2. |
Al inicio de su programa PHP, agregue las siguientes líneas:
include_once('tbs_class.php');
$TBS =
new clsTinyButStrong ;
Atención: si el archivo TBS tbs_class.php se encuentra en un directorio distinto al de su aplicación, entonces deberá indicar dicho directorio en la parte inicial del nombre del archivo TBS. |
Explicación y detalles técnicos:
TinyButStrong es una librería escrita en PHP; es un componente para ser referenciado en sus programas PHP. En términos técnicos TinyButStrong es una 'clase' escrita en PHP y el nombre de dicha clase es clsTinyButStrong.
La variable $TBS que Ud. agrega al principio de sus programas PHP le permite ejecutar la combinación de su plantilla con su aplicación PHP. En términos técnicos, la variable $TBS es una 'instancia' de la clase clsTinyButStrong.
Ejemplo 1:
Plantilla Html |
Programa Php |
Resultado |
<html>
<body>
[var.message]
</body>
</html>
|
<?
include_once('tbs_class.php'); $TBS = new clsTinyButStrong
; $TBS->LoadTemplate('template.htm')
;
$message = 'Hello' ; $TBS->Show() ;
?>
|
<html>
<body> Hello </body> </html> |
Ejemplo 2:
Plantilla Html |
Programa Php |
Resultado |
<table>
<tr><td>[blk.val;block=tr]</td></tr>
</table>
|
<?
include_once('tbs_class.php'); $TBS = new clsTinyButStrong
; $TBS->LoadTemplate('template.htm')
;
$list = array('X','Y','Z')
;
$TBS->MergeBlock('blk',$list)
; $TBS->Show() ;
?>
|
<table>
<tr><td>X</td></tr> <tr><td>Y</td></tr> <tr><td>Z</td></tr> </table> |
La combinación de una plantilla se realiza cuando un programa PHP utiliza una variable objeto declarada como una clase clsTinyButStrong.
Por ejemplo, la sentencia:
$TBS = new clsTinyButStrong ;
Este objeto permite cargar la plantilla, para hacer la combinación de ésta con los datos, y entonces mostrar el resultado.
Ejemplo de código PHP:
include_once('tbs_class.php');
$TBS = new clsTinyButStrong
;
$TBS->LoadTemplate('template.htm')
;
$TBS->MergeBlock('ctry','mysql','SELECT
* FROM t_country') ;
$TBS->Show() ;
A continuación una lista de las propiedades y métodos de los objetos TinyButStrong:
Carga una plantilla para el proceso de combinación (merging).
El contenido completo del archivo se almacena en la propiedad
Source del objeto TBS.
Sintaxis:
$TBS->LoadTemplate(string File{, string HtmlCharSet})
Argumento |
Descripción |
File |
Ruta local o absoluta del archivo a cargar. |
HtmlCharSet |
Opcional. Indica la codificación de caracteres (charset) a usar para la conversión HTML de los datos cuando sean combinados. Debería ser el mismo que el charset de la plantilla. El valor por defecto es '' (vacío) que es equivalente a 'ISO-8859-1' (Latin 1).
Si su plantilla utiliza un charset especial, indique entonces el valor Html para este charset.
En una página Html, el charset se coloca al inicio del archivo, en el atributo 'content' de una etiqueta <Meta> . Los charsets soportados por TBS son los charsets soportados por la función PHP htmlentities(). Por ejemplo: 'BIG5' (Chinese) o 'EUCJP' (Japanese). |
Sin conversión Html:
Si utiliza un valor de
False como el parámetro HtmlCharSet, los datos no serán convertidos cuando sean combinados con la plantilla.
Función de usuario:
Si su charset no es soportado por PHP, se puede indicar una función de usuario que haga la conversión Html. Para esto, se utiliza el parámetro HtmlCharSet con la sintáxis '=myfunction'.
La función de usuario deberá tomar como argumento una cadena y devolver la misma cadena convertida.
Agregando el archivo al final de la plantilla actual:
Se puede utilizar la palabra clave '+' en lugar del charset para tener el archivo cargado al final de la plantilla actual. El parámetro charset continúa siendo el mismo de la primera plantilla cargada.
Combina uno o muchos
bloques TBS con los registros provenientes de una fuente de datos.
Devuelve el número del último registro mostrado (el primero es el número 1).
TinyButStrong soporta varios tipos de datos en forma nativa:
Datos Php: un arreglo, una cadena, un número.
Base de datos : MySQL ; PostgreSQL ; SQLite.
Ud. puede también agregar uno nuevo: '
agregando un tipo de origen de datos'.
Existe un modo de 'Por Página' , descrito
más adelante.
Sintaxis:
int $TBS->MergeBlock(string BlockName, mixed Source{, string Query}{, int PageSize, int PageNum}{, int RecCount})
Argumento |
Descripción |
BlockName |
Indica el nombre del bloque TBS a combinar.
Se pueden mezclar muchos bloques con los mismos datos al indicar sus nombres separados por comas. |
Source |
Indica la fuente de datos a combinar.
La tabla inferior muestra los valores posibles de acuerdo al tipo del origen de datos.
|
Query |
Opcional. Indica la sentencia SQL que devolverá los registros a combinar.
La tabla inferior muestra los valores posibles de acuerdo al tipo del origen de datos. |
PageSize |
Opcional. Se debe definir este argumento si se desea activar el Modo por página.
Indica el número de registros en una página. |
PageNum |
Opcional. Este argumento debe ser definido si se desea activar el Modo por página .
Indica el número de la página a mostrar. La primera página es la número 1.
El valor especial de -1 muestra la última página del
total de ellas. |
RecCount |
Opcional. Este argumento es útil sólo con el Modo por página . Permite ajustar el cálculo del número de registros devueltos por el método MergeBlock().
RecCount |
Valor devuelto por MergeBlock() |
0 : |
Es el valor por defecto. Este método devuelve el número del último registro mostrado en la página requerida. |
-1 : |
El método lee todos los registros hasta el final y devuelve el número total de registros. De todas formas, sólo los registros requeridos serán los mostrados. |
>0 : |
El método devuelve el valor de RecCount.
De todas formas, éste retornará el número del último registro en la página requerida si éste es mayor que RecCount. |
Utilice este parámetro a fin de calcular y salvar el número total de registros.
Por ejemplo:
if (isset($_POST['nbr_rec']))
{
$nbr_rec = $_POST['nbr_rec']
;
} else {
$nbr_rec = -1 ;
}
$nbr_rec = $TBS->MergeBlock('blk1',$cnx_id,'select
* from t_country',$p_size,$p_num,$nbr_rec);
|
Enlaces entre bloque y registros:
El método MergeBlock() busca en la plantilla por el nombre especificado del bloque TBS. Entonces, dicho bloque se repite tantas veces como registros existen dentro del origen de datos.
Para mostrar los datos de un registro, se deben usar los campos TBS enlazados. Un campo TBS está enlazado cuando el nombre de éste está compuesto por el nombre del bloque seguido por un punto y un nombre de columna o índice del Record Set. Un campo enlazado debe estar dentro de un bloque.
Ejemplo:
Nombre del bloque: block1
Columnas devueltas por la sentencia: field1,field2,field3
Campos TBS enlazados: [block1.field1], [block1.field2], [block1.field3]
Si no se encuentra la definición del bloque en la plantilla, entonces el método MergeBlock() combinará el primer registro con todos los campos enlazados que se encuentren en la plantilla.
Es posible definir también bloques más complejos. Para mayor información, refiérase al capítulo
Bloques TBS.
Combinando muchos bloques con los mismos datos:
Se pueden combinar múltiples bloques con los mismos datos indicando sus nombres separados por comas dentro del parámetro BlockName.
En este caso, la sentencia es abierta una única vez, y los registros son almacenados para alimentar los distintos bloques.
Ejemplo:
$TBS->MergeBlock('block1,block2,block3','mysql','SELECT * FROM MyTable');
Contando los registros:
Para mostrar el número de un registro, utilice un campo TBS vinculado a la columna virtual '#'.
Si coloca este campo fuera del bloque, mostrará el número total de registros.
Ejemplo: [block1.#]
La columna virtual '$' mostrará el índice del registro actual si el origen de los datos viene de una arreglo Php.
Ejemplo: [block1.$]
Argumentos de Recursos y Peticiones de acuerdo al tipo de origen de los datos:
Tipo de Origen de Datos |
Origen |
Sentencia |
Text (*) |
La palabra clave 'text' |
Un texto |
Number (*) |
La palabra clave 'num' |
Un número o un arreglo especial (vea más abajo) |
Clear (*) |
La palabra clave 'clear' |
- |
Conditional (*) |
La palabra clave 'cond' |
- |
PHP Array (*) |
Un arreglo Php |
- |
La palabra clave 'array' |
Un arreglo Php |
La palabra clave 'array' |
Una cadena que representa un arreglo contenido o anidado en una variable global Php (vea más abajo) |
MySQL |
Un identificador de una conexión MySql o la palabra clave 'mysql' |
Una sentencia SQL |
Un identificador de un result MySql |
- |
PostgreSQL |
Un identificador de una conexión PostgreSql |
Una sentencia SQL |
Un identificador de un result PostgreSql |
- |
SQLite |
Un identificador de una conexión SQLite |
Una sentencia SQLite |
Un identificador de un result SQLite |
- |
custom
|
Una palabra clave, un objeto o un identificador de recursos no mencionado en esta tabla.
Vea el capítulo 'agregando un tipo de origen de datos'. |
Una sentencia SQL o algo así. |
(*) Vea la explicación en el capítulo siguiente.
Orígenes de datos Php:
Texto
El argumento Source tiene que ser igual a 'text'.
El bloque completo es reemplazado por el texto (éste debe ser una cadena) dado como el argumento Query.
No se procesan campos enlazados excepto '#' el cual devuelve 1, o 0 si Query es una cadena vacía.
Numerico
El argumento
Source tiene que ser igual a
'num'.
El argumento
Query puede ser un número o un arreglo.
arg Query |
Record Set devuelto |
Número: |
Query tiene que ser positivo o igual a cero.
El Record Set devuelto consiste de una columna 'val' donde los valores van desde 1 hasta Query. |
Arreglo: |
El arreglo debe contener una clave 'min' y una clave 'max' y eventualmente una clave 'step'.
El Record Set devuelto consiste de una columna 'val' que va desde el valor 'min' hasta el valor 'max'.
Ejemplo:
array('min'->101,'max'->150) ;
mostrará 50 bloques numerados
desde 101 a 150. |
Limpiar
El argumento Source debe ser igual a la palabra clave 'clear'.
Todos los bloques y las secciones son borrados. Esto es lo mismo que hacer la combinación con un arreglo vacío.
Condicional
El argumento
Source debe ser igual a la palabra clave
'cond'.
El bloque es combinado como si estuviese en un
bloque condicional onload y
onshow. El bloque no es combinado con los datos, y así que éste debe contener campos TBS no enlazados.
Cada sección de bloques necesita un parámetro
when o
un parámetro
default. Vea
bloques condicionales para más detalles.
Arreglo
El argumento
Source tiene que ser un arreglo Php o la palabra clave
'array'. Si utiliza la palabra clave
'array', entonces el argumento
Query tiene que ser un arreglo Php o una cadena que representa un arreglo contenido o anidado en una variable global.
Sintaxis de cadena: 'globvar[item1][item2]...'
'globvar' es el nombre de la variable global $globvar la cual debe ser un arreglo.
'item1' y 'item2' son los índices de un ítem o sub-ítem de $globvar.
Ejemplo:
$TBS->MergeBlock('block1','array','days[mon]');
Es posible representar nombres de variables sin ítem.
Existen dos ventajas en utilizar una cadena para representar un arreglo:
-> Los ítems
serán leídos directamente del arreglo (asignado por referencia) en lugar de leer una copia de los ítems. Esto puede mejorar la respuesta global.
-> Se pueden utilizar sentencias dinámicas.
Mostrando el índice del registro actual:
Se puede hacer uso de la columna virtual '
$' que representa el índice del registro actual. Esto puede ser especialmente útil para
sentencias dinámicas y sub-bloques.
Ejemplo:
[block1.$]
Estructura de los arreglos soportados:
Los ítems de un arreglo específico pueden ser de dos clases: valores simples con índices asociados
(caso 1), o arreglos de valores para ítems completos que son para sí mismos simples valores con índices asociados (caso 2).
Caso 1:
Ejemplo: |
['key1']=>value1
['key2']=>value2
... |
El Record Set devuelto consiste de una columna
'key' conteniendo el nombre del índice, y una columna
'val' conteniendo el valor del índice.
Caso 2:
Ejemplo: |
[0] => (['column1']=>value1-0 ; ['column2']=>value2-0
; ...)
[1] => (['column1']=>value1-1 ; ['column2']=>value2-1 ; ...)
[2] => (['column1']=>value1-2 ; ['column2']=>value2-2 ; ...)
... |
El Record Set devuelto consiste de las columnas
'column1',
'column2',...
con sus valores asociados.
Modo Por Página:
El Modo Por Página es activado cuando se coloca en el argumento PageSize un valor diferente de cero. Los datos que se mostrarán serán entonces limitados a la página especificada con PageNum. Si PageNum tiene un valor de -1, entonces se mostrará la última página.
Acotación importante:
Aunque es fácil y práctico, el Modo Por Página no es óptimo para grandes números de registros. Si la muestra de los datos es muy lenta, o si su base de datos está muy congestionada, entonces esto es un anuncio para hacer uso de las funciones nativas de su Sitema de Base de Datos (si éste posee limitadas funcionalidades para las sentencias).
Por ejemplo: con MySQL se puede hacer uso de la cláusula LIMIT.
Explicación: considerando la variedad de sintáxis SQL, TinyButStrong no es capaz de modificar una sentencias de forma que ésta devuelva un Record Set limitado. Por ejemplo,
no es capaz de agregar la cláusula LIMIT dentro de una sentencia MySQL.
Es por esto que TinyButStrong tiene que llamar la sentencia original, y entonces leer los registros uno por uno e ignorando todos aquellos que están después de la página requerida. Esto hace que el muestreo de los datos sea más lento cuando el número de página a alcanzar es alto. Cuando se alcanza la página, TinyButStrong libera la sentencia sin ir al final del Record
Set.
Termina el proceso de combinación.
Sintaxis:
$TBS->Show({int Render})
El método Show hará lo siguiente:
-
Combinar campos Var,
-
Combinar campos [onshow] ,
- Mostrar el resultado (puede ser cancelado por la propiedad Render),
- Finaliza el script (puede ser cancelado por la propiedad Render).
La propiedad
Render permite ajustar el comportamiento del método Show().
Los parámetros de
Render también permiten ajustar el comportamiento del método Show() pero solamente por una llamada.
Activa el Sistema de Cache o inicia otra operación en los archivos cache.
Sintaxis:
bool $TBS->CacheAction(string CacheId {, int ActTimeOut}{, string Dir})
Argumento |
Descripción |
CacheId |
Una cadena que identifica de forma unívoca su página en el directorio de cache. |
ActTimeOut |
Opcional. Debe ser el tiempo de time-out (expiración) expresado en segundos o una de las constantes indicadas más abajo.
El valor por defecto es 3600, lo cual significa una hora. |
Dir |
Opcional. La ruta del directorio donde será salvado el archivo de cache.
Por defecto, es el mismo directorio del script. |
En lugar del tiempo de time-out, se puede hacer uso de las siguientes constantes a fin de iniciar una acción especial del Sistema de Cache.
Constante |
Descripción |
TBS_DELETE |
Borra el archivo de cache. Si el parámetro CacheId es establecido a la palabra clave '*' entonces serán borrados todos los archivos cache del directorio. |
TBS_CANCEL |
Cancela la actualización del archivo de cache si éste ha sido indicado para ser actualizado al final de la combinación. |
TBS_CACHENOW |
Salva el resultado actual de la combinación en el archivo cache. |
TBS_CACHEONSHOW |
El resultado de la combinación será salvado en el archivo cache cuando sea llamado el método Show(). |
TBS_CACHELOAD |
Carga el archivo cache y continua el script. |
El Sistema de Cache le permite incrementar la velocidad al mostrar las páginas HTML al proceder con la combinación a intervalos regulares de tiempo en lugar de hacerlo cada vez que se llama la página. Para esto, se debe preparar una cadena única de identificación como parte del nombre del archivo para cada página que será salvada (lo llamaremos el 'archivo de cache'), y también un período de refrescamiento (lo llamaremos el tiempo de time-out). Cuando se llama al método CacheAction() el Sistema buscará por un archivo de cache existente y obtendrá su fecha de creación. Si el tiempo de creación es menor que el tiempo de time-out, entonces se cargará el contenido del archivo de cache y termina la combinación. Si el tiempo de creación es mayor que el tiempo de time-out, entonces el archivo de cache será ignorado pero será actualizado en la próxima llamada al método Show() para salvar el resultado de la combinación en este archivo de cache.
Si el archivo de cache es cargado, entonces el método devuelve
True, de otra forma devuelve
False.
Por defecto, si el archivo es cargado entonces se muestra el contenido y el script finaliza pero se puede modificar este comportamiento usando la propiedad
Render.
Devuelve el origen de un bloque TBS.
Solamente será retornada la definición de la primera sección del bloque, a menos que el argumento
Sections sea establecido a
True.
Si no se encuentra el bloque, el método devuelve
False.
Sintaxis:
string $TBS->GetBlockSource(string BlockName {, boolean Sections})
Argumento |
Descripción |
BlockName |
El nombre del bloque a buscar. |
Sections |
Opcional. El valor por defecto es False.
Si este parámetro es colocado en True el método devuelve un arreglo que contiene la definición para todas las secciones del bloque nombrado. La primera sección es retornada dentro del ítem[1] del arreglo. |
Este método le permite obtener el origen de un bloque a fin de realizar el proceso de combinación manualmente. Después de esto, si necesita reemplazar el bloque con texto, puede utilizar el método
MergeBlock() con el parámetro '
text'.
Reemplaza uno o varios campos TBS con un valor fijo o una función.
Si varios campos TBS tienen el mismo nombre dentro de la plantilla, entonces todos ellos serán ser procesados.
Sintaxis:
$TBS->MergeField(string FieldName, mixed X {, boolean FunctionMode})
Argumento |
Descripción |
FieldName |
El nombre del campo TBS. Por ejemplo 'Title'. |
X |
El valor a mostrar o el nombre del la función de usuario. |
FunctionMode |
Indica que el valor a mostrar se calcula por una función de usuario. El valor por defecto es false.
Si el argumento es establecido a true,
entonces X debe ser una cadena de texto dando el nombre de la función de usuario. Esta función debe existir y poseer la sintáxis descrita más abajo. |
Combinando con una función de usuario:
TBS llama esta función para cada campo encontrado en la plantilla.
Esta función debe tener la siguiente sintáxis:
function fct_user($Subname [, $PrmLst])
{...}
Cuando es llamada la función, su argumento
$Subname posee por valor el sufijo del nombre de los campos
(ejemplo: para un campo llamado
'ml.title',
$Subname tendrá el valor
'title'). Y el argumento opcional
$PrmLst contiene un arreglo asociativo con los parámetros del campo. La función debe devolver el valor a ser combinado.
Ejemplo:
$TBS->MergeField('ml','m_multilanguage',true);
...
function m_multilanguage($Subname) {
global $lang_id;
$rs = mysql_query("SELECT
text_$lang_id AS txt FROM t_language WHERE key='$Subname");
$rec = mysql_fetch_array($rs);
return $rec['txt']
;
}
En este ejemplo, el campo llamado [ml.title] será combinado con el valor retornado por m_multilanguage('title').
método MergeNavigationBar():
Muestra una barra de navegación basada en campos y bloques TBS.
Para más detalles sobre cómo construir una barra de navegación, por favor lea '
Mostrando una barra de navegación'.
Sintaxis: $TBS->MergeNavigationBar(string NavName, mix Options, int PageNum [, int RecCount, int PageSize])
Argumento |
Descripción |
NavName |
El nombre de la barra de navegación. |
Options |
Permite forzar algunas opciones de la barra de navegación. Tales opciones pueden ser también definidas usando bloques de parámetros en la plantilla. Pero, si también son colocados en MergeNavigationBar(), entonces serán forzados.
Este parámetro puede ser blanco ('', 0 o null), un valor numérico o un arreglo.
Si éste es un valor numérico, entonces indica el número de páginas a ser mostradas.
Si éste es un arreglo, entonces contiene los siguientes ítems:
Clave |
Valor |
'navsize' |
Número de páginas a mostrar en la barra de navegación (por defecto =
10). |
'navpos' |
Posición de la barra de navegación comparada al número de página actual. Se utilizan una de las siguientes palabras claves:
- 'step' (por defecto) para tener la barra de navegación progresando por pasos.
- 'centred' para centrar la barra en el número de página activa. |
'navdel' |
Nombre del bloque TBS a borrar cuando allí exista sólo una página o ninguna página a mostrar.
Este bloque TBS debe contener la barra de navegación. Si existen muchas páginas para mostrar entonces solamente las etiquetas de definición TBS de este bloque serán borradas. |
'pagemin' |
Número de la primera página (por defecto
= 1). |
|
PageNum |
Número de la página activa.
La primera página es número 1. Para indicar la última página, use el valor -1. |
RecCount |
Opcional. El valor por defecto es -1.
Indica el número total de registros, si se conoce. Si el número es desconocido, deberá colocar este valor en -1. Este argumento se utiliza solamente para calcular el número de la última página de la barra de navegación. |
PageSize |
Opcional. El valor por defecto es 1.
Indica el número total de registros por página. Debe ser usado junto a RecCount. Solamente se utiliza para calcular el número de la última página de la barra de navegación. |
Ejemplo:
$TBS->MergeNavigationBar('nav','',$page,$rec_nbr,$page_size);
Reemplaza los bloques y campos especiales del tipo especificado.
Sintaxis:
$TBS->MergeSpecial(string Type)
El argumento
Type tiene que ser colocado en uno de los siguientes valores:
Valor |
Descripción |
'var' |
Reemplaza todos los campos Var. |
'onload' |
Reemplaza todos los campos onload. |
'onshow' |
Reemplaza todos los campos onshow. |
Acotación:
Por defecto, el método
Show() reemplaza todos los bloques y campos especiales justo antes de mostrar el resultado del proceso de combinación. Esto es por lo que es raro utilizar el método MergeSpecial() en un programa.
Indica cómo culmina el proceso de combinación.
Este valor debe ser una combinación de las siguientes constantes.
El valor por defecto es (
TBS_OUTPUT +
TBS_EXIT).
Sintaxis:
int $TBS->Render
La propiedad Render cambia el comportamiento de los métodos
Show() y
CacheAction().
Constante |
Descripción |
TBS_NOTHING |
Indica que una de las acciones indicadas más abajo deben ser ejecutadas al final del proceso de combinación. |
TBS_OUTPUT |
Indica que el resultado del proceso de combinación debe ser mostrado. TBS utiliza el comando echo de Php. |
TBS_EXIT |
Indica que se debe salir del script justo al finalizar la combinación. |
Obtiene o establece el código HTML con el cual el proceso de combinación es aplicado.
Después de la llamada al método
LoadTemplate(), esta propiedad contiene el código HTML de la plantilla.
Esta propiedad permite leer o modificar el resultado de la combinación, en el código.
Sintaxis:
string $TBS->Source
Contiene el arreglo de las variables de la plantilla correspondientes a la plantilla actual.
Sintaxis:
array $TBS->TplVars
Se pueden definir variables en la plantilla usando uno o varios
campos automáticos onload con los parámetros
tplvars.
Todos los otros parámetros que siguen a los parámetros
tplvars son agregados a la propiedad TplVars cuando es llamado el método
LoadTemplate().
Ejemplo:
[onload;tplvars;template_version='1.12.27';template_date='2004-10-26']
This TBS tag will create two items equivalent to the
PHP code:
$TBS->TplVars['template_version']
= '1.12.27';
$TBS->TplVars['template_date']
= '2004-10-26';
Recuerde que :
- Los parámetros
tplvars funcionan solamente con los
campos automáticos onload.
- Se pueden usar parámetros
tplvars muchas veces dentro de la misma plantilla.
Agregando un tipo de origen de datos:
Se pueden agregar otro tipo de origen de datos no soportados en forma nativa por TinyButStrong.
Para esto, se deben codificar tres funciones (o métodos) con sentencias específicas,
y nombres correspondientes al tipo a agregar.
No agregue las funciones dentro del código de TBS, escríbalas en su aplicación o en un script Php externo.
Se pueden encontrar fuentes adicionales de orígenes de datos en el
sitio web de TinyButStrong.
Se puede escoger entre las funciones codificadas por el usuario y los métodos codificados de una clase.
Si escoge las funciones de usuario, éstas tienen que tener un nombre el cual usará un identificador TBS específico al tipo de origen de datos a utilizar (vea más abajo).
Si escoge los métodos de la clase, tales métodos deben ser nombrados
tbsdb_open,
tbsdb_fetch y
tbsdb_close.
Ejemplo:
class clsTest {
function tbsdb_open(...) {...}
function tbsdb_fetch(...) {...}
function tbsdb_close(...) {...}
}
Identificadores TBS (solamente para funciones de usuario):
EL argumento
$Source que se pasa al método
MergeBlock() tiene un identificador específico TBS que debe utilizar para el nombramiento de la función.
Si $Source es un objeto, entonces el identificador TBS es el nombre de la clase Php.
Si $Source es un recurso, entonces el identificador TBS es de tipo recurso (resource).
Si $Source es una cadena, entonces el identificador TBS es esa cadena.
El tipo de argumento
$Source podría no ser soportado en forma nativa por TinyButStrong, de otras formas las funciones serán ignoradas.
El identificador TBS puede ser modificado por TBS para hacer que éste encaje en el nombre de la función.
Ejemplo:
Si $Source es una conexión Sybase (resource type = 'sybase-db
link'), entonces el identificador TBS es 'sybase_db'.
Enunciado de las funciones o métodos:
Las tres funciones a agregar a su aplicación deben tener la siguiente sintáxis:
Si usted está codificando las funciones de usuario, entonces reemplaze las palabra claves
'customdb' con el identificador TBS del tipo de origen de los datos. Si usted está codificando métodos, reemplaze el nombre de las funciones con
tbsdb_open,
tbsdb_fetch y
tbsdb_close.
function tbsdb_customdb_open(&$Source,&$Query)
{...}
Esta función debe abrir la sentencia (query) requerida y devolver un identificador al Record Set.
En caso de error, la función debe retornar el valor de
False,
y puede mostrar un mensaje.
Argumento |
Descripción |
$Source |
Es el mismo argumento dado al método MergeBlock(). |
$Query |
Es el mismo argumento dado al método MergeBlock(). |
Ejemplo:
function tbsdb_sybase_db_open(&$Source,&$Query)
{
return sybase_query($Query,$Source) ;
}
function tbsdb_customdb_fetch(&$Rs{,$RecNum})
{...}
Esta función deberá retornar un arreglo asociativo correspondiente al registro actual, con los nombres de las columnas y sus valores. Esta función tiene que retornar el valor de
False cuando no existen más registros aquí.
Argumento |
Descripción |
$Rs |
El identificador del Record Set devuelto por la función tbsdb_customdb_open(). |
$RecNum |
Opcional. El número de registros esperados. El primero es el número 1. |
Ejemplo:
function tbsdb_sybase_db_fetch(&$Rs)
{
return sybase_fetch_assoc($Rs) ;
}
Si su origen de datos necesita conocer el número de registros esperados, se puede agregar el argumento
$RecNum a la declaración de su función. Pero en otros casos, este argumento es opcional porque todos los registros son llamados en orden de cualquier manera.
function tbsdb_customdb_close(&$Rs) {...}
Esta función deberá cerrar o liberar el identificador del Record Set.
No tiene que retornar valor alguno.
Argumento |
Descripción |
$Rs |
El identificador del Record Set devuelto por la función tbsdb_customdb_open(). |
Ejemplo:
function tbsdb_sybase_db_close(&$Rs)
{
return sybase_free_result($Rs) ;
}
Las plantillas se diseñan al agregar las etiquetas TBS en los lugares donde deberían aparecer los ítems de datos.
Existen dos tipo de etiquetas TBS: Campos y Bloques.
Un
Campo TBS es una etiqueta TBS la cual deberá ser reemplazada por un ítem de datos único.
Es posible especificar un formato para mostrarlo y también otros parámetros. La sintáxis de los campos TBS se describe más abajo.
Un
Bloque TBS es un área que deberá ser repetida. Se define usando uno o dos campos TBS.
Muy a menudo, esta es una fila de una tabla HTML. La sintáxis para los Bloques TBS se describe más abajo.
Un Campo TBS es una etiqueta TBS la cual deberá ser reemplazada por un ítem sencillo de datos.
Posee un nombre el cual le permite identificarlo y los parámetros se pueden especificar en orden para modificar el comportamiento al mostrar los datos.
Sintaxis:
HTML ... [
FieldName;
params]
...
HTML
Elemento |
Descripción |
FieldName |
El nombre del Campo.
Peligro: los nombres que empiezen con var. , onload y onshow son reservados. Estos son respectivamente usados por los campos Var, y campos automáticos. |
params |
Opcional. Uno o más parámetros de la lista inferior y separadas con ';'.
Algunos parámetros pueden ser establecidos a un valor usando el signo de igualdad '='.
Ejemplo: frm=0.00
Si el valor contiene espacios o puntos y coma, se pueden utilizar las comillas sencillas.
Ejemplo: frm='0
000.00'.
Es posible usar campos TBS embebidos. Esto significa que puede escribirlos como: [var.v1; if [var.v2]=1]. Pero:
- para campos Var, deberá asegurarse que v2 sea combinada antes que v1.
- para campos tipo Bloque, deberá asegurarse que la columna v2 esté antes que la columna v1. |
Parámetros de los Campos:
Parámetro |
Descripción |
htmlconv=val |
Le permite forzar o prevenir la conversión de los ítems de datos a texto Html.
El valor val puede ser una de las siguientes palabras claves:
yes: |
(valor por defecto) forza la conversión a Html incluyendo las nuevas líneas. |
nobr: |
obliga la conversión a Html pero no las nuevas líneas (por ejemplo útil para las etiquetas <pre>). |
wsp: |
preserva los espacios en blancos (útil para espacios al inicio de las líneas). |
no: |
previene la conversión a Html. Util para modificar el código Javascript o el código fuente Html. |
look: |
convierte el ítem de datos a Html solamente si no se encuentran entidades Html dentro del ítem de datos. |
esc: |
sin conversión Html y cambia por comillas dobles las comillas simples ('). |
|
. (punto) |
Si el ítem de datos esta vacío, entonces se muestra un espacio ( ). Util para celdas dentro de las tablas. |
ifempty=val |
Si el ítem de datos esta vacío, entonces éste es reemplazado por el valor especificado. |
magnet=tag |
Asigna una etiqueta magnética Html a un campo Tbs. Una etiqueta magnética se mantiene cuando el campo tiene un valor, y es borrada cuando el campo es nulo o una cadena vacía. Ejemplo:
(<a href="[var.link;magnet=a]">presione aquí </a>)
Resultará para $link='www.tbs.com': (<a
href="www.tbs.com">presione aquí </a>)
Resultará para $link='': ()
Por defecto, la etiqueta magnética Html debe ser un par de etiquetas de abrir-cerrar (como <a></a>)
en el cual la primera etiqueta es colocada antes del campo TBS. Este comportamiento puede ser cambiado usando el parámetro mtype (vea más abajo).
Acotación:
Los parámetros if then else son procesados antes que el parámetro magnet. |
mtype=val |
Para ser usada con el parámetro magnet.
Define el tipo de magnetismo.
Valor |
Comportamiento magnético cuando el campo es null o una cadena vacía |
m*m |
Este es el valor por defecto. Elimina el par de etiquetas que contienen al campo TBS. Todo lo que esta entre ellas es borrado también. El campo puede ser colocado dentro de una de las etiquetas. Ejemplo:
(<a href="[var.link;magnet=a]">presione aquí</a>)
Resultará para $link='www.tbs.com': (<a
href="www.tbs.com">presione aquí </a>)
Resultará para $link='': ()
|
m+m |
Elimina el par de etiquetas que envuelven el campo TBS, pero manteniendo todo lo demás que este entre las etiquetas.
Ejemplo:
(<a href="mailto:[blk.email;magnet=a;mtype=m+m]">[blk.name]</a>)
Resultará para $email='me@tbs.com': (<a
href="mailto:me@tbs.com">MyName</a>)
Resultará para $email='': (MyName)
|
m* |
Borra la etiqueta simple que esta después del campo, y todo lo demás entre la etiqueta y el campo.
Ejemplo 1: <img
href="[var.link;magnet=img;mtype=m*]">
Ejemplo 2: <br> [var.address;magnet=br]
|
*m |
Borra la etiqueta simple que esta antes del campo, y todo lo demás entre la etiqueta y el campo.
Ejemplo: [var.address;magnet=br;mtype=*m]<br> |
|
selected |
Este parámetro permite seleccionar un ítem de una Lista (List), botones tipo Radio o Botones de Selección (Checkboxes) colocados dentro de una forma Html. Es necesario asegurarse que los ítems son creados (combinados) antes de la combinación con la plantilla.
Listas Html:
Utilice el parámetro selected sin valor alguno de establecimiento para éste. El campo TBS debe ser colocado dentro de las opciones de la lista de valores. Cuando el campo TBS es combinado, éste es borrado, pero el ítem que tenía el mismo valor del campo es entonces seleccionado. Si el valor no se encuentra, entonces se agrega un nuevo ítem.
Botones de Radio y de Seleccion (checkboxes):
Utilice el parámetro selected para indicar el valor al cual debería ser el nombre del botón de Radio o de Selección a procesar. El campo TBS debe ser colocado dentro de la forma. Cuando el campo TBS es combinado, éste es borrado, pero el ítem que posee el mismo valor del campo será seleccionado.
Multi-selección:
Para Listas, botones Radio o Checkboxes, se puede hacer una multi-selección al indicar un arreglo Php como el valor del campo TBS.
Límites:
Por defecto los límites para la búsqueda de los ítems a seleccionar son las etiquetas Html <select> para las Listas , y <form> para los botones Radio y Checkboxes. Es posible modificar estos usando el parámetro selbounds (vea más abajo). |
selbounds=tag |
Para ser usado con el parámetro selected.
Este permite cambiar la zona de búsqueda para los ítems a seleccionar al indicar el tipo de etiqueta Html. Por defecto, este valor es select para una Lista, y form para botones de Radio y Checkboxes.
Ejemplo: [town_id;selected=r_test;selbounds=div]
En este ejemplo, los ítems a seleccionar para la búsqueda estarán entre las etiquetas <div> y </div> que contiene al campo TBS.
|
comm |
Este parámetro le permite ampliar los límites del campo TBS hasta los límites de la etiqueta Html comentario que le envuelve.
<!-- [myfield;comm] this
is an example--> es estrictamente idéntico a [myfield]
Esto es particularment útil para el diseño de plantillas cuando se encuentra diseñando con un Editor HTML Visual (como lo son Dreamweaver o FrontPage). |
noerr |
Oculta algunos de los mensaje de Error TBS. Cuando un mensaje puede ser cancelado, ésto se menciona en el mensaje mismo de error. |
file=archivo |
Reemplaza el campo con el contenido del archivo. Archivo puede ser una cadena o una expresión construida
por los campos Var que devuelven la ruta al archivo.
Cómo usar este parámetro se detalla en el capítulo incluir una sub-plantilla. |
script=archivo |
Ejecuta el script Php justo después de reemplazar el localizador. Desde este script, puede leer y escribir el valor del campo usando la variable global $tbs_CurrVal.
Archivo puede ser una cadena o una expresión construida por los campos Var que devuelven la ruta al archivo.
Acotación:
- El script será ejecutado como si éste fuese codificado dentro de la función. De todas manera, las variables globales no serán reconocidas en el script excepto si son declaradas usando la instrucción Php global o si utiliza el arreglo $GLOBALS.
- La ejecución del script es cancelada si el campo TBS tiene el parámetro if con una condición falsa.
Para más información, por favor lea el capítulo 'incluir el resultado de otro script PHP'. |
getob |
Para ser usada con el parámetro script.
Indica que el texto mostrado usando el comando echo() en el script Php reemplaza el valor del campo TBS. |
once |
Para ser usada con el parámetro script.
Cancela la ejecución del script si éste ha sido previamente llamado. |
if expr1=expr2 |
Muestra el ítem de datos sólo si la condición es verificada, de otra forma no muestra nada a menos que se utilicen los parámetros then o else.
Los operadores soportados son:
= o == |
igual |
!= |
no igual |
+- |
mayor que |
+=- |
mayor que o igual a |
-+ |
menor que |
-=+ |
menor que o igual a |
Tanto expr1 como expr2 deben ser una cadena o expresiones numéricas. Se puede utilizar la palabra clave [val] dentro de la expresión para representar el ítem de datos. La expresión puede contener campos TBS, pero deberá asegurarse que estos sean combinados antes que el campo que lo contiene.
Vea parámetros then y else para algunos ejemplos. |
then val1 |
Si el parámetro if es definido y su condición es verificada, entonces el ítem de datos es reemplazado con val1.
Ejemplo:
[var.image;if [val]='';then 'image0.gif'] |
else val2 |
Si el parámetro if es definido y su condición no es verificada, entonces el ítem de datos es reemplazado con val2.
Ejemplo:
[var.error_id;if [val]=0;then 'no
error';else 'error
found'] |
onformat=fct_name |
Indica el nombre de una función Php de usuario que será ejecutada antes de la combinación del campo. La función fct_name debe tener la siguiente sintáxis:
function fct_name($FieldName,&$CurrVal)
{ ... }
Parámetro |
Descripción |
$FieldName |
Retorna el nombre del campo que está llamando la función
(sólo lectura). |
$CurrVal |
Retorna el valor actual (lectura/escritura ;
no olvide el caracter & en la declaración). |
|
protect=val |
Le permite proteger o desproteger el ítem de datos a ser combinado al reemplazar los caracteres '['
con sus correspondientes códigos Html '['.
El valor val puede ser una de las siguientes palabras claves:
yes: (valor por defecto) el ítem de datos esta protegido.
no: el ítem de datos no esta protegido.
Por defecto, toda la data combinada con la plantilla está protegida excepto si este es un archivo para inclusión. Es extremadamente recomendable proteger los datos cuando estos vienen de lugares públicos como por ejemplo un foro. |
max=val |
Indica el número máximo de caracteres a mostrar. Más allá de este límite, el ítem de datos es truncado y se le agregan las elipsis (...) al final. |
frm=format |
Especifica el formato para mostrar un ítem de datos de tipo fecha/hora o numérico. Para un ítem numérico, es posible utilizar un formato condicional el cual cambia dependiendo del signo del valor.
Formatos Fecha-Hora:
Es muy similar al formato de VisualBasic. Son reconocidas las siguientes palabras claves:
d, dd, ddd, dddd: |
número del día, número del día en dos digitos, nombre corto del día, nombre completo del día. Use el parámetro locale para mostar los nombres de acuerdo a la localidad. |
xx |
muestra st, nd, rd o th dependiendo del número del día. |
m, mm, mmm, mmmm: |
número del mes, número del mes en dos digitos, nombre corto del mes, nombre completo del mes. Utilice el parámetro locale para mostrar los nombres de acuerdo a la localidad. |
yy, yyyy: |
año en dos digitos, año completo. |
hh, nn, ss: |
hora, minutos, segundo en dos digitos.
|
Los demás caracteres son mantenidos intactos.
Es posible proteger las cadenas internas al colocar estas entre comillas sencillas o simples.
Ejemplos:
[fld;frm=mm/dd/yyyy] mostrará
12/21/2002
[fld;frm='yyyy-mm-dd
hh:nn:ss'] mostrará 2002-12-21 15:45:03
Formato numérico:
Para definir la parte decimal, se utiliza una expresión similar a '0x0...'
donde 'x' es el separador decimal, y '0...' es una continuación de ceros correspondientes al número de decimales.
Si no existe decimal, use el el formato '0.'
(con un punto).
Para definir el separador de miles, use un expresión como '0z000x...'
donde 'z' es el separador de miles. Si no existe decimal, use el formato '0z000.'
(con un punto).
Si el formato contiene el caracter '%',
entonces el valor a mostrar será multiplicado por 100. El caracter '%'
también será mostrado.
El formato numérico puede contener otras cadenas. Pero solamente la expresión con uno o más ceros colocados a la derecha será tomada como el formato, los demás caracteres se mantendrán.
Ejemplos:
Valor |
Campo |
Se mostrará |
2456.1426 |
[fld;frm='0.000'] |
2456.143 |
|
[fld;frm='$
0,000.00'] |
$ 2,456.14 |
|
[fld;frm='$
0,000.'] |
2,456 |
0.2537 |
[fld;frm='0.00
%'] |
25.37% |
|
[fld;frm='coef
0.00'] |
coef 0.25 |
Formatos condicionales:
Existe la posibilidad de definir hasta 4 formatos condicionales cuando el valor es positivo, negativo, cero o null (o una cadena vacía) respectivamente. Los formatos condicionales deben ser separados por el caracter '|'. Cada formato condicional es opcional.
Ejemplos:
Valor |
Campo |
Se mostrará |
2456.1426 |
[chp;frm='+0.00|-(0.00)|*|empty'] |
+2456.14 |
-156.333 |
[chp;frm='+0.00|-(0.00)|*|empty'] |
-(156.33) |
0 |
[chp;frm='+0.00|-(0.00)|*|empty'] |
* |
null |
[chp;frm='+0.00|-(0.00)|*|empty'] |
empty |
-8.75 |
[chp;frm='+0.00|-(0.00)'] |
-(8.75) |
|
locale |
Para ser usado con el parámetro frm.
Indica que el formato especificado con frm debe mostrar los nombres del día y mes de acuerdo a la localidad.
La información de la localidad se puede establecer usando la función Php setlocale(). |
tplvars |
Le permite definir variables en la plantilla que se pueden obtener desde el script Php usando la propiedad TplVars.
Funciona sólo con los campos automáticos onload . |
Un campo Var es un campo TBS que muestra una variable Php.
El nombre de ésta debe estar compuesto por la palabra clave '
var.'
seguida del nombre de la variable Php.
Los parámetros para los campos estándares TBS están disponibles para los campos Var.
Por ejemplo [
var.php_version] será reemplazada por "
4.2.3".
Las variables predefinidas y las de usuario pueden ser combinadas pero deben ser variables globales. Las variables
Resource son ignoradas.
Es posible combinar una variable tipo
Arreglo al indicar el ítem con un punto.
Por ejemplo: [
var.myarray.item]
Es posible combinar una variable tipo
Objeto al indicar una propiedad (o un método el cual no necesite ningún argumento) con un punto.
Por ejemplo: [
var.myobject.property]
¿ Dondé están los campos Var combinados ?
Los campos Var son combinados en el método
Show(),
lo cual significa que justo antes de mostrar el resultado de la combinación. Pero se puede forzar la combinación en cualquier momento con el método
MergeSpecial().
Seguridad: ¿ cómo limitar los campos Var usados en las plantillas ?
Se pueden limitar los campos Var definiendo un Prefijo de Variable Permitida cuando se crea el objeto TinyButStrong.
Ejemplo :
$TBS = new clsTinyButStrong('','x1_');
En este ejemplo, solamente son permitidas en la plantilla las variables globales que tengan el prefijo 'x1_'. Otros campos Var producirán un mensaje de error explícito cuando sean combinados.
[var.x1_title]
será combinada si existe la variable global $x1_title.
[var.x2_title] producirá un mensaje de error explícito.
Nota: el primer parámetro '' de clsTinyButStrong()
en el ejemplo superior se utiliza para definir los delimitadores de etiquetas TBS. Pero esto no se describe en este manual.
Un campo Var Especial es un campo TBS que muestra datos proporcionados por el Sistema TinyButStrong.
El nombre de un campo Var Especial debe comenzar con '
var..',
seguido por una de las palabras claves indicadas en la parte inferior.
Los parámetros para los campos TBS están disponibles para los campos Var Especiales.
Ejemplo:
Fecha del día : [
var..now;frm='mm-dd-yyyy']
Nombre |
Descripción |
var..now |
Fecha y hora del servidor. |
var..version |
La versión de TinyButStrong. |
var..script_name |
El nombre del archivo Php que está siendo ejecutado. |
var..template_name |
El nombre del último archivo de plantilla cargado.
Este es el nombre indicado al método LoadTemplate(). |
var..template_date |
La fecha de creación del último archivo de plantilla cargado. |
var..template_path |
El directorio del último archivo de plantilla cargado.
Este es el directorio indicado al método LoadTemplate(). |
var..tplvars.* |
El valor de un conjunto de ítems en la propiedad TplVars.
('*' debe ser el índice de un ítem existente en el arreglo) |
¿ Cuándo son combinados los campos Var Especiales ?
Los campos Var Especiales son combinados junto con los campos Var normales. Esto es en el método
Show(),
lo cual significa que justo antes de mostrar el resultado de la combinación. Es posible forzar la combinación en cualquier instante con el método
MergeSpecial().
Un bloque TBS le permite mostrar datos desde un conjunto de registros.
La combinación entre el bloque y los datos se realiza usando el método
MergeBlock().
Durante la combinación, el bloque TBS es repetido tantas veces como tanto registros existan; y los campos asociados TBS son reemplazados por los valores de las columnas.
Un campo TBS asociado al
Block1 y mostrando el valor de la columna
ColumnA debe ser nombrado
Block1.
ColumnA
Ejemplo:
[
Block1.
ColumnA;frm='mm-dd-yyyy']
Dos bloques con el mismo nombre serán tratados como dos secciones del mismo bloque
(vea
secciones de bloques).
Sintaxis de Bloques:
Existen tres posibles sintaxis para definir un bloque TBS:
Sintaxis Explícita:
Se utilizan dos etiquetas TBS. Una para indicar el comienzo del bloque y otra para indicar el final del bloque.
Ejemplo:
HTML...[BlockName;block=begin;params]...HTML...[BlockName;block=end]...HTML
Las etiquetas TBS para la definición del bloque serán borradas durante el proceso de combinación.
Sintaxis Relativa:
El bloque es definido por un par de etiquetas Html de abrir-cerrar. Solamente se requiere una etiqueta TBS.
Ejemplo:
HTML...<tag_name...>...[BlockName;block=tag_name;params]...</tag_name...>...HTML
La etiqueta TBS para la definición del bloque debe ser colocada entre el par de etiquetas Html.
Esta etiqueta TBS será borrada durante la combinación.
Sintaxis Simplificada:
Se utiliza un campo TBS asociado para definir el bloque de una forma relativa (vea la sintáxis de arriba).
Ejemplo:
HTML...<tag_name...>...[BlockName.ColumnName;block=tag_name;params]...</tag_name...>...HTML
La etiqueta TBS para la definición del bloque debe ser colocada entre el par de etiquetas Html.
Pero no es necesario el primer campo TBS en el bloque.
Elemento |
Descripción |
BlockName |
El nombre del bloque TBS. |
block=begin |
Indica el inicio del bloque. |
block=end |
Indica el final del bloque. |
block= tag_name |
Indica un bloque el cual se encuentra entre la etiqueta de apertura Html <tag_name...> y la etiqueta Html de cierre </tag_name...> que están envolviendo la etiqueta TBS. Tanto la etiqueta Html de apertura como la de cierre son parte del bloque.
- row puede ser usado como un alias a fin de indicar la fila de una tabla.
block=row es lo mismo que block=tr.
- opt puede ser usado como un alias a fin de indicar el ítem de una lista HTML.
block=opt es lo mismo que block=option. |
params |
Opcional. Uno o muchos parámetros de la lista de más abajo. Separados con ';'. |
¿ Qué sintaxis utilizar ?
La sintaxis 'absoluta' se usa raramente con Editores Visuales debido a que las etiquetas TBS tienen que ser colocadas entre dos etiquetas Html. Por otra parte, es conveniente para editores basados en texto.
La sintaxis 'relativa' le permite indicar un bloque utilizando solamente una etiqueta TBS. Es más, no es necesario ocultar la etiqueta TBS debido a que será borrada cuando se muestre. Esta sintáxis es más o menos práctica.
La sintaxis 'simplificada' es realmente simple. Le permite definir un bloque TBS y un campo TBS con una sola etiqueta TBS. Esta sintáxis es la más común y la más práctica.
Tip:
Se puede usar la sintáxis 'relativa' o 'absoluta' con etiquetas personalizadas usando el estándar Html.
Ejemplo:
<custom_tag>Hello [
blk1.
column1;
block=
custom_tag],
how are you?
</custom_tag>
Parámetros de los Bloques:
Parámetro |
Descripción |
extend=n |
Puede ser usado sólo con la sintáxis relativa o simplificada.
Extiende la definición del bloque hasta los n siguientes pares de etiquetas siguientes.
Esto le permite, por ejemplo, definir un bloque de dos filas en una tabla.
El valor de n debe ser un entero diferente de 0.
Si n es negativo, entonces el bloque es extendido hasta los pares de etiquetas previos. |
encaps=num |
Indica el nivel de encapsulación de las etiquetas TBS en comparación a las etiquetas Html especificadas con el parámetro block.
El valor por defecto es 1.
Ejemplo:
[block1.field1;block=tr;encaps=2] |
[block1.field2] |
|
En el ejemplo de arriba, la fila azul será duplicada durante la combinación porque aquí existe 'encaps=2'.
Si se establece 'encaps=1' o no se indica, entonces la fila duplicada durante la combinación será la rosada. |
comm |
Este parámetro permite ampliar los límites de la etiqueta TBS hasta los límites de la etiqueta Html de comentario que le está envolviendo.
Ejemplo:
<!-- [block1;block=tr;comm] this
is an example--> es idéntico a [block1;block=tr]
Este parámetro es particularmente útil para diseñar la plantilla cuando se utilizan Editores HTML Visuales (como lo son Dreamweaver o FrontPage). |
nodata |
Indica una sección que es mostrada solamente si no existe datos a combinar.
Ejemplo:
[block1.field1;block=tr] |
[block1.field2] |
[block1;block=tr;nodata]There
is no data. |
Para más información acerca de las secciones, vea el capítulo 'Secciones de bloques'. |
headergrp=colname |
Indica una sección de encabezado que se muestra cada vez que cambia el valor de la columna colname.
colname debe ser un nombre de columna válido devuelto por la fuente de datos.
Se pueden definir muchas secciones headergrp con diferentes columnas. El orden de colocación de las secciones headergrp dentro del bloque puede modificar el resultado
Para más información acerca de las secciones, vea el capítulo 'Secciones de bloques'. |
footergrp=colnom |
Indica una sección de pie de página que se muestra cada vez que cambia el valor de la columna colname. Vea headergrp. |
splittergrp=colnom |
Indica una sección de intermedio que se muestra cada vez que cambia el valor de la columna colname. Vea headergrp. |
serial |
Indica que el bloque es un bloque principal el cual contiene bloques secundarios seriales.
Para más información, vea el capítulo 'salida serial (en columnas)'. |
p1=val1 |
Indica el uso de una sentencia dinámica. Todas las ocurrencias encontradas de la cadena '%p1%' dentro de la sentencia dada al método MergeBlock() serán reemplazadas por el valor val1.
Para más información, vea el capítulo 'sentencias dinámicas / sub-bloques'. |
onsection=fct_name |
Indica el nombre de una función Php que será ejecutada durante la combinación del bloque. Esta función es llamada cada vez que se muestra un registro. La función fct_name debe tener la siguiente sintáxis:
function fct_name($BlockName,&$CurrRec,&$DetailSrc,$RecNum)
{ ... }
Parámetro |
Descripción |
$BlockName |
Devuelve el nombre del bloque que llama a la función
(sólo lectura). |
$CurrRec |
Devuelve un arreglo Php asociativo conteniendo el registro actual (lectura/escritura ; no olvide el & en el encabezado de la función).
Si establece esta variable a False,
culmina la combinación como si estuviese al final del conjunto de registros. |
$DetailSrc |
Devuelve la fuente de la sección actual (lectura/escritura ;
no olvide el & en el encabezado de la función).
Si establece esta variable a '', esto cancela el mostrar este registro. |
$RecNum |
Devuelve el número del registro actual (sólo lectura,
el primer registro es el número 1). |
|
when expr1=expr2 |
Se utiliza sólo con bloques condicionales. Muestra la seción del bloque solamente si la condición es verificada:
= or == |
igual |
!= |
no igual |
+- |
mayor que |
+=- |
mayor que o igual que |
-+ |
menor que |
-=+ |
menor que o igual que |
Tanto expr1 como expr2 deben ser expresiones de cadena o numéricas. La expresión puede contener campos Var. |
default |
Se utiliza sólo con bloques condicionales. Indica una sección del bloque que debe ser mostrada solamente si no ha sido mostrada sección alguna del mismo bloque (nombre). |
several |
Se utiliza sólo con bloques condicionales. Indica que muchas secciones del bloque pueden ser mostradas si varias condiciones son verdaderas. Por defecto, las secciones son excluyentes. |
Distintos bloques teniendo el mismo nombre serán consideradas como secciones del mismo bloque.
Las secciones pueden ser usadas para:
- alternar los datos a mostrar (secciones Normal),
- mostrar cualquier otra cosa si no existen datos (sección NoData),
- muestra un encabezado cada vez que el valor de una columna cambia (sección HeaderGrp).
Secciones Normal:
Cuando se definen muchas secciones Normal, estas serán usadas alternativamente para cada registro.
Ejemplo:
[b1.caption;block=tr] |
[b1.caption;block=tr] |
En este ejemplo, el bloque llamado 'b1' contiene dos secciones normales. Los registros serán mostrados alternativamente con un fondo verde y otro azul.
Secciones NoData:
Muestra la sección si los orígenes de datos no contienen registros.
La sección NoData es definida al agregar el parámetro
nodata.
Ejemplo:
[b1.caption;block=tr] |
There is nothing[b1;block=tr;nodata] |
Secciones HeaderGrp:
Muestra una sección de encabezado cada vez que el valor de una columna en el Record Set cambia.
Se define un Encabezado al agregar el parámetro
headergrp=
nombre_de_columna.
Ejemplo:
Year [b1.year;block=tr;headergrp=year] |
[b1.caption] |
[b1.amount;block=tr] |
Salida Serial (en columnas):
La salida o muestra en pantalla de los datos en forma serial, le permite mostrar diversos registros dentro de un bloque. Para esto, se debe hacer uso de un bloque principal y de varios secundarios.
Ejemplo:
En este ejemplo, los bloques principales son las líneas azules de la tabla y los secundarios son los bloques de las celdas rosadas.
Sintaxis:
El bloque principal y sus bloques secundarios son combinados haciendo uso de una única llamada al método
MergeBlock(). El bloque principal debe ser definido usando el parámetro
serial.
El bloque secundario debe estar anidado dentro del bloque principal. Los nombres de los bloques secundarios deben ser el nombre del bloque principal seguido por "_" y un número indicando el orden en el cual se mostrarán.
Ejemplo:
[bx;block=tr;serial][bx_1.txt;block=td] |
[bx_2.txt;block=td] |
[bx_3.txt;block=td] |
[bx_4.txt;block=td] |
|
El código correspondiente en Php es:
$TBS->MergeBlock('bx',$cnx_id,'SELECT
txt FROM t_info ORDER BY txt')
Bloques secundarios vacíos:
Se puede especificar un bloque secundario que será usado para reemplazar bloques secundarios sin usar (sin registros). Este bloque secundario "Vacío" debe tener el índice 0. Puede ser colocado dentro del bloque principal con el bloque secundario normal, o sólo dentro de otro bloque
serial. Este bloque secundario
"vacío" es opcional.
Ejemplo:
[bx;block=tr;serial][bx_1.txt;block=td] |
[bx_2.txt;block=td] |
[bx_3.txt;block=td] |
[bx_4.txt;block=td] |
|
[bx;block=tr;serial][bx_0;block=td] No
records found. |
|
|
|
|
Acotación:
La salida serial también funciona con
secciones de bloques y
sentencias dinámicas.
Sentencias dinámicas / sub-bloques:
Principios de las sentencias dinámicas:
Es posible usar el método
MergeBlock() con un sentencia dinámica.
En la plantilla, se debe definir un bloque agregando los parámetros
p1,
p2,
p3,...
con sus valores.
La sentencia pasada al método
MergeBlock() debe contener marcas tales como
%p1%,
%p2%,
%p3%,
... a fin de recibir los valores de los parámetros
p1,
p2,
p3,...
.
Cada sección del bloque a ser combinada que contenga un parámetro
p1 será calculada como un bloque separado para el cual la sentencia dinámica es re-ejecutada. La sección del bloque que no tiene el parámetro
p1 es combinada con la sección anterior con el parámetro
p1.
Ejemplo:
[blk.town;block=tr;p1='france'] |
[blk.country] |
[blk.town;block=tr;p1='us'] |
[blk.country] |
El código correspondiente en Php es:
$TBS->MergeBlock('blk',$cnx_id,"SELECT
town,country FROM t_geo WHERE (country='%p1%')")
El resultado de la combinación es:
Paris |
france |
Toulouse |
france |
Uso con sub-bloques:
Las sentencias dinámicas le permiten construir fácilmente un sistema de bloque-principal con sub-bloques. Aquí se muestra cómo lo puede hacer:
- Crear un bloque principal, y luego un sub-bloque dentro del bloque principal.
- Enlazar ambos al agregarle al sub-bloque el parámetro
p1 cuyo valor es un campo del bloque principal.
- Desde el lado de Php, se combina el bloque principal primero y después el sub-bloque.
Ejemplo:
Country: [main.country;block=table]
[sub.town;block=tr;p1=[main.cntr_id]] |
|
El código correspondiente en Php es:
$TBS->MergeBlock('main',$cnx_id,'SELECT
country,cntr_id FROM t_country')
$TBS->MergeBlock('sub',$cnx_id,'SELECT
town FROM t_town WHERE (cntr_id=%p1%)')
El resultado de la combinación es:
Country: France
|
Country: Germany
|
Country: Spain
|
Acotación:
- El parámetro
htmlconv=
esc le permite pasar valores de cadenas protegidos a la sentencia.
- Las sentencias dinámicas también funcionan con
secciones de bloques y
salidas seriales .
Mostrando una barra de navegación:
TinyButStrong es capaz de mostrar una barra de navegación usando el método
MergeNavigationBar().
Es quizas similar a combinar un bloque usando
MergeBlock() excepto que aquí existen páginas numeradas en lugar de datos, y se pueden usar campos específicos para mostrar información adicional, y opciones para personalizar la barra de navegación.
Bloques y campos:
Usa un bloque TBS normal para mostrar el número de páginas.
Este bloque será combinado con una fuente de datos virtual teniendo tanto registros como páginas a mostrar, y con las siguientes columnas:
Nombre |
Descripción |
page |
Devuelve el número de una página común, alcanzables desde la barra de navegación. |
curr |
Devuelve el número de la página activa. |
first |
Devuelve el número de la primera página (1 por defecto). |
prev |
Devuelve el número de la página anterior. |
next |
Devuelve el número de la página siguiente. |
last |
Devuelve el número de la última página si se conoce, de otras formas devuelve
-1. |
page es el único valor que cambia su campo enlazado debe ser colocado dentro del bloque. Otras columnas tienen siempre el mismo valor y pueden ser colocadas dentro del bloque así como fuera de él.
Tales campos soportan el parámetro
endpoint.
Este reemplazará el valor del campo con una cadena vacía ('') cuando la página activa sea igual a la primera página o la última página. Esto permite manejar las excepciones de las salidas como por ejemplo con el parámetro
magnet.
Ejemplo:
<a href="script.php?page=[nav.first;endpoint;magnet=a;mtype=m+m]">Beginning</a>
En este ejemplo, el enlace será borrado cuando la página activa sea la primera o la última.
El bloque puede contener una sección especial para mostrar la página activa de forma diferente.
Esta sección se define usando el parámetro
currpage en la definición del bloque.
Ejemplo:
Plantilla:
|< |
< |
[nav.page;block=td] |
[nav.page;block=td;currpage] |
> |
>| |
Código Php usado:
$TBS->MergeNavigationBar('nav',10,17) ;
Resultado de la combinación:
|< |
< |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
> |
>| |
Acotación: este ejemplo no muestra los enlaces.
Opciones
La definición del bloque puede contener parámetros que son específicos a la barra de navegación.
Tales opciones también pueden ser definidas como un parámetro del método
MergeNavigationBar().
Parámetro |
Descripción |
navsize=num |
Número de páginas mostradas en la barra de navegación. (por defecto = 10). |
navpos=keyword |
Posición de la barra de navegación comparada al número de página activo. Se utilizan una de las siguientes palabras claves:
- 'step' (por defecto) para tener la barra progresando por pasos.
- 'centred' para centrar la barra en el número de página activo. |
navdel=blockname |
Nombre del bloque TBS a borrar cuando exista sólo una página o ninguna página para mostrar.
Este bloque TBS debe contener la barra de navegación. Si existen múltiples páginas a mostrar entonces sólo serán borradas las etiquetas de definición de este bloque TBS. |
pagemin=num |
Número de la primera página (por defecto = 1). |
Campos y bloques automáticos:
Los nombres
onload y
onshow son reservados para campos y bloques TBS que son combinados automáticamente cuando se carga la plantilla con el método
LoadTemplate() y cuando los resultados se muestran usando el método
Show().
Los campos automáticos son combinados con un valor vacío. Ellos aceptan todos los parámetros de los campos TBS.
Son muy útiles para
sub-plantillas y
plantillas variables.
Ejemplo:
[onload;file=header.htm]
Los bloques automáticos son combinados como
bloques condicionales. Solamente se aceptan los parámetros de los bloques condicionales.
Ejemplos:
[onload;block=tr;when [var.status]==1]
Status 1 |
[onload;block=tr;when [var.status]==2]
Status 2 |
Vea
bloques condicionales para más detalles.
Incluir una sub-plantilla:
Si un campo TBS tiene el parámetro
file,
entonces éste campo será reemplazado por el contenido del archivo indicado durante el proceso de combinado de éste archivo. El valor del parámetro
file puede ser una cadena de texto o una expresión construida con campos Var ([var.*]) y palabras claves [val] (vea la definición de los campos TBS).
TinyButStrong obtiene el contenido del archivo tal cual como está.
Si éste es un script Php, entonces dicho script no será ejecutado. Para insertar el resultado de un script Php, vea
'
Incluir el resultado de otro script PHP'.
Si el archivo a incluir es un archivo Html, entonces TinyButStrong mantendrá solamente el cuerpo (delimitado por el par de etiquetas <body> y </body>.
El parámetro
htmlconv (opcional) permite precisar si el contenido de un archivo ha de ser convertido a Html o no. Por defecto, no es convertido a Html.
Ejemplos:
[var.page_header;file=[val]]
[var.page_footer;file=foot.htm;htmlconv=yes]
Cómo precisar cuando es incluida la sub-plantilla:
Use los
campos automáticos onload y
onshow para precisar cuando el archivo es combinado.
- Un campo llamado
onload es automáticamente combinado cuando se llama al método
LoadTemplate(), justo depués que la plantilla es cargada.
- Un campo llamado
onshow es automaticamente combinado cuando es llamado el método
Show().
Ejemplos:
[onload;file=[var.article]]
[onshow;file=foot.htm]
Incluir el resultado de otro script PHP:
Si un campo TBS tiene le parámetro
script,
entonces dicho script será ejecutado cuando sea combinado el campo. El valor del parámetro
script puede ser un valor de cadena o una expresión construida con campos Var ([var.*]) y palabras claves [val] (vea la definición de los campos TBS).
Ejemplos:
[var.special_process;script=[val];getob]
[onshow;script=end.php;once]
Alcance de la variable:
El script será ejecutado como si hubiese sido escrito dentro de la función. De todas formas,
las variables globales no serán reconocidas en el script excepto si son declaradas usando la instrucción Php
global o si se usa
$GLOBALS.
Redireccionando la declaración de la salida:
Si su script Php contiene instrucciones que envían información a la pantalla, (tales como
echo),
entonces ese texto será mostrado como normalmente se hace; esto es instantáneamente sin esperar por el resultado de la combinación de la plantilla. Para evitar esto comportamiento, se puede utilizar el parámetro
getob el cual habilita el redireccionar este texto para reemplazar el campo TBS.
Con
getob: el texto pasado a las instrucciones
echo será mostrado en el lugar de los campos TBS.
Sin
getob: el texto pasado a las instrucciones
echo será mostrado normalmente como siempre, esto es instantáneamente después del resultado de la combinación.
Previniendo que el script sea ejecutado muchas veces:
Si el nombre del script aparece varias veces dentro de los campos TBS, se puede especificar el parámetro
once a fin de limitar la ejecución del script a una sola vez.
Como saber cuando el script es ejecutado:
Se pueden usar los
campos automáticos onload y
onshow para determinar cuando el script es ejecutado. Para más detalles acerca de estos campos especiales, vea '
Incluir una sub-plantilla'.
Revisión de la salida condicional:
TinyButStrong proporciona distintas herramientas para la muestra condicional de campos y bloques.
Campos condicionales
Para cualquer campo TBS se puede utilizar los parámetros para la muestra en pantalla condicional , repetido más abajo.
Parámetro |
Descripción |
. (punto) |
Muestra un espacio forzado (en Html es ) si el valor del campo es vacío. |
ifempty=value2 |
Muestra value2 si es valor del campo es vacío. |
magnet=tag |
Borra una etiqueta o un par de etiquetas si el valor del campo es vacío. |
if condition
then value1
else value2 |
Muestra value1 o value2 dependiendo de si la condición es verificada o no. |
frm=format1|format2|format3|format4 |
Cambia el formato numérico o formato de fecha/hora dependiendo de si el valor es positivo, negativo, cero o vacío. |
Ejemplo:
[var.error_id;if [val]=0;then 'no
error';else 'error
found']
Bloques condicionales
Los bloques Condicionales son definidos como los bloques normales, excepto que:
- la definición del bloque debe contener un parámetro
when o un parámetro
default,
- no pueden ser combinados con datos,
- no pueden tener campos enlazados.
Se puede combinar un bloque condicional usando el método
MergeBlock() con la palabra clave
'cond',
o más usualmente usando bloques automáticos
onload y
onshow (vea más detalles abajo).
Cuando se combina un bloque condicional, cada condición
when de esta sección es evaluada hasta que una es verificada. Tan pronto como una condición
when es verificada, se mantiene la sección y las otras secciones son borradas. Si ninguna condición
when es verificada, entonces la sección
default será mostrada si existe.
Por defecto las secciones de un bloque condicional son exclusivas, solamente será mostrada una sección del bloque.
Nota: la condición definida por el parámetro
when puede usar campos Var.
Ejemplo:
[block1;block=tr;when [var.light]=1] Light
is set to 1. |
[block1;block=tr;when [var.light]=0] Light
is set to 0. |
[block1;block=tr;default] Light
is not 1 or 0. |
Este bloque condicional puede ser combinado usando el siguiente código Php:
$TBS->MergeBlock('block1','cond');
Usando bloques automáticos:
Se pueden crear bloques condicionales llamados
onload y
onshow (o
onload_ y
onshow_
con un sufijo). Tales bloques serán automáticamente combinados cuando se carga la plantilla (onload) o cuando se muestra el resultado (onshow).
Usando el sufijo para los nombres de los bloques le permite tener múltiples bloques.
Ejemplo:
[onload_ligth;block=tr;when [var.light]=1] Light is set to 1. |
[onload_ligth;block=tr;when [var.light]=0] Light
is set to 0. |
[onload_ligth;block=tr;default] Light
is not 1 or 0. |
Este bloque condicional será automáticamente combinado cuando se carge la plantilla.
Secciones No-exclusivas:
Si desea un bloque con secciones no-exclusivas, se puede usar el parámetro
several en la primera sección. Con este parámetro, todas las condiciones son evaluadas y cada condición verdadera hace que esta selección sea mostrada.
Ejemplo:
[onload_err;block=tr;when [var.email]='';several] Your
email is empty. |
[onload_err;block=tr;when [var.name]=0] Your
name is empty. |
[onload_err;block=tr;default] All
is ok. |
Parámetros de los campos TBS:
Parámetro |
Resumen |
htmlconv |
Modo de conversión Html para el valor del campo. |
. (punto) |
Si el valor es vacío, entonces muestra un espacio forzado ( ). |
ifempty |
Si el valor es vacío, entonces muestra otro valor. |
magnet |
Si el valor es vacío, entonces borra las etiquetas que lo contienen. |
mtype |
Se usa con magnet. |
if |
Si se verifica la condición, entonces cambia el valor. |
then |
Se usa con if. |
else |
Se usa con if. |
onformat |
Ejecuta una función Php del usuario para modificar el campo a combinar. |
max |
Limita el número de caracteres. |
frm |
Aplica un formato fecha-hora o numérico. |
locale |
Se usa con frm.
Muestra los nombres del día y mes en el formato local. |
protect |
Modo de protección para los caracteres '['. |
selected |
Items seleccionados en una lista Html. |
selbounds |
Se usa con selected. Cambia los límites por defecto de los ítems buscados. |
comm |
Extiende los límites del campo hasta la etiqueta de comentario que le envuelve. |
noerr |
Evita algunos mensajes de error TBS. |
file |
Incluye el contenido del archivo. |
script |
Ejecuta el script Php. |
getob |
Se usa con script.
Obtiene el texto pasado al comando echo y lo coloca en el lugar del campo. |
once |
Se usa con script.
Evita que el script sea ejecuta más de una vez. |
Parámetros de los bloques TBS:
Parámetro |
Resumen |
block |
Define los límites del bloque. |
extend |
Extiende los límites del bloque hasta las siguientes etiquetas Html sucesivas. |
encaps |
Extiende los límites del bloque hasta las siguientes etiquetas Html que lo contienen. |
comm |
Extiende los límites del bloque hasta la etiqueta de comentario que le envuelve. |
nodata |
Indica la sección que será mostrada cuando no existan datos desde el origen de datos. |
headergrp |
Indica una sección de encabezado que será mostrada cuando cambie el valor de una columna. |
footergrp |
Indica una sección de pie de página que será mostrada cuando cambie el valor de una columna. |
splittergrp |
Indica una sección de intermedio que será mostrada cuando cambie el valor de una columna. |
serial |
Indica una sección que contiene una serie de muchos registros. |
p1 |
Envia un parámetro a la sentencia dinámica para el origen de la fuente de datos. |
onsection |
Ejecuta una función Php del usuario para modificar la sección a combinar. |
tplvars |
Se usa con campos onload solamente. Define variables de la plantilla. |
when |
Se usa con onload o onshow.
Muestra la sección cuando se verifica la condición. |
default |
Se usa con onload o onshow. Muestra la sección cuando no se muestra otra sección. |
several |
Se usa con when.
Indica que se pueden mostrar varios bloques del grupo. |
Campos y parámetros para la barra de Navegación:
Campo |
Resumen |
nav.page |
Muestra el número de la página. |
nav.curr |
Muestra el número de la página actual. |
nav.first |
Muestra el número de la primera página (siempre
1). |
nav.prev |
Muestra el número de la página anterior . |
nav.next |
Muestra el número de la página siguiente . |
nav.last |
Muestra el número de la última página (-1
si es desconocido). |
|
|
Parámetro |
Resumen |
currpage |
Indica una sección que sólo se muestra para la página actual. |
endpoint |
Devuelve una cadena vacía si la página actual es la primera o la última. |
navpos |
Indica cómo es posicionada la barra de navegación comparada con el número de página actual. |
navsize |
Indica el número de página a mostrar. |
pagemin |
Indica el número de la primera página. |
Nombres de campos y bloques especiales:
Nombre |
Resumen |
val |
La palabra clave [val] se puede utilizar en los parámetros de los campos para representar el valor del campo. |
var.* |
Muestra una variable Php. |
var..* |
Muestra información acerca del Sistema TinyButStrong. |
# |
Nombre de la columna virtual para un bloque. Muestra el número de registros. |
$ |
Nombre de la columna virtual para un bloque. Muestra el índice del registro si el origen de los datos es un arreglo Php. |
onload |
Campo automático o bloque, combinado cuando es cargada la plantilla. |
onshow |
Campo automático o bloque, combinado cuando es mostrada la plantilla. |
.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.: