Agregar una pagina estática.

Cada pagina cuenta con 3 partes: acción, template y url
Lo primero que debemos hacer para agregar una paginas es generar una url por la cual se ingrese. 
Mastodonte usa el sistema de rutas de symfony, el cual se configura desde el archivo routing.yml de la aplicación. 
Agregaremos como ejemplo la pagina " Quienes somos" del sitio público.

En el archivo /apps/frontend/config/routing.yml agregar la siguientes lines. 

quienes_somos:
 url: quienes_somos.html
   param: { module: default, action: quienesSomos }

Ahora el request que llegue a la url quienes_somos.html será procesado al nuestro siguiente paso, el controlador. 
Cada modulo de la aplicación cuenta con un controlador que procesa todos los request según sea configurado en el routing.yml. 
Para nuestro caso el modulo será el default y la acción quienesSomos. 

Por lo tanto debemos genera la acción en el archivo /apps/frontend/modules/default/actions/action.class.php con el siguiente código dentro de la clase existente:

    public function executeQuienesSomos(sfWebRequest $request){
    }

Una vez que el proceso llega a la acción, esta por defecto renderisa el template de nombre accionSuccess.php de la carpeta templastes. 
Para finalizar nuestra tarea creamos el archivo /apps/frontend/modules/default/templates/quienesSomosSuccress.php. 
Dentro de este archivo ingresamos el html que deseamos se muestre en la página. 

El proceso esta listo, tenemos url, controlador y template. Ahora entrando a la página /quienes_somos.html se verá el contenido querido. 


Nota:
En caso de que la pagina no se acceda en el ambiente produccion (index.php) puede que halla que limpiar el cache. 

Esto se hace borrando la carpeta /cache/frontend del sitio. 


Como trabajar con el sistema de multi lenguage

En el template de las paginas se debe utilizar una helper de mastodonte para obtener textos del sistema de multi lenguage. 

El sistema de multilenguage funciona (basicamente) disponiendo bloques html en el template, nombrados de cierta manera, de tal manera que usando la herramienta del backend se pueda administrar el contenido de ese bloque. 

Continuando con el ejemplo de la página Quienes Somos. 

en el template /apps/frontend/modules/default/templates/quienesSomosSuccress.php ingresamos el siguiente código. 

Con esto hacemos que en la pagina se genere un div de id content_quienesSomos y dentro de ese div se ingrese el contenido gestionado por la variable texto de la pagina QuienesSomos.

Una vez puestas todas las variables deseadas en el template, de deben agregar al sistema para su administración. 

Esto se puede hacer de 2 maneras, mediante un comando symfony desde la consola o manualmente. 
Symfony nos da herramienta que revisa los templates y agrega a los archivos xml de los contenidos las nuevas variables. 

desde la consola se debe tirar la siguiente linea

php symfony i18n:extract frontend es --auto-save

Donde "frontend" es la aplicación a revisar y "es" el idioma donde se agregan las variables. Hay que correr la rutina para cada uno de los idiomas que tenga el sitio. 

Si queremos hacer esta acción de forma manual (por ejemplo porque no tenemos acceso ssh), hay que agregar las variables a los archivos xml. 
Para nuestro ejemplo, se debe agregar en el archivo /apps/frontend/i18n/es/messages.xml , dentro del tag body

 
QuienesSomos_texto
 texto del quienes somos
 es

Para cada variable nueva del template se debe usar un bloque trans-unit. Dentro de la etiqueta debe ir la variable pedida, en el el texto a mostrar y en el el idioma.
Cada lenguage tiene su propio archivo messages.xml en la carpeta correspondiente y se debe ingresar en todos los archivos. 
Si al terminar este proceso, en la página no se ve el nuevo contenido, hay que limpiar el cache.

php symfony cc


Como hacer un link a una pagina de mastodonte. 

Para hacer un link en un template, el contenido del href debe ser. 
donde "quienesSomos" es el nombre de la ruta en el archivo routing.yml


Para saber si se esta en una pagina. 

En el caso de los menus, generalmente queremos cambiar la clase de una link (o directamente no hacer el link) de la página en la que estamos. 
Para esto se pueden hacer de 2 maneras.

La primera es preguntando por el routing del request. 

En el template sería

getAttribute('sf_route')->matchesParameters(array('module'=>'default', 'action'=>'quienesSomos'))) echo 'class="active"';?>>

La otra forma (en general mas usada) es utilizando slots. 
Los slot son bloques que se pueden llamar desde cualquier template. 
La forma de hacerlo es, template, como primer linea (respentando metodologias de trabajo). 
Y para el link, preguntamos si ese slot existe.