Jump to content

Cambiar orden Titulo Pagina (index) "getHomeMetas"


SergioE

Recommended Posts

Buenas, he visto muchos post para quitar el nombre de la tienda en la función Meta.php de /classes..

 

Pero antes que quitarlo prefiero cambiar el orden de como sale, ahora mismo esta así: Nombre Tienda + Titulo página (index).

public static function getHomeMetas($id_lang, $page_name)
	{
		$metas = Meta::getMetaByPage($page_name, $id_lang);
		$ret['meta_title'] = (isset($metas['title']) && $metas['title']) ? $metas['title'].' - '.Configuration::get('PS_SHOP_NAME') : Configuration::get('PS_SHOP_NAME');
		$ret['meta_description'] = (isset($metas['description']) && $metas['description']) ? $metas['description'] : '';
		$ret['meta_keywords'] = (isset($metas['keywords']) && $metas['keywords']) ? $metas['keywords'] :  '';
		return $ret;
	}

Y quiero dejarlo así: Titulo página (index) - Nombre Tienda

 

No se si es mejor quitar el nombre de la tienda directamente del Meta y poner en el titulo de la pagina como lo quiero dejar. Aparte que dicen de crear otro archivo en el override/classes para no machacar el original. Pero no entiendo esa parte, que es, copiar y pegar el archivo tan solo cambiando esa parte? O copiar solamente esa función?

 

Saludos

 

 

 

 

 

Edited by SergioE (see edit history)
Link to comment
Share on other sites

Para crear un override de una classe tienes que crear un archivo que lo sobreescriba añadiendo o modificante una clase existente, ejemplo

<?php

class Meta extends MetaCore
{
public static function getHomeMetas($id_lang, $page_name)
	{
		$metas = Meta::getMetaByPage($page_name, $id_lang);
		$ret['meta_title'] = (isset($metas['title']) && $metas['title']) ? $metas['title'].' - '.Configuration::get('PS_SHOP_NAME') : Configuration::get('PS_SHOP_NAME');
		$ret['meta_description'] = (isset($metas['description']) && $metas['description']) ? $metas['description'] : '';
		$ret['meta_keywords'] = (isset($metas['keywords']) && $metas['keywords']) ? $metas['keywords'] :  '';
		return $ret;
	}

		
}

Alojarlo en la ruta 

override/classes/

Y por ultimo eliminar el archivo 

cache/class_index.php

para que se vuelga a regenerar con los cambios añadidos

Link to comment
Share on other sites

Si, era un ejemplo para hacer el override  de una funcion en una classe. Deja la linea del metatitulo asi

$ret['meta_title'] = (isset($metas['title']) && $metas['title']) ? Configuration::get('PS_SHOP_NAME').' - '.$metas['title'] : Configuration::get('PS_SHOP_NAME');
Link to comment
Share on other sites

Substituyo este archivo por el mío?

 

https://github.com/PrestaShop/PrestaShop/blob/8288a6fffa0eb7a42b280298f798ff9292dd7be3/classes/PrestaShopAutoload.php

 

Que viene a ser esta función:

private function normalizeDirectory($directory)
	{
		$last = $directory[strlen($directory) - 1];
		if (in_array($last, array('/', '\\')))
		{
			$directory[strlen($directory) - 1] = DIRECTORY_SEPARATOR;
			return $directory;
		}
		$directory .= DIRECTORY_SEPARATOR;
		return $directory;
	}
Edited by SergioE (see edit history)
Link to comment
Share on other sites

Como te comentaba antes, depende de la version de Prestashop que tengas instalada, si es una version de las primeras de la 1.6, 1.6.0.9 por ejemplo, es posible que se deba a ese bug que te comentaba. Si tienes una version mas moderna no deberias de tener problemas con esto.

Si cambias el archi

 

 

En otras tiendas tengo este, cual es?

 private function normalizeDirectory($directory)
    {
        return rtrim($directory, '/\\').DIRECTORY_SEPARATOR;
    }

Este es el de la versiones modernas. Con este no deberias tener problemas

Link to comment
Share on other sites

Bajate la version que tengas instalada de aqui

https://www.prestashop.com/es/versiones-para-programadores

y sube a tu instalacion el archivo

cache/class_index.php

con eso ya te lo tendrás pero necesitas que se regenere incluyendo los cambios que añadas, los overrides

Luego reemplaza la classe

classes/PrestaShopAutoload.php

 por esta

https://github.com/PrestaShop/PrestaShop/blob/8288a6fffa0eb7a42b280298f798ff9292dd7be3/classes/PrestaShopAutoload.php

Link to comment
Share on other sites

Ventura he quitado el solucionado porque me dado cuenta de que aún me sigue saliendo el nombre de la tienda primero antes que el meta-title (index).

 

A veces me sale primero tal con el nombre de la tienda al final pero ahora veo que se ha vuelto a cambiar y no se porque, a ver si me puedes ayudar!

 

Gracias

Link to comment
Share on other sites

  • 2 weeks later...

Me sigue apareciendo el nombre de la tienda al principio, y eso que en el meta title de index tengo puesto el nombre de la tienda al final... tengo el meta.php duplicado en /override/classes, con solo esto diferente: 

 public static function getHomeMetas($id_lang, $page_name)
    {
        $metas = Meta::getMetaByPage($page_name, $id_lang);
		$ret['meta_title'] = (isset($metas['title']) && $metas['title']) ? $metas['title'] : '';
		$ret['meta_description'] = (isset($metas['description']) && $metas['description']) ? $metas['description'] : '';
		$ret['meta_keywords'] = (isset($metas['keywords']) && $metas['keywords']) ? $metas['keywords'] :  '';
		return $ret;
    }

Que tengo mal?

Link to comment
Share on other sites

Tengo que tener el archivo meta.php con solo eso? O todo lo del Meta de /classes pero modificando solo eso?

 

Ahora mismo en el meta.php de /override/classes solo tengo este codigo:

<?php
 
class Meta extends MetaCore
{
public static function getHomeMetas($id_lang, $page_name)
{
	$metas = Meta::getMetaByPage($page_name, $id_lang);
	$ret['meta_title'] = (isset($metas['title']) && $metas['title']) ? $metas['title'] : '';
	$ret['meta_description'] = (isset($metas['description']) && $metas['description']) ? $metas['description'] : '';
	$ret['meta_keywords'] = (isset($metas['keywords']) && $metas['keywords']) ? $metas['keywords'] :  '';
	return $ret;
}

}

En el momento que te dije que funcionaba es porque me salía, dos o tres días después me volvió salir con el nombre...

Link to comment
Share on other sites

Con eso llego a la conclusión de lo que tengo en mi archivo override/classes --> Meta.php esta bien:

<?php
 
class Meta extends MetaCore
{
public static function getHomeMetas($id_lang, $page_name)
{
	$metas = Meta::getMetaByPage($page_name, $id_lang);
	$ret['meta_title'] = (isset($metas['title']) && $metas['title']) ? $metas['title'] : '';
	$ret['meta_description'] = (isset($metas['description']) && $metas['description']) ? $metas['description'] : '';
	$ret['meta_keywords'] = (isset($metas['keywords']) && $metas['keywords']) ? $metas['keywords'] :  '';
	return $ret;
}

}

No veo donde está el fallo.

 

A que te refieres cuando dices " con la edicion de la parte del nombre de la pagina "??

Link to comment
Share on other sites

Buenas, he visto muchos post para quitar el nombre de la tienda en la función Meta.php de /classes..

 

Pero antes que quitarlo prefiero cambiar el orden de como sale, ahora mismo esta así: Nombre Tienda + Titulo página (index).

public static function getHomeMetas($id_lang, $page_name)
	{
		$metas = Meta::getMetaByPage($page_name, $id_lang);
		$ret['meta_title'] = (isset($metas['title']) && $metas['title']) ? $metas['title'].' - '.Configuration::get('PS_SHOP_NAME') : Configuration::get('PS_SHOP_NAME');
		$ret['meta_description'] = (isset($metas['description']) && $metas['description']) ? $metas['description'] : '';
		$ret['meta_keywords'] = (isset($metas['keywords']) && $metas['keywords']) ? $metas['keywords'] :  '';
		return $ret;
	}

Y quiero dejarlo así: Titulo página (index) - Nombre Tienda

 

No se si es mejor quitar el nombre de la tienda directamente del Meta y poner en el titulo de la pagina como lo quiero dejar. Aparte que dicen de crear otro archivo en el override/classes para no machacar el original. Pero no entiendo esa parte, que es, copiar y pegar el archivo tan solo cambiando esa parte? O copiar solamente esa función?

 

Saludos

aqui no dices que quieres quitar el nombre de la pagina, sino cambiarlo de orden, es lo que dice el titulo del hilo. De ahi lo del nombre de la tienda en el override, pero vamos que tengo la sensación de que ya me perdi

Link to comment
Share on other sites

En teoria da lo mismo, lo que quiero es que salga el meta título antes que el nombre de la tienda, y en todos los posts salen las soluciones para quitar directamente el nombre... y al final dije de hacerlo así, pero tienes razon, en el titulo pone cambiar orden, quizás me exprese mal, disculpas.

 

Quedemos ahora en que para cambiar el orden, cual es el codigo que hay que poner partiendo de este que es el original?

		$ret['meta_title'] = (isset($metas['title']) && $metas['title']) ? $metas['title'].' - '.Configuration::get('PS_SHOP_NAME') : Configuration::get('PS_SHOP_NAME');

Gracias ventura

Link to comment
Share on other sites

Asi es, con ese codigo en caso de tener completado el campo de metatitulo del index mostrara el metatitulo, (-) y  despues el nombre  de la pagina, en caso de no tener el campo completado mostrara solo el nombre de la pagina, es el orden que aparece por defecto y como te deberia de aparecer si no tienes ninguna modificacion, en modulo o plantilla

Link to comment
Share on other sites

Así es como esta en 3 tiendas que tengo diferentes, y el nombre de la tienda sale antes.

 

No se porque puede ser tan complicado algo como cambiar ese orden, el codigo mismo lo dice, que salga el meta titulo, luego el ' - ' , y el nombre tienda, pero es que en ninguna tienda sale despues el nombre.. no lo entiendo

$ret['meta_title'] = (isset($metas['title']) && $metas['title']) ? $metas['title'].' - '.Configuration::get('PS_SHOP_NAME') : Configuration::get('PS_SHOP_NAME');
Edited by SergioE (see edit history)
Link to comment
Share on other sites

  • 4 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...