Comunidad oficial de diseñadores web, web developers y Webmasters. Aqui podemos tratar temas actuales sobre diseño y tecnología. Podemos compartir y actualizarnos. Photoshop, Flash, PHP, ASP, Java, HTML, CSS, MySQL, CMS, etc. Unite YA y lee los Sticky

Ver más
  • 13,065 Miembros
  • 9,531 Temas
  • 3,449 Seguidores
  • 0

[Consulta] Insertar contenido en el head con PHP

Hola, saben si existe alguna funcion en php que pueda insertar directamente codigo en el head, para utilizarlo en un constructor. Gracias
  • 0
  • -2Calificación
  • 1Seguidores
  • 272Visitas
  • 0Favoritos

15 respuestas

@dii3g0 dijo Hace más de 10 meses:

Explicate mejor porque no se entiende

@matman83 dijo Hace más de 10 meses:

supongo que deberías hacer una clase que genere todo el código html, y de alguna manera relacionar esta clase con la que instanciarias

@gastondla35 dijo Hace más de 10 meses:

todo depende como organices tu código. para lograr eso de forma práctica deberías adoptar algún patrón de diseño o usar/crearte una librería que te vaya construyendo la página según valores que le vayas cargando

@mcba89 dijo Hace más de 9 meses:

Estoy por meterme a hacer algo asi como lo que vos queres justamente. Estuve pensando en hacer funciones especificas para determinadas cosas (onda getTitle, getMetaDescripcion, getMetaKeys, getContenido, getComentarios, cosas assi) para autogenerar la web y olvidarme de todo.
Para eso ingresaria a la BD y obtendria todo. POO en PHP creo que lo permitiria y de una gran manera .
Cuando este en esto te aviso.

@dii3g0 dijo Hace más de 9 meses:

mmm usando __tostring()

<?php
class Test {

    public function 
__construct() {}

    public function 
__toString()
    {
        return 
'<script>alert("Demo");</script>';
    }

}

Y donde quieras imprimirlo haz algo asi

<html>
<head>
<title>hola</title>
</head>
<body>
<?php echo new Test(); ?>
</body>
</html>

Lo que daria

<html>
<head>
<title>hola</title>
</head>
<body>
<script>alert("Demo");</script>
</body>
</html>

@dii3g0 dijo Hace más de 9 meses:

Si o si tiene que estar entre el HTML? no puede estar al final?

@dii3g0 dijo Hace más de 9 meses:

Pero digo, la instancia a la clase tiene qe estar dentro si o si del html? no puede estar al final? sino pobdrias usar ob_start() ob_get_clean() y asi guardas todo el html generado en una variable despues con una expresion regular, obtener todo lo que esta entre esas etiquetas y agregarle lo que quieras, y despues imprimir el nuevo html

@dii3g0 dijo Hace más de 9 meses:

exacto!! eso es lo que necesitaba...sos groso @dii3g0. No conocia las funciones ob. Ahora me voy a poner a probar un rato!


Hace tiempito que no tocaba PHP, asi que para pasar el tiempo hice esto:

<?php
final class HTML {

    private 
$head = array();
    
    public function 
__construct()
    {
        
ob_start();
    }

    public function 
addToHead($html)
    {
        
$this->head[] = $html;
    }

    public function 
parse()
    {
        
$output ob_get_clean();

        if(
preg_match('|<head>(.*?)</head>|is'$output$matches))
        {
            
$new_tags  '<head>';
            
$new_tags .= $matches[1] . PHP_EOL;
            
$new_tags .= implode(PHP_EOL$this->head);
            
$new_tags .= '</head>';
        
            
$output preg_replace('|<head>(.*?)</head>|is'$new_tags$output);
        }

        return 
$output;
    }

}

$lorem = new HTML();
?>
<!DOCTYPE html> 
<html lang="en" class="no-js"> 
<head> 
    <meta charset="UTF-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
    <meta name="keywords" content=""> 
    <meta name="description" content=""> 
    
    <title>Title</title> 
</head> 
<body>
</body> 
</html>
<?php
$lorem
->addToHead('<link rel="stylesheet" href="style.css">');
$lorem->addToHead('<script src="script.js"></script>');

echo 
$lorem->parse();
?>

Lo que devolveria


<!DOCTYPE html> 
<html lang="en" class="no-js"> 
<head> 
    <meta charset="UTF-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
    <meta name="keywords" content=""> 
    <meta name="description" content=""> 
    
    <title>Title</title> 
 
<link rel="stylesheet" href="style.css"> 
<script src="script.js"></script></head> 
<body> 
</body> 
</html> 

Tienes que ser miembro para responder en este tema