versiones translations theme temas org for distribucion drupal drupal-6 drupal-7

theme - translations drupal 7



Formato de fecha personalizado(devolución de llamada con lógica php) (4)

Puede usar el módulo de API de fecha para agregar su formato de fecha personalizado. El módulo de API de fecha está dentro del módulo de fecha. Después de habilitar el módulo API de fecha, puede ir a la ruta "admin / settings / date-time / formats / add" para agregar su formato personalizado.

"admin / settings / date-time / formats / configure" es la ruta para configurar los formatos de fecha.

Eche un vistazo a estos. Feliz codificación.

Gracias RT

Quiero crear un formato de fecha php dinámico. Ejemplo: muestre la hora del nodo si se publicó hoy y solo el día / mes cuando es más antiguo que el día de hoy. Quiero que este formato esté disponible en Drupal como los otros formatos de fecha predefinidos en Drupal (no solo en el nivel de tema) .

Encontré el gancho (solo D7) para hook_date_format_types pero incluso ese no parece permitir una devolución de llamada donde podría definir esta lógica de PHP.

¿Alguien sabe qué gancho haría esto posible? O un módulo que hace esto?


Puede ir a node.tpl.php (posiblemente en sites / all / themes / theme_name / node.tpl.php). Aquí puede encontrar la variable $ created, para reformatear la fecha en la que puede usar su función personalizada y cambiar el $ creado como desee. Después de esto, todos los nodos usarán las fechas formateadas.

Regatds, Chintan.


Usa el módulo de características. Crea una característica.

En el módulo de características resultante, en el archivo [feature] .module, cree una función hook_nodeapi y formatee el campo con una instrucción condicional que tenga en cuenta la fecha actual () de cómo se mostrará la fecha y alimente en $ node -> contenido var.

Y esa es la forma en que Rockstars lo haría (-;


En Drupal6, format_date() tiene las fechas y horas codificadas. Además, format_date() no permite devoluciones de llamada, pero sí permite una cadena personalizada. Ahí es donde puedes aplicar un truco: en lugar de codificar la cadena allí, llamas a una función que devuelve una cadena.

function mydate_format($timestamp) { $now = time(); if (($now - $timestamp) < (60*60*24)) { return "H:i"; } else { return "d:m:Y"; } } print format_date($timestamp, ''custom'', mydate_format($timestamp));

La segunda opción es redefinir una marca de fecha y hora, pero eso es a la vez hackish y limitado. Los formatos de fecha se definen con variable_get (), pero no pasan la marca de tiempo junto ; por lo tanto, su ejemplo de cambio de formatos basado en el valor de la marca de tiempo no es posible de esta manera.

En settings.php :

$conf[''date_format_long''] = $conf[''debug''] ? ''r'' : ''l, F j, Y - H:i'';

Esto cambiará de un valor a otro, dependiendo de si settings.php tiene un indicador "depuración" establecido en TRUE o no. Como se mencionó: el uso para esto es limitado, ya que no se puede obtener ningún contexto.

La tercera alternativa es usar la API de fecha que ofrece formatos de tiempo configurables en línea. Pero eso es torpe e inseguro (ingresa PHP ejecutable en tu base de datos). También depende de un gran conjunto de módulos. Y tiene el mismo inconveniente que la primera solución: no puede usar format_date, pero debe usar una llamada de función modificada, en lugar de format_date() . Vea todas las opciones en el manual de The Drupal.org para el tema de fechas .

GOTCHA En todos los casos, Drupal no llamará a esta función para el contenido en caché. Si desea que las fechas sean realmente dinámicas, debe evitar el almacenamiento en caché o implementar el formato de fecha en el cliente javascript.

TL; DR : No puede tener formatos de fecha dinámicos sin cambiar parte del código en el nivel del tema. Usar una función de devolución de llamada para generar el formato de fecha "personalizado" es la solución más simple y funcional.