Diferencia entre revisiones de «Creando sitios complejos con ActionApps»

De ActionApps Documentacion
Saltar a: navegación, buscar
(→‎Usando el Modulo de sitio)
(→‎Archivos de control)
 
(No se muestran 10 ediciones intermedias de 3 usuarios)
Línea 1: Línea 1:
 +
[[en:Creating Complex Sites With ActionApps]]
 
== Usando el Modulo de sitio ==  
 
== Usando el Modulo de sitio ==  
 
<div class="aafaq" id="faq1680"><aafck id=1680> FAQ: id=1680 How to use Site Module </aafck>
 
<div class="aafaq" id="faq1680"><aafck id=1680> FAQ: id=1680 How to use Site Module </aafck>
 +
  
 
<strong>Modulo de sitio</strong>
 
<strong>Modulo de sitio</strong>
  
−
Hasta este momento, el mejor enfoque para contruir o administrar un sitio web de complejidad mediana a grande con ActionApps es usando el [[Term#Site_module|Modulo de Sitio]]. Este modulo es de gran ayuda al combinar varias vistas y canales en una misma pagina.
+
Si usted ha utilizado las Aplicaciones de Acci&oacute;n para incluir contenidos din&aacute;micos en las p&aacute;ginas de su sitio web es muy posible que le interese la idea de integrar la herramienta para lograr administrar todo el contenido de su sitio de manera global. La mayor&iacute;a de sitios web est&aacute;n constituidos por un considerable n&uacute;mero de p&aacute;ginas (archivos) que se vinculan entre si. El [[Term#Site_module|Modulo de Sitio]] le permite administrar todo el contenido de su sitio sin necesidad de realizar inclusiones din&aacute;micas en cada una de las p&aacute;ginas, facilitando las labores de actualizaci&oacute;n de contenidos y reduciendo la carga administrativa.
 +
 
 +
Piense por un momento en que usted maneja su sitio enteramente a trav&eacute;s de las AA sin necesidad de editar y transferir archivos HTML. Esta es la soluci&oacute;n que provee el [[Term#Site_module|Modulo de Sitio]]. Los sitios basados en este m&oacute;dulo tampoco hacen uso de archivos especiales (como shtml). El sitio completo puede ser manejado usando la interface de administraci&oacute;n de AA, con excepci&oacute;n del 'script principal de control', descrito m&aacute;s adelante.
 +
 
 +
En este art&iacute;culo usaremos como ejemplo el sitio de Econnect para demostrar los principios b&aacute;sicos y el funcionamiento del m&oacute;dulo.
 +
 
 +
El [[Term#Site_module|Modulo de Sitio]] es parte de la interface de administraci&oacute;n de AA, igual que otros m&oacute;dulos.
 +
Puede accederlo desde la caja de selecci&oacute;n 'cambiar a', si usted tiene privilegios para ello. El modulo de sitio le permite describir la estructura de sus p&aacute;ginas como un &aacute;rbol. La manera de construir la estructura de las p&aacute;ginas se describe m&aacute;s adelante.
 +
 
 +
 
 +
<strong>La idea: estado y sesiones</strong>
 +
 
 +
La consideraci&oacute;n principal durante la planificaci&oacute;n del [[Term#Site_module|Modulo de sitio]] fue despempe&ntilde;o. Los sitios complejos sol&iacute;an tener muchos visitantes al d&iacute;a Para un mejor desempe&ntilde;o es mejor tener las paginas en cache. Sin embargo, con el enfoque previo al modulo de sitio, cada usuario obtiene su propia identificaci&oacute;n de sesi&oacute;n, que es &uacute;nica para cada usuario y nos ayuda a almacenar el status, donde el usuario esta dentro del sitio (por ejemplo en que lugar del page scroller esta). Esta bien pero es muy dif&iacute;cil cachear esa informaci&oacute;n
 +
Debido a eso se desarrollo el modulo de sitio sin variables de sesi&oacute;n para cada usuario.
 +
Usamos en cambio una "cadena de estado". All&iacute; almacenamos el estatus, en que lugar del sitio esta el usuario.
 +
A esta variable de estado la llamamos <code>'apc'</code> (por 'Cache de apuntador de la aplicaci&oacute;n' o 'Application Pointer Cache' :-). Tiene un comportamiento especial en AA y es agregada autom&aacute;ticamente a todas las ligas generadas por AA y de esa manera podemos saber donde estuvo el usuario en la transici&oacute;n anterior.
  
−
Vamos a usar el sitio de Econnect como ejemplo, para demostrar los principios basicos.
+
Por ejemplo: si Ud. obtiene la liga:
  
−
El modulo de sitio es parte de la interface de administracion de AA, igual que otros modulos.
+
http://ecn.cz/index.stm?apc=zzvx1--
−
Puede accederlo desde la caja de seleccion 'cambiar a', si ud. tiene permiso. El modulo de sitio le permite describir la estructur del sitio como una arborecencia. Los sitios basados en el modulo no necesitan archivos especiales (como shtml). El sitio completo puede ser manejado usando la interfase de administracion de AA, con excepcion del 'script principal de control', descrito despues.
 
−
La manera de describir la estructura del sitio sera expuesta en este texto, mas adelante.
 
  
−
<strong>Idea - Estado y sesiones</strong>
+
este usuario estuvo en la pagina "news-alerts-all_categories-all_regions-page1" del sitio. Como esta eso codificado en la cadena alfanum&eacute;rica 'apc' es otro tema, y mas bien depende de Ud. y sera descrito mas adelante.
  
−
La consideracion principal durante la planificacion del [[Term#Site_module|Modulo de sitio]] fue despempenho. Los sitios complejos solieron tener muchos visitantes al dia. Para un mejor desempenho es mejor tener las paginas en cache. Sin embargo, con el enfoque previo al modulo de sitio, cada usuario obtiene su propia identificacion de sesion, que es unica para cada usuario y nos ayuda a almacenar el status, donde el usuario esta dentro del sitio (por ejemplo en que lugar del page scroller esta). Esta bien pero es muy dificil cachear esa informacion.
 
−
Debido a eso se desarrollo el modulo de sitio sin variables de sesion para cada usuario.
 
−
Usamos en cambio una "cadena de estado". Alli almacenamos el status, en que lugar del sitio esta el usuario.
 
−
A esta variable de estado la llamamos <code>'''apc'''</code> (por 'Cache de apuntador de la aplicacion' o 'Application Pointer Cache' :-). Tiene un comportamiento especial en AA y es agregada automaticamente a todas las ligas generadas por AA y de esa manera podemos saber donde estuvo el usuario en la transicion anterior.
 
  
−
Por ejemplo: si Ud. obtiene la liga http://ecn.cz/index.stm?apc=zzvx1--&..., este usuario estuvo en la pagina "news-alerts-all_categories-all_regions-page1" del sitio. Como esta eso codificado en la cadena alfanumerica "apc" es otro tema, y mas bien depende de Ud. y sera descrito mas adelante.
+
<strong>La cadena de estado <code>'apc'</code></strong>
  
−
<strong>La cadena de estado <code>apc</code></strong>
+
La cadena de estado de Econnect (apc=zzvx1--) consiste en 7 ''variables de estado''. Cada caracter de la cadena es una variable, sin embargo esto no es una regla general. De hecho, en nuestro ejemplo la quinta ''variable de estado'' <code>p</code> (p&aacute;gina) podr&iacute;a tener una logitud mayor a un caracter. Todas las ''variables de estado'' est&aacute;n definidas en el ''script principal de control'' del sitio (<code>/module/site/sites/site_xxx.php3</code>) o, por razones de seguridad, es invocado mediante <code>http://</code> alternativamente.
  
−
Como se puede ver (???), la cadena de estado de Econnect consiste en 7 variables de estado - cada caracter el la cadena es una variable en nuestro caso, pero no es una regla (de hecho la quinta variable de estado <code>p</code>, pagina, podria tener una logitud mayor a uno). Todas variables de estado estan definidas en el script principal de control del sitio - <code>/module/site/sites/site_xxx.php3</code> (o alternativamente es invocado, por razones de seguridad, mediante <code>http://</code>). En este script se define no solo en numero de variables de estado y la expresion regular que permite extraer los valores de la cadena de estado apc, sino tambien la manera en que cambiamos esa cadena de estado. Por ejemplo, si el codigo de <site>site_xxx.php3</site> obtiene el siguiente parametro en el url:
+
En el ''script principal de control'' se define el n&uacute;mero de ''variables de estado'' y la expresi&oacute;n regular que permite extraer los valores de la cadena de estado ''apc'', as&iacute; como la manera en que cambiamos esa cadena de estado. Por ejemplo, si el c&oacute;digo de <site>site_xxx.php3</site> obtiene el siguiente par&aacute;metro en el URL:
  
 
  http://ecn.cz/index.stm?apc=zzvx1--&p=3
 
  http://ecn.cz/index.stm?apc=zzvx1--&p=3
  
−
la variable de estado se cambia a <code>apc=zzvx3--</code>, lo que significa que esta en la misma pagina web, pero en la pagina numero 3.
+
la ''variable de estado'' cambia de  <code>apc=zzvx1--</code>  a <code>apc=zzvx3--</code>
  
−
Describamos a ontinuacion las variables usadas en el sitio de Econnect, pero tengamos en mente que las variables usadas en su sitio pueden ser diferentes, si desea.
+
A continuaci&oacute;n se describen las variables usadas en el sitio de Econnect. Recuerde que las variables usadas en su sitio pueden ser diferentes y adaptarse a sus necesidades.
  
−
<table>
+
<table border="1">
 
<tr valign="top">
 
<tr valign="top">
−
<td width="56">
+
<td width="79" align="center">
−
'''Position in apc state string'''
+
'''Posici&oacute;n en la cadena de estado'''
 
</td>
 
</td>
−
<td width="79">
+
<td width="79" align="center">
−
'''Name of state variable'''
+
'''Nombre de la variable de estado'''
 
</td>
 
</td>
−
<td width="181">
+
<td width="181" align="center">
−
'''Possible states of the variable'''
+
'''Posibles estados de la variable'''
 
</td>
 
</td>
−
<td width="292">
+
<td width="292" align="center">
−
'''Description'''
+
'''Descripci&oacute;n'''
 
</td>
 
</td>
 
</tr>
 
</tr>
−
<tr>
+
<tr valign="middle">
−
<td width="56" valign="bottom" sdnum="1029;" sdval="1">
+
<td width="56" sdnum="1029;" sdval="1" align="center">
 
1
 
1
 
</td>
 
</td>
−
<td width="79" valign="top">
+
<td width="79">
 
w (web)
 
w (web)
 
</td>
 
</td>
−
<td width="181" valign="top">
+
<td width="181">
 
z,e,n
 
z,e,n
 
</td>
 
</td>
−
<td width="292" valign="top">
+
<td width="292">
−
Clasificacion principal de las paginas
+
Clasificaci&oacute;n principal de las paginas
 
Las paginas de Econect estas divididas en tres clases:  
 
Las paginas de Econect estas divididas en tres clases:  
 
z - zpravodajstvi (noticias)  
 
z - zpravodajstvi (noticias)  
Línea 64: Línea 75:
 
</td>
 
</td>
 
</tr>
 
</tr>
−
<tr>
+
<tr valign="middle">
−
<td width="56" valign="bottom" sdnum="1029;" sdval="2">
+
<td width="56" sdnum="1029;" sdval="2" align="center">
 
2
 
2
 
</td>
 
</td>
−
<td width="79" valign="top">
+
<td width="79">
 
s (subweb)
 
s (subweb)
 
</td>
 
</td>
Línea 76: Línea 87:
 
N,F,P,I,J,V (for w=n)
 
N,F,P,I,J,V (for w=n)
 
</td>
 
</td>
−
<td width="292" valign="top">
+
<td width="292">
 
Cada web (w) esta dividida en subwebs, por ejemplo la web z (noticias) contiene:
 
Cada web (w) esta dividida en subwebs, por ejemplo la web z (noticias) contiene:
 
z - noticias
 
z - noticias
Línea 84: Línea 95:
 
</td>
 
</td>
 
</tr>
 
</tr>
−
<tr>
+
<tr valign="middle">
−
<td width="56" valign="bottom" sdnum="1029;" sdval="3">
+
<td width="56" sdnum="1029;" sdval="3" align="center">
 
3
 
3
 
</td>
 
</td>
−
<td width="79" valign="top">
+
<td width="79">
 
f (filtro)
 
f (filtro)
 
</td>
 
</td>
−
<td width="181" valign="top">
+
<td width="181">
 
Cualquier letra
 
Cualquier letra
 
</td>
 
</td>
−
<td width="292" valign="top">
+
<td width="292">
−
El uso primario de esta variable es para seleccionar la categoria de los items visibles (ambiente, derechos humanos, cultura, ...), pero cada pagina pidria usar esta variable para su propio proposito (tipo de apoyo, empleo, etc...)
+
El uso primario de esta variable es para seleccionar la categor&iacute;a de los items visibles (ambiente, derechos humanos, cultura, ...), pero cada pagina podr&iacute;a usar esta variable para su propio prop&oacute;sito (tipo de apoyo, empleo, etc...)
 
</td>
 
</td>
 
</tr>
 
</tr>
−
<tr>
+
<tr valign="middle">
−
<td width="56" valign="bottom" sdnum="1029;" sdval="4">
+
<td width="56" sdnum="1029;" sdval="4" align="center">
 
4
 
4
 
</td>
 
</td>
−
<td width="79" valign="top">
+
<td width="79">
−
r (region)
+
r (regi&oacute;n)
 
</td>
 
</td>
−
<td width="181" valign="top">
+
<td width="181">
 
Cualquier letra
 
Cualquier letra
 
</td>
 
</td>
−
<td width="292" valign="top">
+
<td width="292">
−
Igual que f - se usa para filtrar por region
+
Igual que f - se usa para filtrar por regi&oacute;n
 
</td>
 
</td>
 
</tr>
 
</tr>
−
<tr>
+
<tr valign="middle">
−
<td width="56" valign="bottom" sdnum="1029;" sdval="5">
+
<td width="56" sdnum="1029;" sdval="5" align="center">
 
5
 
5
 
</td>
 
</td>
−
<td width="79" valign="top">
+
<td width="79">
 
p (pagina)
 
p (pagina)
 
</td>
 
</td>
−
<td width="181" valign="top">
+
<td width="181">
 
Cualquier numero
 
Cualquier numero
 
</td>
 
</td>
−
<td width="292" valign="top">
+
<td width="292">
 
Almacena el numero de pagina, donde este el usuario (acorde con el page-scroller). Puede ser mas de un caracter en nuestro caso.
 
Almacena el numero de pagina, donde este el usuario (acorde con el page-scroller). Puede ser mas de un caracter en nuestro caso.
  
 
</td>
 
</td>
 
</tr>
 
</tr>
−
<tr>
+
<tr valign="middle">
−
<td width="56" valign="bottom" sdnum="1029;" sdval="6">
+
<td width="56" sdnum="1029;" sdval="6" align="center">
 
6
 
6
 
</td>
 
</td>
−
<td width="79" valign="top">
+
<td width="79">
 
t (tipo)
 
t (tipo)
 
</td>
 
</td>
−
<td width="181" valign="top">
+
<td width="181">
 
Cualquier letra
 
Cualquier letra
 
</td>
 
</td>
−
<td width="292" valign="top">
+
<td width="292">
−
Tipo especial de salida, como 'solo texto', 'para impresion', ...
+
Tipo especial de salida, como 'solo texto', 'para impresi&oacute;n', ...
 
</td>
 
</td>
 
</tr>
 
</tr>
−
<tr>
+
<tr valign="middle">
−
<td width="56" valign="bottom" sdnum="1029;" sdval="7">
+
<td width="56" sdnum="1029;" sdval="7" align="center">
 
7
 
7
 
</td>
 
</td>
−
<td width="79" valign="top">
+
<td width="79">
 
x (item)
 
x (item)
 
</td>
 
</td>
−
<td width="181" valign="top">
+
<td width="181">
 
Cualquier numero
 
Cualquier numero
 
</td>
 
</td>
−
<td width="292" valign="top">
+
<td width="292">
−
Identificacion del item a desplegar (como 12345) - como se puede ver, puede tener una logitud variable.
+
identificaci&oacute;n del item a desplegar (como 12345) - como se puede ver, puede tener una longitud variable.
 
</td>
 
</td>
 
</tr>
 
</tr>
 
</table>
 
</table>
−
Ud. puede usar cualquier numero de variables de estado en su sitio y combinarlas en la cadena de estado llamada 'apc'. Lo unico que hay que tener en cuenta es que la cadena de estado 'apc' debe ser  dividible en variables de estado. En el ejemplo de Econnect usamos la siguiente expresion rehular para obtener las variables de estado a partir de la "cadena de estado apc".
 
  
 +
 +
Ud. puede usar cualquier numero de ''variables de estado'' en su sitio y combinarlas en la ''cadena de estado'' llamada 'apc'. Lo &uacute;nico que hay que tener en cuenta es que la ''cadena de estado'' 'apc' debe ser divisible en ''variables de estado''. En el ejemplo de Econnect usamos la siguiente expresi&oacute;n regular para obtener las ''variables de estado'' a partir de la ''cadena de estado'' 'apc'.
  
  
−
{w}          {s}            {f}          {r}        {p}        {t}      {x}
+
              {w}          {s}            {f}          {r}        {p}        {t}      {x}
 
  ereg( "^([a-zA-Z0-9_])([a-zA-Z0-9_])([a-zA-Z0-9_-])([a-zA-Z_]+)([-]|[0-9]+)([a-zA-Z_-])([0-9]*)", $apc, $vars ))
 
  ereg( "^([a-zA-Z0-9_])([a-zA-Z0-9_])([a-zA-Z0-9_-])([a-zA-Z_]+)([-]|[0-9]+)([a-zA-Z_-])([0-9]*)", $apc, $vars ))
 +
  
 
<strong>Script principal de control</strong>
 
<strong>Script principal de control</strong>
−
El script principal de control es el unico archivo que Ud. necesitara editar en el proceso de creacon del sitio. El archivo contiene un script (probablemente en PHP) y su proposito es convertir la "cadena de estado APC" en variables de estado, y posiblemente cambiar el estado de las variables en base a los parametros que se obtienen en la URL.
 
  
−
El script se invoca antes que culquier pagina del sitio se despliegue. Aqui esta un ejemplo sensillo pero funcional del script. Los comentarios estan adentro.
+
El ''script principal de control'' es el &uacute;nico archivo que usted necesitar&aacute; editar en el proceso de creaci&oacute;n del sitio. El archivo contiene un script (probablemente en PHP) y su prop&oacute;sito es convertir la ''cadena de estado'' 'apc' en ''variables de estado'' y, posiblemente, cambiar el estado de las variables en base a los par&aacute;metros que se obtienen en la URL.
 +
 
 +
El script se invoca antes que cualquier pagina del sitio se despliegue. Aqu&iacute; est&aacute; un ejemplo sencillo pero funcional del script. Los comentarios est&aacute;n adentro.
  
 
Si la variable $apc no esta definida, probablemente estamos accediendo la pagina principal (ej. http://ecn.cz).
 
Si la variable $apc no esta definida, probablemente estamos accediendo la pagina principal (ej. http://ecn.cz).
  
−
  if( !$apc )  $apc = 'zzvx--';      # inicializamos la 'cadena de estado' si aun no existe
+
  if( !$apc )  $apc = 'zzvx--';      # inicializamos la ''cadena de estado'' si aun no existe
 
                                     # en su valor inicial
 
                                     # en su valor inicial
  
  
−
Separamos la cadena de estado $apc en variables de estado (por ahora con prefijo 'o')
+
Separamos la ''cadena de estado'' $apc en ''variables de estado'' (en el ejemplo se agrega el prefijo 'o' a las variables de script)
 +
 
 
  if( ereg( "^([a-zA-Z0-9_])([a-zA-Z0-9_])([a-zA-Z0-9_-])([a-zA-Z_]+)([-]|[0-9]+)([a-zA-Z_-])([0-9]*)", $apc, $vars ))
 
  if( ereg( "^([a-zA-Z0-9_])([a-zA-Z0-9_])([a-zA-Z0-9_-])([a-zA-Z_]+)([-]|[0-9]+)([a-zA-Z_-])([0-9]*)", $apc, $vars ))
 
   list($ostate,$ow,$os,$of,$or,$op,$ot,$ox) = $vars;
 
   list($ostate,$ow,$os,$of,$or,$op,$ot,$ox) = $vars;
−
   else                        #  si la cadena $apc tiene un formato erroneo,  
+
   else                        #  si la cadena $apc tiene un formato err&oacute;neo,  
 
                               # inicializamos las variables de estado
 
                               # inicializamos las variables de estado
 
   list($ow,$os,$of,$or,$op,$ot) = array( 'z', 'z', 'v', 'x', '-', '-');
 
   list($ow,$os,$of,$or,$op,$ot) = array( 'z', 'z', 'v', 'x', '-', '-');
  
−
Ahora tenemos que programar las reacciones a solicitudes especiales en url.
+
 
−
Por ejemplo, si estamos en el sitio y hacemos clic en una liga que contiene
+
Ahora tenemos que programar las reacciones a solicitudes especiales en el URL. Por ejemplo, si estamos en el sitio y hacemos clic en una liga que contiene <code>w=z</code> (por ejemplo <code>http://ecn.cz/index.stm?apc=zzvx1--&w=z</code>), cambiamos el estado a la secci&oacute;n 'noticias':
−
<code>w=z</code> (como por ejemplo <code>http://ecn.cz/index.stm?apc=zzvx1--&w=z</code>), cambiamos el estado a la seccion 'noticias'  
 
  
 
  if( isset($w) ) {  # w corresponde a WEB
 
  if( isset($w) ) {  # w corresponde a WEB
Línea 196: Línea 210:
 
   }
 
   }
 
  }
 
  }
 +
  
 
Lo mismo con la variable de estado s, pero el cambio es dentro de la misma WEB (la variable {w} permanece sin cambios)
 
Lo mismo con la variable de estado s, pero el cambio es dentro de la misma WEB (la variable {w} permanece sin cambios)
Línea 207: Línea 222:
 
  }
 
  }
  
−
Regla de reescritura para cada solicitud posible en url.
 
  
 +
Regla de reescritura para cada solicitud posible en el URL:
  
 
  if( isset($f) ) {$of=$f; $ox=''; $op='1';}    # f corresponde a FILTRO
 
  if( isset($f) ) {$of=$f; $ox=''; $op='1';}    # f corresponde a FILTRO
 
  if( isset($r) ) {$or=$r; $ox=''; $op='1';}    # r corresponde a REGION
 
  if( isset($r) ) {$or=$r; $ox=''; $op='1';}    # r corresponde a REGION
 
  if( isset($p) ) {$op=$p; $ox='';}            # pagina
 
  if( isset($p) ) {$op=$p; $ox='';}            # pagina
−
  if( isset($t) ) {$ot=$t; $ox='';}            # switch to special mode
+
  if( isset($t) ) {$ot=$t; $ox='';}            # cambia a modo especial
−
  if( isset($x) ) {$ox=$x;}                    # item id to display
+
  if( isset($x) ) {$ox=$x;}                    # id del item id a desplegar
 
  if( isset($scrl) ) {                          # page scroller
 
  if( isset($scrl) ) {                          # page scroller
 
   $pagevar = "scr_".$scrl."_Go";
 
   $pagevar = "scr_".$scrl."_Go";
Línea 221: Línea 236:
 
  }
 
  }
  
−
Finaly, save the final state of variables into $apc_state array. The key 'state' is used for storing new 'apc state string', other keys of the array are variables, which we can use in site module administration (in next chapter). There should be not only state variables, but any other variables which you want to use in site module, as well.
+
 
 +
Finalmente, grabamos el estado final de las ''variables de estado'' en el arreglo $apc_state. La clave 'state' se usa para almacenar la nueva ''cadena de estado'' 'apc'. Otras claves en el arreglo son variables, las cuales usamos en la administraci&oacute;n del m&oacute;dulo de sitio. No solo deben haber ''variables de estado'', sino tambi&eacute;n cualquier otra variable que usted desee usar.
  
 
  $apc_state = array ('state' => "$ow$os$of$or$op$ot$ox",
 
  $apc_state = array ('state' => "$ow$os$of$or$op$ot$ox",
Línea 231: Línea 247:
 
                     'p' => $op,
 
                     'p' => $op,
 
                     'x' => $ox,
 
                     'x' => $ox,
−
   # helper variables used in site module – you can define as many such
+
   # variables opcionales usadas en el sitio – usted puede definir tantas
−
   # variables as you want
+
   # variables como usted quiera
 
                     'archive' =>      (($op>10)? 'archive' : ''),
 
                     'archive' =>      (($op>10)? 'archive' : ''),
 
                     );
 
                     );
  
  
−
You can find example of such file in /modules/site/sites/ directory of ActionApps installation
+
Usted puede encontrar ejemplos de estos archiso en el directorio /modules/site/sites/ de su instalaci&oacute;n de ActionApps.
 +
 
 +
 
 +
<strong>Administraci&oacute;n del sitio</strong>
 +
 
 +
Todo el c&oacute;digo HTML que define la diagramaci&oacute;n de las p&aacute;ginas es administrado desde el m&oacute;dulo de sitio. La idea es dividir su p&aacute;gina web en secciones/pedazos y estructurarlos en un &aacute;rbol llamado el sitetree. Usted puede encontrar el sitetree de su sitio en la secci&oacute;n izquierda de la interface de administraci&oacute;n del m&oacute;dulo. En el momento en el que se despliega una p&aacute;gina las AA comienzan por imprimir la primera secci&oacute;n/pedazo de HTML y luego contin&uacute;a hacia abajo e imprime la rama correcta del &aacute;rbol, bas&aacute;ndosse en las variables de estado que usted defina. Cada una de las secciones/pedazos pueden contener HTML y, como se explicar&aacute; m&aacute;s adelante, pueden incluir diseños de vistas de los canales.
 +
 
 +
Existen dos tipos de secciones/pedazos HTML: los 'nodos' y sus respectivas 'opciones'.
 +
 
 +
<strong>Nodos</strong>
 +
 
 +
Un nodo tiene c&oacute;digo HTML que simplemente se imprime. Las AA imprimen los contenidos de un nodo y continuan con la evaluaci&oacute;n del siguiente (hac&iacute;a abajo). De otro lado, los 'nodos' pueden ser la ra&iacute;z de nuevas ramas de HTML. Un 'nodo' se convierte en la ra&iacute;z de una ramificaci&oacute;n cuando se le asigna una 'variable de desici&oacute;n'. Por ejemplo, si usted le asigna la variable 'w' al nodo 'inicio', usted puede crear ramificaciones ('opciones') de esa secci&oacute;n/pedazo y la evaluaci&oacute;n continuar&aacute; en la ramificaci&oacute;n donde 'w' satisfaga las condiciones necesarias.
 +
 
 +
<strong>Opciones</strong>
 +
 
 +
Cada 'opci&oacute;n' pertenecer&aacute; a un 'nodo' en el que se ha definido una 'variable de desici&oacute;n'. Para cada 'opci&oacute;n' se debe definit una condici&oacute;n basada en la 'variable de desici&oacute;n'. Las AA imprimen solamente la PRIMERA 'opci&oacute;n' que satisfaga la condici&oacute;n. Tan pronto como se cumple una condici&oacute;n, se imprime el c&oacute;digo que contiene esa 'opci&oacute;n' y se continua con la evaluaci&oacute;n del siguiente 'nodo' del sitetree.
  
−
<strong>Site administration</strong>
+
Dentro de las condiciones usted puede usar expresiones regulares. Tambi&eacute;n puede incluir m&aacute;s de una 'variable de desici&oacute;n' en las condiciones de cada 'opci&oacute;n'. Tenga en cuenta que si utiliza mas de una condici&oacute;n, &eacute;stas son evaluadas con el operador l&oacute;gico Y.
−
The HTML code for the pages is managed from site administration page. The code is divided into pieces, which is structured into tree structure ? called sitetree. The sitetree you can see on the left side of the administration interface. During the displaying of the page, AA starts with the
 
−
first HTML piece and then goes down and prints the right branch of the tree, based on the  state of state variables. The piece of HTML code could contain not only HTML code, but there could be
 
−
incorporated results of some slice view, as we see later.
 
  
−
We recognize two kind of HTML pieces - 'spots' and 'choices'.
 
  
−
<strong>a) spot</strong>
+
<strong>Incorporaci&oacute;n de diseños de vistas al c&oacute;digo HTML</strong>
−
spot is HTML code which is simply displayed. AA prints the contents of the spot and then the evaluation continue with the spot just below. On the other hand 'spot' (as well as choice) could be also the root of some branches of code. You can make spot as root of branch by assigning any (decision) variable to the spot. For example, if you assign variable 'w' to the 'start' spot, you create the root of branches (choices). The evaluation will continue in the branch (choice), where w satisfy the conditions.
 
  
−
<strong>b) choice</strong>
+
Dentro de los 'nodos' y 'opciones' usted puede utilizar el HTML y, adicionalmente, incoprporar diseños de vistas de cualquiera de los canales existentes En el m&oacute;dulo de sitio no se pueden utilizar los diseños de 'Listado' y 'Texto completo' del canal, solamente pueden utilizarse diseños de 'vistas'. Si usted quiere mostrar la informaci&oacute;n de uno de sus canales al interior de un 'nodo' o una de sus 'opciones' debe utilizar la siguiente sint&aacute;xis:
−
As you see, each choice belongs to a spot, where a 'decision variable' is defined. Each choice has defined a condition for the decision variable. AA prints only FIRST choice, which satisfy the conditions. After evaluation of the chioce (printing the output), AA continues with the spot on higher level of the sitetree.
 
  
−
You can use regular expressions in the conditions. You can also combine the condition for more than one 'decision' variable. The conditions are joined by the logical AND operator.
+
<code>{view.php3?vid=353}</code>
  
−
<strong>Incorporating database views into output.</strong>
+
Esto incluir&aacute; el resultado de la vista nñumero 353 dentro del c&oacute;digo del 'nodo' u 'opci&oacute;n' que se despliega. Aunque <code>{view.php3...}</code> es s&oacute;lamente la sint&aacute;xis de inclusi&oacute;n (no tiene nada que ver con el archivo view.php3), usted puede usar todos los par&aacute;metros que acepta view.php3. Por ejmplo, el siguiente c&oacute;digo es utilizado para desplegar el texto completo del item 'x' con el diseño de la vista 217:
−
You can use not only HTML cote in the spots, but you can incorporate here the outputs from any slice. The slice output is always controlled by view in site module (we do not use Fulltext or Index in site module). To include slice output use the following construct:
 
−
{view.php3?vid=353}
 
−
This includes in the output the result of view number 353. Although the <code>{view.php3...}</code> is just language construct (it have only a little to do with view.php3 file), we can use all the well known parameters we know from view.php3. So, the following example is the one, we surely use in our site for displaying the fulltext of the item x:
 
  
 
  <code>{view.php3?vid=217&cmd[217]=x-217-{x}}</code>
 
  <code>{view.php3?vid=217&cmd[217]=x-217-{x}}</code>
  
−
As you see from the example, we can use another language construct <code>{x}</code>, which is substituted by the content of variable x (x is the state variable defined in 'main control file' in <code>$apc_state</code> array).
+
Como puede darse cuenta en el ejemplo, la sint&aacute;xis permite usar <code>{x}</code> para ser sustituido por el contenido de la variable x (x pertenece a la  variable de estado definida en el arreglo <code>$apc_state</code> al interior del 'main control file').
 +
 
  
−
<strong>Language construct to be used with site module</strong>
+
<strong>Uso de la sint&aacute;xis en el m&oacute;dulo de sitio</strong>
  
 
<table border="1">
 
<table border="1">
 
<tr valign="top">
 
<tr valign="top">
 
<td width="312">
 
<td width="312">
−
'''Syntax'''
+
'''Sint&aacute;xis'''
 
</td>
 
</td>
 
<td width="312">
 
<td width="312">
−
'''Description'''
+
'''Descripci&oacute;n'''
 
</td>
 
</td>
 
</tr>
 
</tr>
Línea 279: Línea 302:
 
</td>
 
</td>
 
<td width="312">
 
<td width="312">
−
Returns content of variable (like {w})
+
Imprime el contenido de la variable.
 +
 
 +
Por ejemplo: {w}
 
</td>
 
</td>
 
</tr>
 
</tr>
 
<tr valign="top">
 
<tr valign="top">
 
<td width="312">
 
<td width="312">
−
{view.php3?vid=<vid>&<view parameters>}
+
{view.php3?vid=<vid>&<par&aacute;metros de la vista>}
 
</td>
 
</td>
 
<td width="312">
 
<td width="312">
−
Returns content of view <vid>. View uses the <view
+
Imprime el contenido de la vista n&uacute;mero <vid>. En esta sint&aacute;xis se usan los <par&aacute;metros de la vista> exactamente igual que con el script view.php3.
−
parameters> just like the view.php3 script. (like
+
 
−
{view.php3?vid=122&cmd[122]=c-1-{f}} )
+
Por ejemplo: {view.php3?vid=122&cmd[122]=c-1-{f}})
 
</td>
 
</td>
 
</tr>
 
</tr>
 
<tr valign="top">
 
<tr valign="top">
 
<td width="312">
 
<td width="312">
−
{switch(var1,var2,..)val1,val2,..:<printed
+
{switch(var1,var2,..)val1,val2,..:<texto 1>:val1,val2,..:<texto 2>}
−
text1>:val1,val2,..:<printed text2>}
 
 
</td>
 
</td>
 
<td width="312">
 
<td width="312">
−
Returns <printed text1> or <printed text2> or ... based on conditions val1,val2 for variables var1, var2, ... The only first matching text is printed. You can use regular expressions in conditions. (like <code>{switch(w)z:News:e:Econnect:.*:NGO}</code> )
+
Imprime <texto 1> o <texto 2> o ... con base en las condiciones val1 y val2 para las variables var1, var2, ... Solamente se imprime la primera condici&oacute;n que se cumple. Las condiciones pueden incluir expresiones regulares.
 +
 
 +
Por ejmplo: <code>{switch(w)z:News:e:Econnect:.*:NGO}</code>
 
</td>
 
</td>
 
</tr>
 
</tr>
 
<tr valign="top">
 
<tr valign="top">
 
<td width="312">
 
<td width="312">
−
{# any text}
+
{# cualquier texto}
 
</td>
 
</td>
 
<td width="312">
 
<td width="312">
−
Comments -  no output is printed
+
Comentarios -  no se imprimen
 
</td>
 
</td>
 
</tr>
 
</tr>
Línea 312: Línea 338:
 
</table>
 
</table>
  
−
The construct could be nested - the level of nesting is unlimited.
+
Est&aacute; sint&aacute;xis puede anidarse en tantos niveles como se requiera.
  
 
</div>
 
</div>
 +
 +
 +
==Archivos de control==
 +
 +
Aquí puede descargar algunos archivos de control que le pueden servir
 +
 +
 +
1. Este script sirve para trabajar con 5 variables. En cada variable se pueden almacenar minusculas, mayusculas, numeros, minusculas y mayusculas acentuadas, ñ, :, ",',espacio en blanco, guion y raya abajo de cualquier longitud. Bueno para cadenas vacias en busquedas. De esa forma se pueden usar nodos tipo a=inicio, b=documentos
 +
 +
[http://www.infoandina.org/apc-aa-files/aa/site_example.zip Descargar]
 +
 +
2. Este script sirve para trabajar con sites de dos idiomas. Solo permite 3 variables minusculas, mayusculas o numeros de longitud de un solo caracter.
 +
 +
[http://www.infoandina.org/apc-aa-files/aa/site_example2.zip Descargar]

Revisión actual del 23:41 30 sep 2007

Usando el Modulo de sitio

Origin: FAQ: id=1680 How to use Site Module


Modulo de sitio

Si usted ha utilizado las Aplicaciones de Acción para incluir contenidos dinámicos en las páginas de su sitio web es muy posible que le interese la idea de integrar la herramienta para lograr administrar todo el contenido de su sitio de manera global. La mayoría de sitios web están constituidos por un considerable número de páginas (archivos) que se vinculan entre si. El Modulo de Sitio le permite administrar todo el contenido de su sitio sin necesidad de realizar inclusiones dinámicas en cada una de las páginas, facilitando las labores de actualización de contenidos y reduciendo la carga administrativa.

Piense por un momento en que usted maneja su sitio enteramente a través de las AA sin necesidad de editar y transferir archivos HTML. Esta es la solución que provee el Modulo de Sitio. Los sitios basados en este módulo tampoco hacen uso de archivos especiales (como shtml). El sitio completo puede ser manejado usando la interface de administración de AA, con excepción del 'script principal de control', descrito más adelante.

En este artículo usaremos como ejemplo el sitio de Econnect para demostrar los principios básicos y el funcionamiento del módulo.

El Modulo de Sitio es parte de la interface de administración de AA, igual que otros módulos. Puede accederlo desde la caja de selección 'cambiar a', si usted tiene privilegios para ello. El modulo de sitio le permite describir la estructura de sus páginas como un árbol. La manera de construir la estructura de las páginas se describe más adelante.


La idea: estado y sesiones

La consideración principal durante la planificación del Modulo de sitio fue despempeño. Los sitios complejos solían tener muchos visitantes al día Para un mejor desempeño es mejor tener las paginas en cache. Sin embargo, con el enfoque previo al modulo de sitio, cada usuario obtiene su propia identificación de sesión, que es única para cada usuario y nos ayuda a almacenar el status, donde el usuario esta dentro del sitio (por ejemplo en que lugar del page scroller esta). Esta bien pero es muy difícil cachear esa información Debido a eso se desarrollo el modulo de sitio sin variables de sesión para cada usuario. Usamos en cambio una "cadena de estado". Allí almacenamos el estatus, en que lugar del sitio esta el usuario. A esta variable de estado la llamamos 'apc' (por 'Cache de apuntador de la aplicación' o 'Application Pointer Cache' :-). Tiene un comportamiento especial en AA y es agregada automáticamente a todas las ligas generadas por AA y de esa manera podemos saber donde estuvo el usuario en la transición anterior.

Por ejemplo: si Ud. obtiene la liga:

http://ecn.cz/index.stm?apc=zzvx1--

este usuario estuvo en la pagina "news-alerts-all_categories-all_regions-page1" del sitio. Como esta eso codificado en la cadena alfanumérica 'apc' es otro tema, y mas bien depende de Ud. y sera descrito mas adelante.


La cadena de estado 'apc'

La cadena de estado de Econnect (apc=zzvx1--) consiste en 7 variables de estado. Cada caracter de la cadena es una variable, sin embargo esto no es una regla general. De hecho, en nuestro ejemplo la quinta variable de estado p (página) podría tener una logitud mayor a un caracter. Todas las variables de estado están definidas en el script principal de control del sitio (/module/site/sites/site_xxx.php3) o, por razones de seguridad, es invocado mediante http:// alternativamente.

En el script principal de control se define el número de variables de estado y la expresión regular que permite extraer los valores de la cadena de estado apc, así como la manera en que cambiamos esa cadena de estado. Por ejemplo, si el código de <site>site_xxx.php3</site> obtiene el siguiente parámetro en el URL:

http://ecn.cz/index.stm?apc=zzvx1--&p=3

la variable de estado cambia de apc=zzvx1-- a apc=zzvx3--

A continuación se describen las variables usadas en el sitio de Econnect. Recuerde que las variables usadas en su sitio pueden ser diferentes y adaptarse a sus necesidades.

Posición en la cadena de estado

Nombre de la variable de estado

Posibles estados de la variable

Descripción

1

w (web)

z,e,n

Clasificación principal de las paginas Las paginas de Econect estas divididas en tres clases: z - zpravodajstvi (noticias) e - econnect n - nno (Noticias relacionadas con ONGs)

2

s (subweb)

z,m,k,t,a,s (for w=z) 1,2,3,4,5,6,7,8,9 (for w=e) N,F,P,I,J,V (for w=n)

Cada web (w) esta dividida en subwebs, por ejemplo la web z (noticias) contiene: z - noticias k - comentarios t - boletines de prensa ...

3

f (filtro)

Cualquier letra

El uso primario de esta variable es para seleccionar la categoría de los items visibles (ambiente, derechos humanos, cultura, ...), pero cada pagina podría usar esta variable para su propio propósito (tipo de apoyo, empleo, etc...)

4

r (región)

Cualquier letra

Igual que f - se usa para filtrar por región

5

p (pagina)

Cualquier numero

Almacena el numero de pagina, donde este el usuario (acorde con el page-scroller). Puede ser mas de un caracter en nuestro caso.

6

t (tipo)

Cualquier letra

Tipo especial de salida, como 'solo texto', 'para impresión', ...

7

x (item)

Cualquier numero

identificación del item a desplegar (como 12345) - como se puede ver, puede tener una longitud variable.


Ud. puede usar cualquier numero de variables de estado en su sitio y combinarlas en la cadena de estado llamada 'apc'. Lo único que hay que tener en cuenta es que la cadena de estado 'apc' debe ser divisible en variables de estado. En el ejemplo de Econnect usamos la siguiente expresión regular para obtener las variables de estado a partir de la cadena de estado 'apc'.


              {w}          {s}            {f}           {r}         {p}        {t}       {x}
ereg( "^([a-zA-Z0-9_])([a-zA-Z0-9_])([a-zA-Z0-9_-])([a-zA-Z_]+)([-]|[0-9]+)([a-zA-Z_-])([0-9]*)", $apc, $vars ))


Script principal de control

El script principal de control es el único archivo que usted necesitará editar en el proceso de creación del sitio. El archivo contiene un script (probablemente en PHP) y su propósito es convertir la cadena de estado 'apc' en variables de estado y, posiblemente, cambiar el estado de las variables en base a los parámetros que se obtienen en la URL.

El script se invoca antes que cualquier pagina del sitio se despliegue. Aquí está un ejemplo sencillo pero funcional del script. Los comentarios están adentro.

Si la variable $apc no esta definida, probablemente estamos accediendo la pagina principal (ej. http://ecn.cz).

if( !$apc )  $apc = 'zzvx--';      # inicializamos la cadena de estado si aun no existe
                                   # en su valor inicial


Separamos la cadena de estado $apc en variables de estado (en el ejemplo se agrega el prefijo 'o' a las variables de script)

if( ereg( "^([a-zA-Z0-9_])([a-zA-Z0-9_])([a-zA-Z0-9_-])([a-zA-Z_]+)([-]|[0-9]+)([a-zA-Z_-])([0-9]*)", $apc, $vars ))
  list($ostate,$ow,$os,$of,$or,$op,$ot,$ox) = $vars;
 else                        #  si la cadena $apc tiene un formato erróneo, 
                             # inicializamos las variables de estado
  list($ow,$os,$of,$or,$op,$ot) = array( 'z', 'z', 'v', 'x', '-', '-');


Ahora tenemos que programar las reacciones a solicitudes especiales en el URL. Por ejemplo, si estamos en el sitio y hacemos clic en una liga que contiene w=z (por ejemplo http://ecn.cz/index.stm?apc=zzvx1--&w=z), cambiamos el estado a la sección 'noticias':

if( isset($w) ) {   # w corresponde a WEB
  switch($w) {
   case 'z':
    list($ow,$os,$of,$or,$op,$ot,$ox)=array('z','z','v','x','-','-',); break;
   case 'n':
    list($ow,$os,$of,$or,$op,$ot,$ox)=array('n','N','1','-','-','-',); break;
   case 'e':
    list($ow,$os,$of,$or,$op,$ot,$ox)=array('e','1','1','-','-','-','73161');
    break;
  }
}


Lo mismo con la variable de estado s, pero el cambio es dentro de la misma WEB (la variable {w} permanece sin cambios)

if( isset($s) ) {   # s corresponde a SUBWEB
  $os=$s;
  $ox=;             # $ow queda igual – cambiamos subweb, no web
  $op='1';
  if( $old_w != 'z' ) # el formato de noticias queda igual
    $old_f=;
}


Regla de reescritura para cada solicitud posible en el URL:

if( isset($f) ) {$of=$f; $ox=; $op='1';}    # f corresponde a FILTRO
if( isset($r) ) {$or=$r; $ox=; $op='1';}    # r corresponde a REGION
if( isset($p) ) {$op=$p; $ox=;}             # pagina
if( isset($t) ) {$ot=$t; $ox=;}             # cambia a modo especial
if( isset($x) ) {$ox=$x;}                     # id del item id a desplegar
if( isset($scrl) ) {                          # page scroller
  $pagevar = "scr_".$scrl."_Go";
  $op = $$pagevar;
  $ox=;
}


Finalmente, grabamos el estado final de las variables de estado en el arreglo $apc_state. La clave 'state' se usa para almacenar la nueva cadena de estado 'apc'. Otras claves en el arreglo son variables, las cuales usamos en la administración del módulo de sitio. No solo deben haber variables de estado, sino también cualquier otra variable que usted desee usar.

$apc_state = array ('state' => "$ow$os$of$or$op$ot$ox",
                    'w' => $ow,
                    's' => $os,
                    'f' => $of,
                    'r' => $or,
                    't' => $ot,
                    'p' => $op,
                    'x' => $ox,
 # variables opcionales usadas en el sitio – usted puede definir tantas
 # variables como usted quiera
                   'archive' =>      (($op>10)? 'archive' : ),
                   );


Usted puede encontrar ejemplos de estos archiso en el directorio /modules/site/sites/ de su instalación de ActionApps.


Administración del sitio

Todo el código HTML que define la diagramación de las páginas es administrado desde el módulo de sitio. La idea es dividir su página web en secciones/pedazos y estructurarlos en un árbol llamado el sitetree. Usted puede encontrar el sitetree de su sitio en la sección izquierda de la interface de administración del módulo. En el momento en el que se despliega una página las AA comienzan por imprimir la primera sección/pedazo de HTML y luego continúa hacia abajo e imprime la rama correcta del árbol, basándosse en las variables de estado que usted defina. Cada una de las secciones/pedazos pueden contener HTML y, como se explicará más adelante, pueden incluir diseños de vistas de los canales.

Existen dos tipos de secciones/pedazos HTML: los 'nodos' y sus respectivas 'opciones'.

Nodos

Un nodo tiene código HTML que simplemente se imprime. Las AA imprimen los contenidos de un nodo y continuan con la evaluación del siguiente (hacía abajo). De otro lado, los 'nodos' pueden ser la raíz de nuevas ramas de HTML. Un 'nodo' se convierte en la raíz de una ramificación cuando se le asigna una 'variable de desición'. Por ejemplo, si usted le asigna la variable 'w' al nodo 'inicio', usted puede crear ramificaciones ('opciones') de esa sección/pedazo y la evaluación continuará en la ramificación donde 'w' satisfaga las condiciones necesarias.

Opciones

Cada 'opción' pertenecerá a un 'nodo' en el que se ha definido una 'variable de desición'. Para cada 'opción' se debe definit una condición basada en la 'variable de desición'. Las AA imprimen solamente la PRIMERA 'opción' que satisfaga la condición. Tan pronto como se cumple una condición, se imprime el código que contiene esa 'opción' y se continua con la evaluación del siguiente 'nodo' del sitetree.

Dentro de las condiciones usted puede usar expresiones regulares. También puede incluir más de una 'variable de desición' en las condiciones de cada 'opción'. Tenga en cuenta que si utiliza mas de una condición, éstas son evaluadas con el operador lógico Y.


Incorporación de diseños de vistas al código HTML

Dentro de los 'nodos' y 'opciones' usted puede utilizar el HTML y, adicionalmente, incoprporar diseños de vistas de cualquiera de los canales existentes En el módulo de sitio no se pueden utilizar los diseños de 'Listado' y 'Texto completo' del canal, solamente pueden utilizarse diseños de 'vistas'. Si usted quiere mostrar la información de uno de sus canales al interior de un 'nodo' o una de sus 'opciones' debe utilizar la siguiente sintáxis:

{view.php3?vid=353}

Esto incluirá el resultado de la vista nñumero 353 dentro del código del 'nodo' u 'opción' que se despliega. Aunque {view.php3...} es sólamente la sintáxis de inclusión (no tiene nada que ver con el archivo view.php3), usted puede usar todos los parámetros que acepta view.php3. Por ejmplo, el siguiente código es utilizado para desplegar el texto completo del item 'x' con el diseño de la vista 217:

{view.php3?vid=217&cmd[217]=x-217-{x}}

Como puede darse cuenta en el ejemplo, la sintáxis permite usar {x} para ser sustituido por el contenido de la variable x (x pertenece a la variable de estado definida en el arreglo $apc_state al interior del 'main control file').


Uso de la sintáxis en el módulo de sitio

Sintáxis

Descripción

{<variable>}

Imprime el contenido de la variable.

Por ejemplo: {w}

{view.php3?vid=<vid>&<parámetros de la vista>}

Imprime el contenido de la vista número <vid>. En esta sintáxis se usan los <parámetros de la vista> exactamente igual que con el script view.php3.

Por ejemplo: {view.php3?vid=122&cmd[122]=c-1-{f}})

{switch(var1,var2,..)val1,val2,..:<texto 1>:val1,val2,..:<texto 2>}

Imprime <texto 1> o <texto 2> o ... con base en las condiciones val1 y val2 para las variables var1, var2, ... Solamente se imprime la primera condición que se cumple. Las condiciones pueden incluir expresiones regulares.

Por ejmplo: {switch(w)z:News:e:Econnect:.*:NGO}

{# cualquier texto}

Comentarios - no se imprimen

Está sintáxis puede anidarse en tantos niveles como se requiera.


Archivos de control

Aquí puede descargar algunos archivos de control que le pueden servir


1. Este script sirve para trabajar con 5 variables. En cada variable se pueden almacenar minusculas, mayusculas, numeros, minusculas y mayusculas acentuadas, ñ, :, ",',espacio en blanco, guion y raya abajo de cualquier longitud. Bueno para cadenas vacias en busquedas. De esa forma se pueden usar nodos tipo a=inicio, b=documentos

Descargar

2. Este script sirve para trabajar con sites de dos idiomas. Solo permite 3 variables minusculas, mayusculas o numeros de longitud de un solo caracter.

Descargar