Jump to content

PHP en TPL


Grafeco

Recommended Posts

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

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 by xabikip (see edit history)
Link to comment
Share on other sites

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

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

Guest
This topic is now closed to further replies.
×
×
  • Create New...