entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Utilizar variables PHP en templates para emails TPL

A ver, tengo un sistema de gestión al que pueden acceder diferentes empresas y me gustaría gestionar variables tal como el nombre de la empresa, el logotipo de la empresa, los términos de uso, etc. y que dependiendo de la empresa seleccionada se ponga el LOGO de la empresa que esté usándolo.

Me he explicado?

Voy a poner unos ejemplos:

$img_src = siteURL()."/images/logo.jpg";
$sitetitle = "Nombre del sitio";
$company_name = "Nombre de la empresa";

Estas variables se designan dependiendo del puerto usado para acceder a la aplicación que es lo que determina la empresa que usa el sistema. Bien, ahora tengo unos templates para el envío de emails cuando se realiza una nueva notificación a los cuales me gustaría asignar de manera dinámica esas variables.

Una nota aclaratoria es que esas variables se definen en el connection_string.php que se incluye en todas las páginas del sitio.

Un saludo

2 Respuestas

0voto

ankeorum Puntos7210

He conseguido hacerlo pero las variables las tienes que tratar desde fuera del template y en el template llamarlas de la siguiente forma: [companyname] y fuera del template, en la página PHP desde donde llamas al template de e-mail haces un find-replace utilizando el array creado por todos los campos [] definidos dentro del template del e-mail.

Os pongo el find-replace y la definición de parámetros en el email por si alguien tiene también esta duda:

$find = array("[Prac1_Name]","[Prac1_EmployeeInd]","[Prac1_MedicalDefence]","[Prac1_Membership]","[Prac1_HasCover]","[Prac2_Name]","[Prac2_EmployeeInd]","[Prac2_MedicalDefence]","[Prac2_Membership]","[Prac2_HasCover]","[Prac3_Name]","[Prac3_EmployeeInd]","[Prac3_MedicalDefence]","[Prac3_Membership]","[Prac3_HasCover]","[Prac4_Name]","[Prac4_EmployeeInd]","[Prac4_MedicalDefence]","[Prac4_Membership]","[Prac4_HasCover]","[company_name]");
$replace = array ($_POST['Prac1_Name'],$_POST['Prac1_EmployeeInd'],$_POST['Prac1_MedicalDefence'],$_POST['Prac1_Membership'],$_POST['Prac1_HasCover'],$_POST['Prac2_Name'],$_POST['Prac2_EmployeeInd'],$_POST['Prac2_MedicalDefence'],$_POST['Prac2_Membership'],$_POST['Prac2_HasCover'],$_POST['Prac3_Name'],$_POST['Prac3_EmployeeInd'],$_POST['Prac3_MedicalDefence'],$_POST['Prac3_Membership'],$_POST['Prac3_HasCover'],$_POST['Prac4_Name'],$_POST['Prac4_EmployeeInd'],$_POST['Prac4_MedicalDefence'],$_POST['Prac4_Membership'],$_POST['Prac4_HasCover'],$company_name);

$message = str_replace($find, $replace, $message);

<tr>
    <td class="white_left">[Prac1_Name]</td>
    <td class="white_left">[Prac1_EmployeeInd]</td>
    <td class="white_left">[Prac1_MedicalDefence]</td>
    <td class="white_left">[Prac1_Membership]</td>
    <td class="white_left">[Prac1_HasCover]</td>
  </tr>

0voto

carlossevi Puntos63580

¿Y cuál es el motor de plantillas que utilizas? Echando un vistazo por Google parece que esa extensión (TPL) es utilizada por Smarty. En su web puedes encontrar toda la información, yo he visto lo siguiente en la documentación rápida que compara la sintaxis:

PHP:
<?=$foo?>

Smarty:
{$foo}

En el caso de tus variables:

{$img_src}
{$sitetitle}
{$company_name}

Espero que te sirva.

0voto

ankeorum comentado

No debe ser Smarty porque no funciona... Realmente si te digo la verdad no sé cual es el motor de plantillas. Me da la impresión de que han sido creadas las plantillas por mi compañero desarrollador.

0voto

carlossevi comentado

¿Puedes poner algún fragmento del código donde se utilicen las plantillas para ver cómo se llaman y manejan? Por otro lado, dentro de los ficheros de las plantillas ¿No hay nada que te parezca una sintáxis de variable? ¿No hay otras variables anteriores a las que quieres añadir tu?

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta