New question

Question:

Date: 27-03-2018 20:14:14 (In Spanish)

¿Cómo poner condicionales a file_get_contents PHP?[Unresolved]

Hola amigos de la comunida,
Hace rato no me paseaba por aquí, estoy trabajando en un proyecto el cual me entro la necesidad de usar una plantilla ya que la parte se repetia demasíadas veces en varías partes, entonces si cambiaba algo en una, me tocaba en todas las páginas donde se usara, todo bn hasta ahí con el siguiente código:
$path = 'plantilla.html';
if(file_exists($path)){
	$tpl = file_get_contents($path);
}else{
	echo "ERROR";
}
$mensaje = str_replace('#$nombre#', $username, $mensaje);
$mensaje = str_replace('#$mensaje#', $mensaje, $mensaje);

Y con una plantilla que estuvieran los comodines #$nombre# y #$mensaje#.
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<h1>Hola #$nombre#</h1><br>
	<p>#$mensaje#</p>
</body>
</html>

Todo va de maravilla hasta aquí, pero surgio otra necesidad, usar condicionales.
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<h1>Hola #$nombre#</h1><br>
	#if($mensaje != "")#
	<p>#$mensaje#</p>
	#endif#
</body>
</html>

Alguíen que me ayude a como poder implementar esto, o una manera sencilla de hacerlo, que no sea usando librerias como Smarty.

Saludos
Equipo AnimeSensei.
Tags: Database - HTML - PHP - Question - Template - Template (Theme) - Templates Votes: 0 - Answers: 5 - Views: 10 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 28-03-2018 15:40:03 Porque no validas eso en el mismo php que prepara la data?

    $msg = ($sihaymensaje) ? "<p>".$sihaymensaje."</p>" : '';//Valido si hay un mensaje, si no, regreso una cadena vacía
    
    $mensaje = str_replace('#$mensaje#', $msg, $mensaje);
    
    


    De esa manera si hay mensaje retorno la cadena con sus etiquetas html, pero si no simplemente retorno una cadena vacía y no ha pasado nada.
      Votes: 1 - Link answer
     
  • Date: 28-03-2018 18:14:26 Hola, CorpLan Web.

    Te comparto la solución al primer problema:
    <?php
    	#Función que ejecuta la plantilla y la adapta.
    	function execTemplate($tpt, $name, $msg){
    
    		#Se verifica si el fichero existe.
    		if (file_exists($tpt)){
    
    			#Se extrae el contenido del fichero.
    			$file_content = file_get_contents($tpt);
    
    			#Crea un array con las claves a tocar en el contenido.
    			$key = array("#\$nombre#", "#\$mensaje#");
    
    			#Crea un array con los valores a asignar en respectivas claves.
    			$val = array($name, $msg);
    
    			#Se reemplazan las claves por los valores del contenido obtenido.
    			echo str_replace($key, $val, $file_content);
    		} else {
    			echo "El fichero ".$tpt." no fue encontrado.";
    		}
    	}
    
    	#Se ejecuta la función con los siguientes parámetros. Template | Name | Message
    	execTemplate("plantilla.html", "Jerson Martínez", "¡Orgullosamente Nicaragüense!");
    ?>

    Realizar el algoritmo para las condicionales tendrá que ver mucho con la lógica que quieras llevarlo a cabo, ya que programarlo sólo para ese tipo de condiciones donde no estás proponiendo un margen de juego, el asunto queda muy abierto y cuando se hagan pruebas duras, este tenga que fallar por falta de atención.

    Obteniendo los caracteres cuando encuentre un if y lo cierre, es ahí donde hay que empezar a partir palabra por palabra, comparar y saber a qué se refiere; como te comento, es cuestión de lógica y no tanta programación.

    Leeré tus comentarios para saber si puedo seguir colaborando. ¡Saludos!
      Votes: 1 - Link answer
     
  • Date: 31-03-2018 20:34:10 Hola, muchas gracias por las respuestas.
    Ps la idea de usar las plantillas no es solo por mostrar un mensaje, si no una estructura en concreto, tipo lo que sería wordpress, que depende de como es el articulo asigna una plantilla, una para video, audio o simplemente texto, pero no quiero que tenga que cargar paginas independientes de estas, que solo añadira unas cuantas lineas.
    ¿Porque con file_get_contents?
    Lo hice con lo que sería esta función para gardar ya que necesito que en determinado momento esto sea cargado automaticamente en la parte de abajo con jQuery, lo que me crea el elemento, ya que necesito traer varios datos y no solo el cuerpo lo hago con JSON, para traer los datos necesarios y traer la estructura decodificada en una variable.

    Saludos
    Equipo AnimeSensei.
      Votes: 0 - Link answer
     
  • Date: 01-04-2018 14:37:02 Entiendo lo que pronuncia, exponga el código que tiene hasta el momento. Me parece un tema interesante, por favor, proponga pequeños detalles en cuál enfocarnos para encontrar una solución.   Votes: 0 - Link answer
     
  • Date: 01-04-2018 19:29:28 Hola,
    El código esta arriba, solo que cuando lo quiero enviar a una variable, desde php lo hago así.
        $path = 'plantilla.html';
        if(file_exists($path)){
            $tpl = file_get_contents($path);
        }else{
            echo "ERROR";
        }
        $mensaje = str_replace('#$nombre#', $username, $mensaje);
        $mensaje = str_replace('#$mensaje#', $mensaje, $mensaje);
        $repuesta["temple"] = $tpl;
    
       echo json_encode($respuesta);
    


    Saludos
    Equipo AnimeSensei.
      Votes: 0 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In