Page 1 of 1

como señalizar nuevo contenido

Posted: Mon Feb 15, 2010 11:52 pm
by ant666
Un saludo
quisiera saber si es posible señalizar en el menu que el contenido de esa pagina ha cambiado, bien con un icono de "new" o hacer que el texto parpadee, o cualquier otra forma.
estoy usando la version 1.5.4 de cmsms, plantilla Left simple navigation + 1 column,

Re: como señalizar nuevo contenido

Posted: Thu Mar 04, 2010 5:58 am
by hexdj
@ant666

Buena pregunta, he creado una UDT (Tag personalizada) que se puede usar para saber si una pagina es nueva (basados en la ultima fecha de modificación de esta)

Este es el código de mi UDT, a la que he llamado FreshContent

Code: Select all

global $gCms;
$db =& $gCms->GetDb();

$the_alias = isset($params['alias']) ? $params['alias'] : ""; 

$the_days = isset($params['days']) ? $params['days'] : "";

$the_output = isset($params['output']) ? $params['output'] : "";

$query = "SELECT modified_date FROM ".cms_db_prefix()."content WHERE content_alias=?";
$row = $db->GetRow($query, array($the_alias));
if($row)
{
   $last_mod = strtotime($row['modified_date']);

   $today = time();

   $date_diff = floor(($today - $last_mod)/86400);
  
   if ($date_diff < $the_days)
   {
      return $the_output;
   }
}

else
{
  return "No se encontró dicha pagina de contenido, revisar el <em>alias</em> de la pagina";
}
Parametros:
alias = el alias de la pagina en cuestión, a la que chequeamos si tiene contenido nuevo (basados en la fecha de modificación)
days = el numero de dias maximo en el que una pagina se considera "Nueva"
output = lo que se desea desplegar, si dicha pagina es considerada "Nueva"

Ejemplo:

Code: Select all

{FreshContent alias='home' days='14' output='<img src="new.gif" />'}
El ejemplo anterior verifica si la pagina que tiene el alias 'home' ha sido modificada en los ultimos 14 dias y si es asi despliega una imagen (ver html) llamada new.gif

El output puede ser cualquier codigo HTML que se desee, por ejemplo output="NUEVO!" desplegara un párrafo que dice NUEVO! si la pagina es considerada "Nueva"

Ejemplo #2:

Code: Select all

</__body>
{FreshContent alias=$page_alias days='8' output='<div class="notice">Esta pagina es nueva!</div>'}
...
Si se usa este codigo en una de las plantillas de paginas, se desplegara el div dado si la pagina tiene un maximo de 8 dias de antiguedad.

Ejemplo #3:

Code: Select all

<li>
{FreshContent alias=$node->alias days='5' output='NUEVA!'}
</li>
Este codigo se puede usar en el administrador de menus, y si se agrega en el lugar adecuad, mostrará la palabra "NUEVA!" junto al item del menu que tenga un maximo de 5 dias de antiguedad.

Otros Usos
Este UDT puede ser util en las plantillas de Menu Manager (ver Ejemplo 3), si se desea mostrar un icono (por ejemplo) junto a los enlaces del Menu para paginas que son consideradas "Nuevas"