SergioE Posted August 20, 2016 Share Posted August 20, 2016 (edited) 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 August 24, 2016 by SergioE (see edit history) Link to comment Share on other sites More sharing options...
ventura Posted August 20, 2016 Share Posted August 20, 2016 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 More sharing options...
SergioE Posted August 20, 2016 Author Share Posted August 20, 2016 (edited) Voy a probar y te digo!! Así saldra tal y como he dicho el meta title en google? Es que esta igual a como lo tengo. Gracias Edited August 20, 2016 by SergioE (see edit history) Link to comment Share on other sites More sharing options...
ventura Posted August 20, 2016 Share Posted August 20, 2016 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 More sharing options...
SergioE Posted August 20, 2016 Author Share Posted August 20, 2016 Listo, última pregunta, que pasa si no aparece este archivo en la carpeta que me has dicho? No la tengo :/ cache/class_idex.php Link to comment Share on other sites More sharing options...
ventura Posted August 20, 2016 Share Posted August 20, 2016 Las primeras versiones 1.6 tenian un bug que hacian que el archivo cache/class_index.php no se regenerará correctamente https://www.prestashop.com/forums/topic/349796-performance-hot-fix-please-apply-solved-1609-class-indexphp-has-disappeared/?p=1762987 Link to comment Share on other sites More sharing options...
SergioE Posted August 20, 2016 Author Share Posted August 20, 2016 Entonces que debo hacer? No pasa nada? Link to comment Share on other sites More sharing options...
SergioE Posted August 20, 2016 Author Share Posted August 20, 2016 (edited) 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 August 20, 2016 by SergioE (see edit history) Link to comment Share on other sites More sharing options...
SergioE Posted August 20, 2016 Author Share Posted August 20, 2016 En otras tiendas tengo este, cual es? private function normalizeDirectory($directory) { return rtrim($directory, '/\\').DIRECTORY_SEPARATOR; } Link to comment Share on other sites More sharing options...
ventura Posted August 20, 2016 Share Posted August 20, 2016 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 More sharing options...
SergioE Posted August 20, 2016 Author Share Posted August 20, 2016 Tengo 1.6.0.9, pongo el moderno o el que es mas largo? Gracias ventura Link to comment Share on other sites More sharing options...
ventura Posted August 20, 2016 Share Posted August 20, 2016 El moderno, el ultimo que has puesto Link to comment Share on other sites More sharing options...
SergioE Posted August 21, 2016 Author Share Posted August 21, 2016 No se me regenera el archivo, que tengo que hacer? Link to comment Share on other sites More sharing options...
ventura Posted August 21, 2016 Share Posted August 21, 2016 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 More sharing options...
SergioE Posted August 21, 2016 Author Share Posted August 21, 2016 Gracias, te mantengo informado aver si surten los efectos! Link to comment Share on other sites More sharing options...
SergioE Posted August 22, 2016 Author Share Posted August 22, 2016 Listo funciona, gracias veentura! Link to comment Share on other sites More sharing options...
ventura Posted August 22, 2016 Share Posted August 22, 2016 Me alegro. Un saludo. Link to comment Share on other sites More sharing options...
SergioE Posted August 24, 2016 Author Share Posted August 24, 2016 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 More sharing options...
SergioE Posted September 1, 2016 Author Share Posted September 1, 2016 Sigue igual, aparece a veces delante el nombre de la tienda y a veces detrás. no entiendo nada Ayuda please Saludos Link to comment Share on other sites More sharing options...
SergioE Posted September 2, 2016 Author Share Posted September 2, 2016 nadie? Link to comment Share on other sites More sharing options...
SergioE Posted September 5, 2016 Author Share Posted September 5, 2016 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 More sharing options...
ventura Posted September 5, 2016 Share Posted September 5, 2016 segun ese overrride que tienes , no te deberia aparecer el nombre de la tienda por ninguna parte Link to comment Share on other sites More sharing options...
SergioE Posted September 5, 2016 Author Share Posted September 5, 2016 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 More sharing options...
ventura Posted September 5, 2016 Share Posted September 5, 2016 Debe de estar la funcion completa con la edicion de la parte del nombre de la pagina. Prueba editando la classe a ver si te funciona y luego haces el override Link to comment Share on other sites More sharing options...
SergioE Posted September 5, 2016 Author Share Posted September 5, 2016 No entiendo los pasos ventura, que función tengo que dejar pues? Y que va en cada Meta? Me estoy haciendo un lio. Gracias Link to comment Share on other sites More sharing options...
ventura Posted September 5, 2016 Share Posted September 5, 2016 Puedes empezar por aqui como hemos hecho muchos http://doc.prestashop.com/display/PS16/Overriding+default+behaviors Link to comment Share on other sites More sharing options...
SergioE Posted September 5, 2016 Author Share Posted September 5, 2016 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 More sharing options...
SergioE Posted September 5, 2016 Author Share Posted September 5, 2016 Solo tengo que hacer la modificación del metodo getHomeMetas, no? Que es el meta-title de la pagina index. El resto no quiero quitarlo el nombre de la tienda. Link to comment Share on other sites More sharing options...
ventura Posted September 5, 2016 Share Posted September 5, 2016 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 More sharing options...
SergioE Posted September 5, 2016 Author Share Posted September 5, 2016 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 More sharing options...
ventura Posted September 5, 2016 Share Posted September 5, 2016 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 More sharing options...
SergioE Posted September 6, 2016 Author Share Posted September 6, 2016 (edited) 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 September 6, 2016 by SergioE (see edit history) Link to comment Share on other sites More sharing options...
SergioE Posted September 8, 2016 Author Share Posted September 8, 2016 No tiene solucion? -.- Link to comment Share on other sites More sharing options...
SergioE Posted September 30, 2016 Author Share Posted September 30, 2016 Lo he intentado de todas las maneras, y es impossible, me lo mantiene un tiempo y luego vuelve a estar como antes... tan dificil es? Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now