Grafeco Posted April 21, 2014 Share Posted April 21, 2014 Hola! Utilizo media servers, para acelerar mi tienda, y los tengo de tal forma: media1.dominio.com media2.dominio.com media3.dominio.com Para impedir que también se indexen (y Google me penalice por duplicidad) he hecho este código por php: <?php $urlnoindexacion = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; if (false !== strpos($urlnoindexacion,'media')) { echo '<meta name="robots" content="noindex">'; } ?> Lo que hace es analizar la url de la web, y si contiene la palabra "media", devuelve en meta noindex. Lo he probado en una página php pura y funciona correctamente. Ahora bien, quiero meterlo en mi header.tpl y he probado con: {php} $urlnoindexacion = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; if (false !== strpos($urlnoindexacion,'media')) { echo '<meta name="robots" content="noindex">'; } {/php} y.....Pantallazo en blanco. ¿ Alguien me dice cómo puedo meter el código php en el tpl correctamente ? ¡Un saludo! Link to comment Share on other sites More sharing options...
xabikip Posted April 21, 2014 Share Posted April 21, 2014 Tendrías que pasarla desde en controlador como parámetro. No es aconsejable meter código php en los tpl. Link to comment Share on other sites More sharing options...
Grafeco Posted April 21, 2014 Author Share Posted April 21, 2014 Tendrías que pasarla desde en controlador como parámetro. No es aconsejable meter código php en los tpl. Cómo la paso desde el controlador? Link to comment Share on other sites More sharing options...
xabikip Posted April 22, 2014 Share Posted April 22, 2014 (edited) Esto seria en el controlador: $urlnoindexacion = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; if (false !== strpos($urlnoindexacion,'media')) { $meta = '<meta name="robots" content="noindex">'; } $this->context->smarty->assign( array( 'meta' => $meta ) ); return $this->display(__FILE__, 'tplquequieras.tpl'); Luego en el tpl lo podrías usar como {$meta}, que dentro de dicha variable tendrías la etiqueta html. Edited April 22, 2014 by xabikip (see edit history) Link to comment Share on other sites More sharing options...
jesa Posted April 22, 2014 Share Posted April 22, 2014 En muchas ocasiones, para ver donde se carga un .tpl, puede ser util hacer una búsqueda en el código de dicho tpl. En tu caso header.tpl Encontrarás una línea de código como la que indica xabikip o parecida return $this->display(__FILE__, 'tplquequieras.tpl'); Antes de esta línea tendrás que poner el código que quieres codificar para pasar al tpl. Yo lo dejaría así: $urlnoindexacion = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; if (false !== strpos($urlnoindexacion,'media')) { $meta = true; } $this->context->smarty->assign( array( 'meta' => $meta ) ); Y en el header.tpl pondría esto: {if $meta} <meta name="robots" content="noindex"> {/if} Link to comment Share on other sites More sharing options...
Grafeco Posted April 28, 2014 Author Share Posted April 28, 2014 Antes de nada, gracias por vuestra ayuda. No sé si lo estoy entendiendo bien, no tengo ningún controlador que haga referencia al hook_header o a header.tpl Entonces, creo un MetaController.php en el que meto: class MetaControllerCore extends FrontController { $urlnoindexacion = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; if (false !== strpos($urlnoindexacion,'media')) { $meta = true; } $this->context->smarty->assign( array( 'meta' => $meta ) ); public function initContent() { parent::initContent(); $this->context->smarty->assign('HOOK_HEADER', Hook::exec('displayHeader')); $this->setTemplate(_PS_THEME_DIR_.'header.tpl'); } } y después, en header.tpl poner lo siguiente: {if $meta} <meta name="robots" content="noindex"> {/if} ¿ Es así ? Gracias!! Link to comment Share on other sites More sharing options...
Recommended Posts