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
[Consulta] Insertar contenido en el head con PHP
- -2Calificación
- 1Seguidores
- 272Visitas
- 0Favoritos
Global
Argentina
Chile
Colombia
España
México
Perú
Uruguay
Venezuela
15 respuestas
Explicate mejor porque no se entiende
quiero que al crear un objeto poder agregar un javascript en el head...sea donde sea que haya instanciado una clase
class Hola {
function __construct() {
//agregar javascript entre la etiqueta <head> aqui </head>
}
}
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
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
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.
lo que andaba buscando era algo asi pero con php
http://lineadecodigo.com/javascript/crear-elementos-html-con-javascript/
ej.:
index.php (a generar)
<html>
<head>
<title>hola</title>
</head>
<body>
<?php
$perro = new Hola();
?>
</body>
</html>
index.php(generado)
<html>
<head>
<title>hola</title>
<script>blablabla</script>
</head>
<body>
</body>
</html>
si se les ocurre algo me avisan, ya desisti
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>
claro, con un simple echo tambien se puede hacer...pero la idea es que en cualquier lado que cree el objeto se inserte en el head...es un lindo desafio jaja
Si o si tiene que estar entre el HTML? no puede estar al final?
en el html, entre las etiquetas head...estaba leyendo el uso del DOM de PHP pero me parece q sirve sola para generar archivos, abrir, guardar pero no para buscar dentro :$
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
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>
ahi estuve viendo mas profundo el ob y el codigo que me dejaste pero me encuentro en la misma situacion...estaria bueno que el ob_start recorriera todo el documento y volviera al principio el solo...voy a seguir leyendo un poco mas
tiro una idea al pasar, abrir fopen(__FILE__) modificarlo y despues op borrar el viejo y colocar el nuevo