Rubén Posted May 25, 2013 Share Posted May 25, 2013 (edited) Buenos días a todos: Quería enseñaros la siguiente plantilla (http://warehouse.iqit-commerce.com/en/ ) Como veis tiene un módulo de búsqueda IMPRESIONANTE, estoy tratando de adaptarlo, si lo consigo lo paso por aquí. Un saludo Edited May 27, 2013 by Rubén (see edit history) Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Buenas de nuevo Rubén, esto es sencillo en prinsipio. Tan solo es darle la imagen al resultado del autocomplete... Es el módulo blocksearch que trae el presta de base... Hoy no creo que pueda, pero lo hecharé un vistazo... Saludos Mmmmm, voy a ello Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Arggg, ya sé que códigos hay que poner (en principio) pero no puedo adaptarlos porque tengo el menu horizontal que no usa AJAX Link to comment Share on other sites More sharing options...
nadie Posted May 25, 2013 Share Posted May 25, 2013 Buenas de nuevo Rubén, esto es sencillo en prinsipio. Tan solo es darle la imagen al resultado del autocomplete... Es el módulo blocksearch que trae el presta de base... Hoy no creo que pueda, pero lo hecharé un vistazo... Saludos Aporte gratuito: http://www.prestashop.com/forums/topic/237306-show-product-image-in-search-results-while-searching/ (No lo he probado, a ver...) 1 Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 No entiendo su funcionamiento, nos hechas una manita? Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Es decir, como lo acoplo al menu que tengo? Ya se que si fuese la búsqueda normal con sustituir bastaría, pero en el caso de que la gente tenga como yo el buscador del menu por defecto... Link to comment Share on other sites More sharing options...
nadie Posted May 25, 2013 Share Posted May 25, 2013 Es decir, como lo acoplo al menu que tengo? Ya se que si fuese la búsqueda normal con sustituir bastaría, pero en el caso de que la gente tenga como yo el buscador del menu por defecto... Desactiva el buscador del menu, y acopla el otro buscador encima del menu. No entiendo su funcionamiento, nos hechas una manita? http://www.prestashop.com/forums/index.php?/topic/237306-show-product-image-in-search-results-while-searching/page__view__findpost__p__1172213 Aqui hay un paquete de descarga, dicen que funciona con la 1.5.4, pero vamos estoy con 44 de fiebre, y tampoco puedo mirarlo con calma. 1 Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Desactiva el buscador del menu, y acopla el otro buscador encima del menu. http://www.prestasho...ost__p__1172213 Aqui hay un paquete de descarga, dicen que funciona con la 1.5.4, pero vamos estoy con 44 de fiebre, y tampoco puedo mirarlo con calma. Pues tio, vete a descansar, yo me ocupo de la moderación del foro (represión a rubalcaba) Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Todo acoplado (como veis no genera error) pero no funciona Link to comment Share on other sites More sharing options...
nadie Posted May 25, 2013 Share Posted May 25, 2013 Todo acoplado (como veis no genera error) pero no funciona En las instrucciones del aporte que te he dicho, dicen que tienes que crear un nuevo tipo de imagen llamada "mini" en la pestaña Preferencias -> Imagenes 1 Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Sigue sin funcionar, es más, no es la imagen es que directamente no coge ni ajax ni na de na Link to comment Share on other sites More sharing options...
nadie Posted May 25, 2013 Share Posted May 25, 2013 Sigue sin funcionar, es más, no es la imagen es que directamente no coge ni ajax ni na de na Estoy probandolo yo ahora. Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Estoy probandolo yo ahora. Pero si te encuentras mal déjalo, no tienes por que hacerlo tío, descansa Link to comment Share on other sites More sharing options...
nadie Posted May 25, 2013 Share Posted May 25, 2013 Pero si te encuentras mal déjalo, no tienes por que hacerlo tío, descansa A mi me funciona, entre comillas, hace el intento de cojer las imagenes, pero no obtiene la ruta bien... (Sigo viendo) 1 Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 (edited) pero como? Yo lo que he hecho ha sido copiar el código y reemplazar el que venía en el menú por defecto y copiar el search.php en classes, además he pasado todos los archivos del bloque search a tophorizontalmenu Edited May 25, 2013 by Rubén (see edit history) Link to comment Share on other sites More sharing options...
nadie Posted May 25, 2013 Share Posted May 25, 2013 Por cierto, te digo como colocar el bloque de busqueda de la cabecera en el menu horizontal, depende usar el bloque de busqueda que lleva el mismo menu. Instalas el modulo logicamente... Te vas al: modules/blocksearch/blocksearch.css Buscas algo como esto: #search_block_top { position: absolute; right: 26%; top: 34px; } Cuanto mas alto el "top", mas para abajo bajaras el buscador. Cuanto menos "right", mas a la derecha se situara. Luego, para cambiar el ancho del buscador en el mismo fichero, busca esto: #search_block_top #search_query_top { padding: 0 5px; height: 23px; width: 300px; border: 1px solid #666; border-right: 0 !important; color: #666; background: url(img/bg_search_input.png) repeat-x 0 0 #fff; float: left; } Y cambia el "width:300px" a un numero inferior. 1 Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Por cierto, te digo como colocar el bloque de busqueda de la cabecera en el menu horizontal, depende usar el bloque de busqueda que lleva el mismo menu. Instalas el modulo logicamente... Te vas al: modules/blocksearch/blocksearch.css Buscas algo como esto: #search_block_top { position: absolute; right: 26%; top: 34px; } Cuanto mas alto el "top", mas para abajo bajaras el buscador. Cuanto menos "right", mas a la derecha se situara. Luego, para cambiar el ancho del buscador en el mismo fichero, busca esto: #search_block_top #search_query_top { padding: 0 5px; height: 23px; width: 300px; border: 1px solid #666; border-right: 0 !important; color: #666; background: url(img/bg_search_input.png) repeat-x 0 0 #fff; float: left; } Y cambia el "width:300px" a un numero inferior. Ya tio, pero no quiero hacer eso porque después se me descuadrara todo con la mala pata que tengo, estoy intentando fusionar las dos cosas, el menu y su busqueda con el bloque search Link to comment Share on other sites More sharing options...
nadie Posted May 25, 2013 Share Posted May 25, 2013 Ya tio, pero no quiero hacer eso porque después se me descuadrara todo con la mala pata que tengo, estoy intentando fusionar las dos cosas, el menu y su busqueda con el bloque search No se te descuadra. (El bloque de busqueda rapida, se mueve con la position relative, no se deberia descuadrar) 1 Link to comment Share on other sites More sharing options...
nadie Posted May 25, 2013 Share Posted May 25, 2013 Quitas el bloque de busqueda del menu. Haces lo que te he dicho para mover el bloque de busqueda rapida y vas cuadrando el top y el right para que quede en el menu. (Yo lo he probado en una simulacion en tu tienda, y no parece que se descuadre) 1 Link to comment Share on other sites More sharing options...
nadie Posted May 25, 2013 Share Posted May 25, 2013 Prueba lo que dice Statictic y hazme saber si todo ha ido bien. Yo me voy a la cama directo.. (fiebre) Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 (edited) Buenas de nuevo, para no depender del blocksearch yo lo hago de esta manera para añadirle el autocomplete a la caja de busqueda del menu... Añado la llamada del plugin y del css a la función hookHeader del blocksearch.php if (Configuration::get('PS_SEARCH_AJAX')) { $this->context->controller->addJqueryPlugin('autocomplete'); } Le doy un id al input que tiene el tipo search. Digamos id="encuentrame-search-query" y le añado este script jquery con el if para el $ajaxsearch: {if $ajaxsearch} <script type="text/javascript"> // <![CDATA[ $('document').ready( function() { $("#encuentrame-search-query").autocomplete( '{if $search_ssl == 1}{$link->getPageLink('search', true)}{else}{$link->getPageLink('search')}{/if}', { minChars: 3, max: 10, width: 250, selectFirst: false, scroll: true, dataType: "json", inputClass: "ac-input", resultsClass: "ac-results", loadingClass: "ac-loading", formatItem: function(data, i, max, value, term) { return value; }, parse: function(data) { var mytab = new Array(); for (var i = 0; i < data.length; i++) mytab[mytab.length] = { data: data[i], value: data[i].cname + ' > ' + data[i].pname }; return mytab; }, extraParams: { ajaxSearch: 1, id_lang: {$cookie->id_lang} } } ) .result(function(event, data, formatted) { $('#encuentrame-search-query').val(data.pname); document.location.href = data.product_link; }) }); // ]]> </script> {/if} Y ya tenemos la caja con autocomplete sin la dependencia del blocksearch... Un saludo He dejado el primer php así: public function hookHeader($params) { if (Configuration::get('PS_SEARCH_AJAX')) $this->context->controller->addJqueryPlugin('autocomplete'); $this->context->controller->addCSS(_THEME_CSS_DIR_.'product_list.css'); $this->context->controller->addCSS(($this->_path).'blocksearch.css', 'all'); if (Configuration::get('PS_SEARCH_AJAX')) $this->context->controller->addJqueryPlugin('autocomplete'); } Y el input que hace búsqueda así: {if $MENU_SEARCH} <li class="sf-search noBack" style="float:right"> <form id="searchbox" action="{$link->getPageLink('search')}" method="get"> <p> <input type="hidden" name="controller" value="search" /> <input type="hidden" value="position" name="orderby"/> <input type="hidden" value="desc" name="orderway"/> <input type="text" name="search_query" value="Busca tu producto" onFocus="if (this.value=='Busca tu producto') this.value='';" {if $ajaxsearch} <script type="text/javascript"> // <![CDATA[ $('document').ready( function() { $("#encuentrame-search-query").autocomplete( '{if $search_ssl == 1}{$link->getPageLink('search', true)}{else}{$link->getPageLink('search')}{/if}', { minChars: 3, max: 10, width: 250, selectFirst: false, scroll: true, dataType: "json", inputClass: "ac-input", resultsClass: "ac-results", loadingClass: "ac-loading", formatItem: function(data, i, max, value, term) { return value; }, parse: function(data) { var mytab = new Array(); for (var i = 0; i < data.length; i++) mytab[mytab.length] = { data: data[i], value: data[i].cname + ' > ' + data[i].pname }; return mytab; }, extraParams: { ajaxSearch: 1, id_lang: {$cookie->id_lang} } } ) .result(function(event, data, formatted) { $('#encuentrame-search-query').val(data.pname); document.location.href = data.product_link; }) }); // ]]> </script> {/if}/> </p> </form> </li> {/if} Edited May 25, 2013 by Rubén (see edit history) Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 (edited) Vale, eso que has cambiado se pone arriba del todo o se debe quedar en el input? Vale, ahora vuelve a ir la web ultra lenta, tendré un problema con ese tipo de búsqueda Edited May 25, 2013 by Rubén (see edit history) Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Chicos, que si quereis los archivos os los regalo :) Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Eso digo yo, y para facilitar a todos las cosas porque no dejamos unos archivos de ejemplo subidos, cuando esto esté añadiré el código de las imágenes y esto se podrá poner como aporte Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Te copio el código tal cual del blocktopmenu.php <?php /* * 2007-2013 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Academic Free License (AFL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/afl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to [email protected] so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA <[email protected]> * @copyright 2007-2013 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ require (dirname(__FILE__).'/menutoplinks.class.php'); class Blocktopmenu extends Module { private $_menu = ''; private $_html = ''; private $user_groups; /* * Pattern for matching config values */ private $pattern = '/^([A-Z_]*)[0-9]+/'; /* * Name of the controller * Used to set item selected or not in top menu */ private $page_name = ''; /* * Spaces per depth in BO */ private $spacer_size = '5'; public function __construct() { $this->name = 'blocktopmenu'; $this->tab = 'front_office_features'; $this->version = 1.5; $this->author = 'PrestaShop'; parent::__construct(); $this->displayName = $this->l('Top horizontal menu'); $this->description = $this->l('Add a new horizontal menu to the top of your e-commerce website.'); } public function install() { if (!parent::install() || !$this->registerHook('displayTop') || !Configuration::updateGlobalValue('MOD_BLOCKTOPMENU_ITEMS', 'CAT1,CMS1,CMS2,PRD1') || !Configuration::updateGlobalValue('MOD_BLOCKTOPMENU_SEARCH', '1') || !$this->registerHook('actionObjectCategoryUpdateAfter') || !$this->registerHook('actionObjectCategoryDeleteAfter') || !$this->registerHook('actionObjectCmsUpdateAfter') || !$this->registerHook('actionObjectCmsDeleteAfter') || !$this->registerHook('actionObjectSupplierUpdateAfter') || !$this->registerHook('actionObjectSupplierDeleteAfter') || !$this->registerHook('actionObjectManufacturerUpdateAfter') || !$this->registerHook('actionObjectManufacturerDeleteAfter') || !$this->registerHook('actionObjectProductUpdateAfter') || !$this->registerHook('actionObjectProductDeleteAfter') || !$this->registerHook('categoryUpdate') || !$this->registerHook('actionShopDataDuplication') || !$this->installDB()) return false; return true; } public function installDb() { return (Db::getInstance()->execute(' CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'linksmenutop` ( `id_linksmenutop` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, `id_shop` INT UNSIGNED NOT NULL, `new_window` TINYINT( 1 ) NOT NULL, INDEX (`id_shop`) ) ENGINE = '._MYSQL_ENGINE_.' CHARACTER SET utf8 COLLATE utf8_general_ci;') && Db::getInstance()->execute(' CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'linksmenutop_lang` ( `id_linksmenutop` INT NOT NULL, `id_lang` INT NOT NULL, `id_shop` INT NOT NULL, `label` VARCHAR( 128 ) NOT NULL , `link` VARCHAR( 128 ) NOT NULL , INDEX ( `id_linksmenutop` , `id_lang`, `id_shop`) ) ENGINE = '._MYSQL_ENGINE_.' CHARACTER SET utf8 COLLATE utf8_general_ci;')); } public function uninstall() { if (!parent::uninstall() || !Configuration::deleteByName('MOD_BLOCKTOPMENU_ITEMS') || !Configuration::deleteByName('MOD_BLOCKTOPMENU_SEARCH') || !$this->uninstallDB()) return false; return true; } private function uninstallDb() { Db::getInstance()->execute('DROP TABLE `'._DB_PREFIX_.'linksmenutop`'); Db::getInstance()->execute('DROP TABLE `'._DB_PREFIX_.'linksmenutop_lang`'); return true; } public function getContent() { $id_lang = (int)Context::getContext()->language->id; $languages = $this->context->controller->getLanguages(); $default_language = (int)Configuration::get('PS_LANG_DEFAULT'); $labels = Tools::getValue('label') ? array_filter(Tools::getValue('label'), 'strlen') : array(); $links_label = Tools::getValue('link') ? array_filter(Tools::getValue('link'), 'strlen') : array(); $spacer = str_repeat(' ', $this->spacer_size); $divLangName = 'link_label'; $update_cache = false; if (Tools::isSubmit('submitBlocktopmenu')) { if (Configuration::updateValue('MOD_BLOCKTOPMENU_ITEMS', Tools::getValue('items'))) $this->_html .= $this->displayConfirmation($this->l('The settings have been updated.')); else $this->_html .= $this->displayError($this->l('Unable to update settings.')); Configuration::updateValue('MOD_BLOCKTOPMENU_SEARCH', (bool)Tools::getValue('search')); $update_cache = true; } else if (Tools::isSubmit('submitBlocktopmenuLinks')) { if ((!count($links_label)) && (!count($labels))) ; else if (!count($links_label)) $this->_html .= $this->displayError($this->l('Please complete the "link" field.')); else if (!count($labels)) $this->_html .= $this->displayError($this->l('Please add a label')); else if (!isset($labels[$default_language])) $this->_html .= $this->displayError($this->l('Please add a label for your default language.')); else { MenuTopLinks::add(Tools::getValue('link'), Tools::getValue('label'), Tools::getValue('new_window', 0), (int)Shop::getContextShopID()); $this->_html .= $this->displayConfirmation($this->l('The link has been added.')); } $update_cache = true; } else if (Tools::isSubmit('submitBlocktopmenuRemove')) { $id_linksmenutop = Tools::getValue('id_linksmenutop', 0); MenuTopLinks::remove($id_linksmenutop, (int)Shop::getContextShopID()); Configuration::updateValue('MOD_BLOCKTOPMENU_ITEMS', str_replace(array('LNK'.$id_linksmenutop.',', 'LNK'.$id_linksmenutop), '', Configuration::get('MOD_BLOCKTOPMENU_ITEMS'))); $this->_html .= $this->displayConfirmation($this->l('The link has been removed')); $update_cache = true; } else if (Tools::isSubmit('submitBlocktopmenuEdit')) { $id_linksmenutop = (int)Tools::getValue('id_linksmenutop', 0); $id_shop = (int)Shop::getContextShopID(); if (!Tools::isSubmit('link')) { $tmp = MenuTopLinks::getLinkLang($id_linksmenutop, $id_shop); $links_label_edit = $tmp['link']; $labels_edit = $tmp['label']; $new_window_edit = $tmp['new_window']; } else { MenuTopLinks::update(Tools::getValue('link'), Tools::getValue('label'), Tools::getValue('new_window', 0), (int)$id_shop, (int)$id_linksmenutop, (int)$id_linksmenutop); $this->_html .= $this->displayConfirmation($this->l('The link has been edited')); } $update_cache = true; } if ($update_cache) $this->clearMenuCache(); $this->_html .= ' <fieldset> <div class="multishop_info"> '.$this->l('The modifications will be applied to').' '.(Shop::getContext() == Shop::CONTEXT_SHOP ? $this->l('shop').' '.$this->context->shop->name : $this->l('all shops')).'. </div> <legend><img src="'.$this->_path.'logo.gif" alt="" title="" />'.$this->l('Settings').'</legend> <form action="'.Tools::safeOutput($_SERVER['REQUEST_URI']).'" method="post" id="form"> <div style="display: none"> <label>'.$this->l('Items').'</label> <div class="margin-form"> <input type="text" name="items" id="itemsInput" value="'.Tools::safeOutput(Configuration::get('MOD_BLOCKTOPMENU_ITEMS')).'" size="70" /> </div> </div> <div class="clear"> </div> <table style="margin-left: 130px;"> <tbody> <tr> <td style="padding-left: 20px;"> <select multiple="multiple" id="availableItems" style="width: 300px; height: 160px;">'; // BEGIN CMS $this->_html .= '<optgroup label="'.$this->l('CMS').'">'; $this->getCMSOptions(0, 1, $id_lang); $this->_html .= '</optgroup>'; // BEGIN SUPPLIER $this->_html .= '<optgroup label="'.$this->l('Supplier').'">'; $suppliers = Supplier::getSuppliers(false, $id_lang); foreach ($suppliers as $supplier) $this->_html .= '<option value="SUP'.$supplier['id_supplier'].'">'.$spacer.$supplier['name'].'</option>'; $this->_html .= '</optgroup>'; // BEGIN Manufacturer $this->_html .= '<optgroup label="'.$this->l('Manufacturer').'">'; $manufacturers = Manufacturer::getManufacturers(false, $id_lang); foreach ($manufacturers as $manufacturer) $this->_html .= '<option value="MAN'.$manufacturer['id_manufacturer'].'">'.$spacer.$manufacturer['name'].'</option>'; $this->_html .= '</optgroup>'; // BEGIN Categories $this->_html .= '<optgroup label="'.$this->l('Categories').'">'; $this->getCategoryOption(1, (int)$id_lang, (int)Shop::getContextShopID()); $this->_html .= '</optgroup>'; // BEGIN Shops if (Shop::isFeatureActive()) { $this->_html .= '<optgroup label="'.$this->l('Shops').'">'; $shops = Shop::getShopsCollection(); foreach ($shops as $shop) { if (!$shop->setUrl() && !$shop->getBaseURL()) continue; $this->_html .= '<option value="SHOP'.(int)$shop->id.'">'.$spacer.$shop->name.'</option>'; } $this->_html .= '</optgroup>'; } // BEGIN Products $this->_html .= '<optgroup label="'.$this->l('Products').'">'; $this->_html .= '<option value="PRODUCT" style="font-style:italic">'.$spacer.$this->l('Choose product ID').'</option>'; $this->_html .= '</optgroup>'; // BEGIN Menu Top Links $this->_html .= '<optgroup label="'.$this->l('Menu Top Links').'">'; $links = MenuTopLinks::gets($id_lang, null, (int)Shop::getContextShopID()); foreach ($links as $link) { if ($link['label'] == '') { $link = MenuTopLinks::get($link['id_linksmenutop'], $default_language, (int)Shop::getContextShopID()); $this->_html .= '<option value="LNK'.(int)$link[0]['id_linksmenutop'].'">'.$spacer.$link[0]['label'].'</option>'; } else $this->_html .= '<option value="LNK'.(int)$link['id_linksmenutop'].'">'.$spacer.$link['label'].'</option>'; } $this->_html .= '</optgroup>'; $this->_html .= '</select><br /> <br /> <a href="#" id="addItem" style="border: 1px solid rgb(170, 170, 170); margin: 2px; padding: 2px; text-align: center; display: block; text-decoration: none; background-color: rgb(250, 250, 250); color: rgb(18, 52, 86);">'.$this->l('Add').' >></a> </td> <td> <select multiple="multiple" id="items" style="width: 300px; height: 160px;">'; $this->makeMenuOption(); $this->_html .= '</select><br/> <br/> <a href="#" id="removeItem" style="border: 1px solid rgb(170, 170, 170); margin: 2px; padding: 2px; text-align: center; display: block; text-decoration: none; background-color: rgb(250, 250, 250); color: rgb(18, 52, 86);"><< '.$this->l('Remove').'</a> </td> </tr> </tbody> </table> <div class="clear"> </div> <script type="text/javascript"> $(document).ready(function(){ $("#addItem").click(add); $("#availableItems").dblclick(add); $("#removeItem").click(remove); $("#items").dblclick(remove); function add() { $("#availableItems option:selected").each(function(i){ var val = $(this).val(); var text = $(this).text(); text = text.replace(/(^\s*)|(\s*$)/gi,""); if (val == "PRODUCT") { val = prompt("'.$this->l('Set ID product').'"); if (val == null || val == "" || isNaN(val)) return; text = "'.$this->l('Product ID').' "+val; val = "PRD"+val; } $("#items").append("<option value=\""+val+"\">"+text+"</option>"); }); serialize(); return false; } function remove() { $("#items option:selected").each(function(i){ $(this).remove(); }); serialize(); return false; } function serialize() { var options = ""; $("#items option").each(function(i){ options += $(this).val()+","; }); $("#itemsInput").val(options.substr(0, options.length - 1)); } }); </script> <label for="s">'.$this->l('Search Bar').'</label> <div class="margin-form"> <input type="checkbox" name="search" id="s" value="1"'.((Configuration::get('MOD_BLOCKTOPMENU_SEARCH')) ? ' checked=""': '').'/> </div> <p class="center"> <input type="submit" name="submitBlocktopmenu" value="'.$this->l('Save ').'" class="button" /> </p> </form> </fieldset><br />'; $this->_html .= ' <fieldset> <legend><img src="../img/admin/add.gif" alt="" title="" />'.$this->l('Add Menu Top Link').'</legend> <form action="'.Tools::safeOutput($_SERVER['REQUEST_URI']).'" method="post" id="form"> '; foreach ($languages as $language) { $this->_html .= ' <div id="link_label_'.(int)$language['id_lang'].'" style="display: '.($language['id_lang'] == $id_lang ? 'block' : 'none').';"> <label>'.$this->l('Label').'</label> <div class="margin-form"> <input type="text" name="label['.(int)$language['id_lang'].']" id="label_'.(int)$language['id_lang'].'" size="70" value="'.(isset($labels_edit[$language['id_lang']]) ? Tools::safeOutput($labels_edit[$language['id_lang']]) : '').'" /> </div> '; $this->_html .= ' <label>'.$this->l('Link').'</label> <div class="margin-form"> <input type="text" name="link['.(int)$language['id_lang'].']" id="link_'.(int)$language['id_lang'].'" value="'.(isset($links_label_edit[$language['id_lang']]) ? Tools::safeOutput($links_label_edit[$language['id_lang']]) : '').'" size="70" /> </div> </div>'; } $this->_html .= '<label>'.$this->l('Language').'</label> <div class="margin-form">'.$this->displayFlags($languages, (int)$id_lang, $divLangName, 'link_label', true).'</div><p style="clear: both;"> </p>'; $this->_html .= '<label style="clear: both;">'.$this->l('New Window').'</label> <div class="margin-form"> <input style="clear: both;" type="checkbox" name="new_window" value="1" '.(isset($new_window_edit) && $new_window_edit ? 'checked' : '').'/> </div> <div class="margin-form">'; if (Tools::isSubmit('id_linksmenutop')) $this->_html .= '<input type="hidden" name="id_linksmenutop" value="'.(int)Tools::getValue('id_linksmenutop').'" />'; if (Tools::isSubmit('submitBlocktopmenuEdit')) $this->_html .= '<input type="submit" name="submitBlocktopmenuEdit" value="'.$this->l('Edit').'" class="button" />'; $this->_html .= ' <input type="submit" name="submitBlocktopmenuLinks" value="'.$this->l('Add ').'" class="button" /> </div> </form> </fieldset><br />'; $links = MenuTopLinks::gets((int)$id_lang, null, (int)Shop::getContextShopID()); if (!count($links)) return $this->_html; $this->_html .= ' <fieldset> <legend><img src="../img/admin/details.gif" alt="" title="" />'.$this->l('List Menu Top Link').'</legend> <table style="width:100%;"> <thead> <tr style="text-align: left;"> <th>'.$this->l('Id Link').'</th> <th>'.$this->l('Label').'</th> <th>'.$this->l('Link').'</th> <th>'.$this->l('New Window').'</th> <th>'.$this->l('Action').'</th> </tr> </thead> <tbody>'; foreach ($links as $link) { $this->_html .= ' <tr> <td>'.(int)$link['id_linksmenutop'].'</td> <td>'.Tools::safeOutput($link['label']).'</td> <td><a href="'.Tools::safeOutput($link['link']).'"'.(($link['new_window']) ? ' target="_blank"' : '').'>'.Tools::safeOutput($link['link']).'</a></td> <td>'.(($link['new_window']) ? $this->l('Yes') : $this->l('No')).'</td> <td> <form action="'.Tools::safeOutput($_SERVER['REQUEST_URI']).'" method="post"> <input type="hidden" name="id_linksmenutop" value="'.(int)$link['id_linksmenutop'].'" /> <input type="submit" name="submitBlocktopmenuEdit" value="'.$this->l('Edit').'" class="button" /> <input type="submit" name="submitBlocktopmenuRemove" value="'.$this->l('Remove').'" class="button" /> </form> </td> </tr>'; } $this->_html .= '</tbody> </table> </fieldset>'; return $this->_html; } private function getMenuItems() { return explode(',', Configuration::get('MOD_BLOCKTOPMENU_ITEMS')); } private function makeMenuOption() { $menu_item = $this->getMenuItems(); $id_lang = (int)$this->context->language->id; $id_shop = (int)Shop::getContextShopID(); foreach ($menu_item as $item) { if (!$item) continue; preg_match($this->pattern, $item, $values); $id = (int)substr($item, strlen($values[1]), strlen($item)); switch (substr($item, 0, strlen($values[1]))) { case 'CAT': $category = new Category((int)$id, (int)$id_lang); if (Validate::isLoadedObject($category)) $this->_html .= '<option value="CAT'.$id.'">'.$category->name.'</option>'.PHP_EOL; break; case 'PRD': $product = new Product((int)$id, true, (int)$id_lang); if (Validate::isLoadedObject($product)) $this->_html .= '<option value="PRD'.$id.'">'.$product->name.'</option>'.PHP_EOL; break; case 'CMS': $cms = new CMS((int)$id, (int)$id_lang); if (Validate::isLoadedObject($cms)) $this->_html .= '<option value="CMS'.$id.'">'.$cms->meta_title.'</option>'.PHP_EOL; break; case 'CMS_CAT': $category = new CMSCategory((int)$id, (int)$id_lang); if (Validate::isLoadedObject($category)) $this->_html .= '<option value="CMS_CAT'.$id.'">'.$category->name.'</option>'.PHP_EOL; break; case 'MAN': $manufacturer = new Manufacturer((int)$id, (int)$id_lang); if (Validate::isLoadedObject($manufacturer)) $this->_html .= '<option value="MAN'.$id.'">'.$manufacturer->name.'</option>'.PHP_EOL; break; case 'SUP': $supplier = new Supplier((int)$id, (int)$id_lang); if (Validate::isLoadedObject($supplier)) $this->_html .= '<option value="SUP'.$id.'">'.$supplier->name.'</option>'.PHP_EOL; break; case 'LNK': $link = MenuTopLinks::get((int)$id, (int)$id_lang, (int)$id_shop); if (count($link)) { if (!isset($link[0]['label']) || ($link[0]['label'] == '')) { $default_language = Configuration::get('PS_LANG_DEFAULT'); $link = MenuTopLinks::get($link[0]['id_linksmenutop'], (int)$default_language, (int)Shop::getContextShopID()); } $this->_html .= '<option value="LNK'.$link[0]['id_linksmenutop'].'">'.$link[0]['label'].'</option>'; } break; case 'SHOP': $shop = new Shop((int)$id); if (Validate::isLoadedObject($shop)) $this->_html .= '<option value="SHOP'.(int)$id.'">'.$shop->name.'</option>'.PHP_EOL; break; } } } private function makeMenu() { $menu_items = $this->getMenuItems(); $id_lang = (int)$this->context->language->id; $id_shop = (int)Shop::getContextShopID(); foreach ($menu_items as $item) { if (!$item) continue; preg_match($this->pattern, $item, $value); $id = (int)substr($item, strlen($value[1]), strlen($item)); switch (substr($item, 0, strlen($value[1]))) { case 'CAT': $this->getCategory((int)$id); break; case 'PRD': $selected = ($this->page_name == 'product' && (Tools::getValue('id_product') == $id)) ? ' class="sfHover"' : ''; $product = new Product((int)$id, true, (int)$id_lang); if (!is_null($product->id)) $this->_menu .= '<li'.$selected.'><a href="'.$product->getLink().'">'.$product->name.'</a></li>'.PHP_EOL; break; case 'CMS': $selected = ($this->page_name == 'cms' && (Tools::getValue('id_cms') == $id)) ? ' class="sfHover"' : ''; $cms = CMS::getLinks((int)$id_lang, array($id)); if (count($cms)) $this->_menu .= '<li'.$selected.'><a href="'.$cms[0]['link'].'">'.$cms[0]['meta_title'].'</a></li>'.PHP_EOL; break; case 'CMS_CAT': $category = new CMSCategory((int)$id, (int)$id_lang); if (count($category)) { $this->_menu .= '<li><a href="'.$category->getLink().'">'.$category->name.'</a>'; $this->getCMSMenuItems($category->id); $this->_menu .= '</li>'.PHP_EOL; } break; case 'MAN': $selected = ($this->page_name == 'manufacturer' && (Tools::getValue('id_manufacturer') == $id)) ? ' class="sfHover"' : ''; $manufacturer = new Manufacturer((int)$id, (int)$id_lang); if (!is_null($manufacturer->id)) { if (intval(Configuration::get('PS_REWRITING_SETTINGS'))) $manufacturer->link_rewrite = Tools::link_rewrite($manufacturer->name, false); else $manufacturer->link_rewrite = 0; $link = new Link; $this->_menu .= '<li'.$selected.'><a href="'.$link->getManufacturerLink((int)$id, $manufacturer->link_rewrite).'">'.$manufacturer->name.'</a></li>'.PHP_EOL; } break; case 'SUP': $selected = ($this->page_name == 'supplier' && (Tools::getValue('id_supplier') == $id)) ? ' class="sfHover"' : ''; $supplier = new Supplier((int)$id, (int)$id_lang); if (!is_null($supplier->id)) { $link = new Link; $this->_menu .= '<li'.$selected.'><a href="'.$link->getSupplierLink((int)$id, $supplier->link_rewrite).'">'.$supplier->name.'</a></li>'.PHP_EOL; } break; case 'SHOP': $selected = ($this->page_name == 'index' && ($this->context->shop->id == $id)) ? ' class="sfHover"' : ''; $shop = new Shop((int)$id); if (Validate::isLoadedObject($shop)) { $link = new Link; $this->_menu .= '<li'.$selected.'><a href="'.$shop->getBaseURL().'">'.$shop->name.'</a></li>'.PHP_EOL; } break; case 'LNK': $link = MenuTopLinks::get((int)$id, (int)$id_lang, (int)$id_shop); if (count($link)) { if (!isset($link[0]['label']) || ($link[0]['label'] == '')) { $default_language = Configuration::get('PS_LANG_DEFAULT'); $link = MenuTopLinks::get($link[0]['id_linksmenutop'], $default_language, (int)Shop::getContextShopID()); } $this->_menu .= '<li><a href="'.$link[0]['link'].'"'.(($link[0]['new_window']) ? ' target="_blank"': '').'>'.$link[0]['label'].'</a></li>'.PHP_EOL; } break; } } } private function getCategoryOption($id_category = 1, $id_lang = false, $id_shop = false, $recursive = true) { $id_lang = $id_lang ? (int)$id_lang : (int)Context::getContext()->language->id; $category = new Category((int)$id_category, (int)$id_lang, (int)$id_shop); if (is_null($category->id)) return; if ($recursive) { $children = Category::getChildren((int)$id_category, (int)$id_lang, true, (int)$id_shop); $spacer = str_repeat(' ', $this->spacer_size * (int)$category->level_depth); } $shop = (object) Shop::getShop((int)$category->getShopID()); $this->_html .= '<option value="CAT'.(int)$category->id.'">'.(isset($spacer) ? $spacer : '').$category->name.' ('.$shop->name.')</option>'; if (isset($children) && count($children)) foreach ($children as $child) { $this->getCategoryOption((int)$child['id_category'], (int)$id_lang, (int)$child['id_shop']); } } private function getCategory($id_category, $id_lang = false, $id_shop = false) { $id_lang = $id_lang ? (int)$id_lang : (int)Context::getContext()->language->id; $category = new Category((int)$id_category, (int)$id_lang); if ($category->level_depth > 1) $category_link = $category->getLink(); else $category_link = $this->context->link->getPageLink('index'); if (is_null($category->id)) return; $children = Category::getChildren((int)$id_category, (int)$id_lang, true, (int)$id_shop); $selected = ($this->page_name == 'category' && ((int)Tools::getValue('id_category') == $id_category)) ? ' class="sfHoverForce"' : ''; $is_intersected = array_intersect($category->getGroups(), $this->user_groups); // filter the categories that the user is allowed to see and browse if (!empty($is_intersected)) { $this->_menu .= '<li '.$selected.'>'; $this->_menu .= '<a href="'.$category_link.'">'.$category->name.'</a>'; if (count($children)) { $this->_menu .= '<ul>'; foreach ($children as $child) $this->getCategory((int)$child['id_category'], (int)$id_lang, (int)$child['id_shop']); $this->_menu .= '</ul>'; } $this->_menu .= '</li>'; } } private function getCMSMenuItems($parent, $depth = 1, $id_lang = false) { $id_lang = $id_lang ? (int)$id_lang : (int)Context::getContext()->language->id; if ($depth > 3) return; $categories = $this->getCMSCategories(false, (int)$parent, (int)$id_lang); $pages = $this->getCMSPages((int)$parent); if (count($categories) || count($pages)) { $this->_menu .= '<ul>'; foreach ($categories as $category) { $this->_menu .= '<li>'; $this->_menu .= '<a href="#">'.$category['name'].'</a>'; $this->getCMSMenuItems($category['id_cms_category'], (int)$depth + 1); $this->_menu .= '</li>'; } foreach ($pages as $page) { $cms = new CMS($page['id_cms'], (int)$id_lang); $links = $cms->getLinks((int)$id_lang, array((int)$cms->id)); $selected = ($this->page_name == 'cms' && ((int)Tools::getValue('id_cms') == $page['id_cms'])) ? ' class="sfHoverForce"' : ''; $this->_menu .= '<li '.$selected.'>'; $this->_menu .= '<a href="'.$links[0]['link'].'">'.$cms->meta_title.'</a>'; $this->_menu .= '</li>'; } $this->_menu .= '</ul>'; } } private function getCMSOptions($parent = 0, $depth = 1, $id_lang = false) { $id_lang = $id_lang ? (int)$id_lang : (int)Context::getContext()->language->id; $categories = $this->getCMSCategories(false, (int)$parent, (int)$id_lang); $pages = $this->getCMSPages((int)$parent, false, (int)$id_lang); $spacer = str_repeat(' ', $this->spacer_size * (int)$depth); foreach ($categories as $category) { $this->_html .= '<option value="CMS_CAT'.$category['id_cms_category'].'" style="font-weight: bold;">'.$spacer.$category['name'].'</option>'; $this->getCMSOptions($category['id_cms_category'], (int)$depth + 1, (int)$id_lang); } foreach ($pages as $page) $this->_html .= '<option value="CMS'.$page['id_cms'].'">'.$spacer.$page['meta_title'].'</option>'; } protected function getCacheId($name = null) { parent::getCacheId($name); $page_name = in_array($this->page_name, array('category', 'supplier', 'manufacturer', 'cms', 'product')) ? $this->page_name : 'index'; return 'blocktopmenu|'.$page_name.'-'.(int)$this->context->shop->id.'-'.implode(', ',$this->user_groups).'-'.(int)$this->context->language->id.'-'.(int)Tools::getValue('id_category').'-'.(int)Tools::getValue('id_manufacturer').'-'.(int)Tools::getValue('id_supplier').'-'.(int)Tools::getValue('id_cms').'-'.(int)Tools::getValue('id_product'); } public function hookDisplayTop($param) { $this->user_groups = ($this->context->customer->isLogged() ? $this->context->customer->getGroups() : array(Configuration::get('PS_UNIDENTIFIED_GROUP'))); $this->page_name = Dispatcher::getInstance()->getController(); if (!$this->isCached('blocktopmenu.tpl', $this->getCacheId())) { $this->makeMenu(); $this->smarty->assign('MENU_SEARCH', Configuration::get('MOD_BLOCKTOPMENU_SEARCH')); $this->smarty->assign('MENU', $this->_menu); $this->smarty->assign('this_path', $this->_path); if(Configuration::get('MOD_BLOCKTOPMENU_SEARCH') == 1){ $this->calculHookCommon($params); } } $this->context->controller->addJS($this->_path.'js/hoverIntent.js'); $this->context->controller->addJS($this->_path.'js/superfish-modified.js'); $this->context->controller->addCSS($this->_path.'css/superfish-modified.css'); if (Configuration::get('PS_SEARCH_AJAX')) { $this->context->controller->addJqueryPlugin('autocomplete'); } $html = $this->display(__FILE__, 'blocktopmenu.tpl', $this->getCacheId()); return $html; } private function calculHookCommon($params) { $this->smarty->assign(array( 'ENT_QUOTES' => ENT_QUOTES, 'search_ssl' => Tools::usingSecureMode(), 'ajaxsearch' => Configuration::get('PS_SEARCH_AJAX'), 'instantsearch' => Configuration::get('PS_INSTANT_SEARCH'), 'self' => dirname(__FILE__), )); return true; } private function getCMSCategories($recursive = false, $parent = 1, $id_lang = false) { $id_lang = $id_lang ? (int)$id_lang : (int)Context::getContext()->language->id; if ($recursive === false) { $sql = 'SELECT bcp.`id_cms_category`, bcp.`id_parent`, bcp.`level_depth`, bcp.`active`, bcp.`position`, cl.`name`, cl.`link_rewrite` FROM `'._DB_PREFIX_.'cms_category` bcp INNER JOIN `'._DB_PREFIX_.'cms_category_lang` cl ON (bcp.`id_cms_category` = cl.`id_cms_category`) WHERE cl.`id_lang` = '.(int)$id_lang.' AND bcp.`id_parent` = '.(int)$parent; return Db::getInstance()->executeS($sql); } else { $sql = 'SELECT bcp.`id_cms_category`, bcp.`id_parent`, bcp.`level_depth`, bcp.`active`, bcp.`position`, cl.`name`, cl.`link_rewrite` FROM `'._DB_PREFIX_.'cms_category` bcp INNER JOIN `'._DB_PREFIX_.'cms_category_lang` cl ON (bcp.`id_cms_category` = cl.`id_cms_category`) WHERE cl.`id_lang` = '.(int)$id_lang.' AND bcp.`id_parent` = '.(int)$parent; $results = Db::getInstance()->executeS($sql); foreach ($results as $result) { $sub_categories = $this->getCMSCategories(true, $result['id_cms_category'], (int)$id_lang); if ($sub_categories && count($sub_categories) > 0) $result['sub_categories'] = $sub_categories; $categories[] = $result; } return isset($categories) ? $categories : false; } } private function getCMSPages($id_cms_category, $id_shop = false, $id_lang = false) { $id_shop = ($id_shop !== false) ? (int)$id_shop : (int)Context::getContext()->shop->id; $id_lang = $id_lang ? (int)$id_lang : (int)Context::getContext()->language->id; $sql = 'SELECT c.`id_cms`, cl.`meta_title`, cl.`link_rewrite` FROM `'._DB_PREFIX_.'cms` c INNER JOIN `'._DB_PREFIX_.'cms_shop` cs ON (c.`id_cms` = cs.`id_cms`) INNER JOIN `'._DB_PREFIX_.'cms_lang` cl ON (c.`id_cms` = cl.`id_cms`) WHERE c.`id_cms_category` = '.(int)$id_cms_category.' AND cs.`id_shop` = '.(int)$id_shop.' AND cl.`id_lang` = '.(int)$id_lang.' AND c.`active` = 1 ORDER BY `position`'; return Db::getInstance()->executeS($sql); } public function hookActionObjectCategoryUpdateAfter($params) { $this->clearMenuCache(); } public function hookActionObjectCategoryDeleteAfter($params) { $this->clearMenuCache(); } public function hookActionObjectCmsUpdateAfter($params) { $this->clearMenuCache(); } public function hookActionObjectCmsDeleteAfter($params) { $this->clearMenuCache(); } public function hookActionObjectSupplierUpdateAfter($params) { $this->clearMenuCache(); } public function hookActionObjectSupplierDeleteAfter($params) { $this->clearMenuCache(); } public function hookActionObjectManufacturerUpdateAfter($params) { $this->clearMenuCache(); } public function hookActionObjectManufacturerDeleteAfter($params) { $this->clearMenuCache(); } public function hookActionObjectProductUpdateAfter($params) { $this->clearMenuCache(); } public function hookActionObjectProductDeleteAfter($params) { $this->clearMenuCache(); } public function hookCategoryUpdate($params) { $this->clearMenuCache(); } private function clearMenuCache() { $this->_clearCache('blocktopmenu.tpl'); } public function hookActionShopDataDuplication($params) { $linksmenutop = Db::getInstance()->executeS(' SELECT * FROM '._DB_PREFIX_.'linksmenutop WHERE id_shop = '.(int)$params['old_id_shop'] ); foreach($linksmenutop as $id => $link) { Db::getInstance()->execute(' INSERT IGNORE INTO '._DB_PREFIX_.'linksmenutop (id_linksmenutop, id_shop, new_window) VALUES (null, '.(int)$params['new_id_shop'].', '.(int)$link['new_window'].')'); $linksmenutop[$id]['new_id_linksmenutop'] = Db::getInstance()->Insert_ID(); } foreach($linksmenutop as $id => $link) { $lang = Db::getInstance()->executeS(' SELECT id_lang, '.(int)$params['new_id_shop'].', label, link FROM '._DB_PREFIX_.'linksmenutop_lang WHERE id_linksmenutop = '.(int)$link['id_linksmenutop'].' AND id_shop = '.(int)$params['old_id_shop']); foreach($lang as $l) Db::getInstance()->execute(' INSERT IGNORE INTO '._DB_PREFIX_.'linksmenutop_lang (id_linksmenutop, id_lang, id_shop, label, link) VALUES ('.(int)$link['new_id_linksmenutop'].', '.(int)$l['id_lang'].', '.(int)$params['new_id_shop'].', '.(int)$l['label'].', '.(int)$l['link'].' )'); } } } Lo que no sé es como poner el código del TPL, no acabo de entenderlo Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 (edited) Lo he dejado tal cual pero no me funciona, no te preocupes, lo dejo tal cual estaba y ya esta PD: Probar por si acaso http://dogstore.es Edited May 25, 2013 by Rubén (see edit history) Link to comment Share on other sites More sharing options...
nadie Posted May 25, 2013 Share Posted May 25, 2013 Lo he dejado tal cual pero no me funciona, no te preocupes, lo dejo tal cual estaba y ya esta Fuerza compilacion y vacia cache de smarty: http://www.prestasho...s-compile-ps15/ (Sino los cambios realizados en el blocktopmenu.tpl, no tendran efecto) Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 hecho nadie, pero sigue sin verse nada, ¿por qué? ni idea Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 (edited) hecho nadie, pero sigue sin verse nada, ¿por qué? ni idea Error al buscar ahora http://dogstore.es/t...=flexi+classic+ EDITO, AHORA BUSCA PERO... xD http://dogstore.es/tienda Edited May 25, 2013 by Rubén (see edit history) Link to comment Share on other sites More sharing options...
Paula Martinez Posted May 25, 2013 Share Posted May 25, 2013 Aporte gratuito: http://www.prestasho...hile-searching/ (No lo he probado, a ver...) Muchas gracias Nadie ! El enlace me ha sido de ayuda ! Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Una cosita rápida, que si no no podré trabajar esta tarde. ¿Porqué pasa esto? http:/dogstore.es/tienda Link to comment Share on other sites More sharing options...
Sergio Ruiz Posted May 25, 2013 Share Posted May 25, 2013 Me cuelo por aqui para molestar como de costumbre. Por simple entretenimiento, he entrado a la dirección esta: http:/dogstore.es/tienda Y veo que dice esto: Link to database cannot be established: SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) Digo, voy a buscar en google esto: SQLSTATE[HY000] [2002] Y dice google, que a lo mejor es que se esta bloqueando la conexión a tu base de datos.... Habla con tu hosting... a ver.. Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Estoy en ello Link to comment Share on other sites More sharing options...
nadie Posted May 25, 2013 Share Posted May 25, 2013 Ya tengo la imagen del producto, salgo a comer. Esta tarde posteo el tema, aunque quiero añadir un tpl para la busqueda instantánea... Saludos Ah Perfecto. Entonces, ya puedo quedarme tranquilo, que entre ayer y hoy tengo una fiebre que no se quita. Gracias por su colaboración. 1 Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Por cierto, por qué narices si no he tocado nada la web ha dejado de verse? Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Chicos, hay alguna manera de volver a cuando tenía bien el menú? ahora descuadra toda la web Link to comment Share on other sites More sharing options...
Sergio Ruiz Posted May 25, 2013 Share Posted May 25, 2013 Chicos, hay alguna manera de volver a cuando tenía bien el menú? ahora descuadra toda la web Yo no veo descuadrado el menu, veo descuadrado todo menos el menu. ¿Que has tocado? Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Yo no veo descuadrado el menu, veo descuadrado todo menos el menu. ¿Que has tocado? Correcto, ese es el problema, yo toqué lo que estabamos haciendo aquí, pero de repente se puso así y ni forzando recompilación, ni con el "flush" ni reemplazando los archivos originales ni nada de nada. Link to comment Share on other sites More sharing options...
Sergio Ruiz Posted May 25, 2013 Share Posted May 25, 2013 Correcto, ese es el problema, yo toqué lo que estabamos haciendo aquí, pero de repente se puso así y ni forzando recompilación, ni con el "flush" ni reemplazando los archivos originales ni nada de nada. Como tienes el fichero ese blocktopmenu.tpl que estoy leyendo por aqui que te han dicho... ¿? Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Como tienes el fichero ese blocktopmenu.tpl que estoy leyendo por aqui que te han dicho... ¿? Tengo el original {literal} <script type="text/javascript"> $(document).ready(function(){ $("ul.sf-menu").supersubs({ minWidth: 12, // minimum width of sub-menus in em units maxWidth: 80, // maximum width of sub-menus in em units extraWidth: 1 // extra width can ensure lines don't sometimes turn over // due to slight rounding differences and font-family }).superfish(); // call supersubs first, then superfish, so that subs are // not display:none when measuring. Call before initialising // containing tabs for same reason. }); </script> {/literal} <script type="text/javascript" src="{$modules_dir}blocktopmenu/js/supersubs.js"></script> {if $MENU != ''} </div> <!-- Menu --> <div class="sf-contener clearfix"> <ul class="sf-menu clearfix"> {$MENU} {if $MENU_SEARCH} <li class="sf-search noBack" style="float:right"> <form id="searchbox" action="{$link->getPageLink('search')}" method="get"> <p> <input type="hidden" name="controller" value="search" /> <input type="hidden" value="position" name="orderby"/> <input type="hidden" value="desc" name="orderway"/> <input type="text" name="search_query" value="Busca tu producto" onFocus="if (this.value=='Busca tu producto') this.value='';"/> </p> </form> </li> {/if} </ul> <div class="sf-right"> </div> <!--/ Menu --> {/if} Link to comment Share on other sites More sharing options...
Sergio Ruiz Posted May 25, 2013 Share Posted May 25, 2013 Tengo el original {literal} <script type="text/javascript"> $(document).ready(function(){ $("ul.sf-menu").supersubs({ minWidth: 12, // minimum width of sub-menus in em units maxWidth: 80, // maximum width of sub-menus in em units extraWidth: 1 // extra width can ensure lines don't sometimes turn over // due to slight rounding differences and font-family }).superfish(); // call supersubs first, then superfish, so that subs are // not display:none when measuring. Call before initialising // containing tabs for same reason. }); </script> {/literal} <script type="text/javascript" src="{$modules_dir}blocktopmenu/js/supersubs.js"></script> {if $MENU != ''} </div> <!-- Menu --> <div class="sf-contener clearfix"> <ul class="sf-menu clearfix"> {$MENU} {if $MENU_SEARCH} <li class="sf-search noBack" style="float:right"> <form id="searchbox" action="{$link->getPageLink('search')}" method="get"> <p> <input type="hidden" name="controller" value="search" /> <input type="hidden" value="position" name="orderby"/> <input type="hidden" value="desc" name="orderway"/> <input type="text" name="search_query" value="Busca tu producto" onFocus="if (this.value=='Busca tu producto') this.value='';"/> </p> </form> </li> {/if} </ul> <div class="sf-right"> </div> <!--/ Menu --> {/if} Estoy leyendo el tema, y aunque soy un agricultor, si restauras el blocktopmenu.php original, todo vuelve a la normalidad. O aceptas el fichero modificado. Y en el tpl estcho {if $MENU != ''} </div> intecha dejarlo ashi: {if $MENU != ''} Y luego en el header.tpl esto: <div id="header_right" class="grid_6 omega"> por estcho <div id="header_right" class="grid_9 omega"> Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Estoy leyendo el tema, y aunque soy un agricultor, si restauras el blocktopmenu.php original, todo vuelve a la normalidad. O aceptas el fichero modificado. Y en el tpl estcho {if $MENU != ''} </div> intecha dejarlo ashi: {if $MENU != ''} Y luego en el header.tpl esto: <div id="header_right" class="grid_6 omega"> por estcho <div id="header_right" class="grid_9 omega"> Debería restaurarse verdad? Pues no lo hace, no tengo ni idea de por qué Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Acabo de dejar las cosas tal cual las puso statictic Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Bueno aquí he posteado el aporte: http://www.prestasho...ost__p__1241949 Saludos Compañero, acabo de seguir todos tus pasos y la web sigue igual http://dogstore.es Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 No veo el id en el input, con lo cual si has hecho los cambios que he posteado en el aporte. Pues ya sabes limpiar caches y compilación... Tambien elimina el archivo class_index.php que está en la carpeta cache/ PD: desinstal el blocksearch que esta otra ves dando la lata... Saludos Mira ahora, si que esta porque se ve todo descuadrado Link to comment Share on other sites More sharing options...
Sergio Ruiz Posted May 25, 2013 Share Posted May 25, 2013 Mira ahora, si que esta porque se ve todo descuadrado /themes/la-plantilla-que-uses/header.tpl Esto: <div class="grid_6 omega" id="header_right"> Asi: <div class="grid_9 omega" id="header_right"> Y se te quedara cuadrado. Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 /themes/la-plantilla-que-uses/header.tpl Esto: <div class="grid_6 omega" id="header_right"> Asi: <div class="grid_9 omega" id="header_right"> Y se te quedara cuadrado. Lo he cambiado y ahora no se ve. Link to comment Share on other sites More sharing options...
Sergio Ruiz Posted May 25, 2013 Share Posted May 25, 2013 (edited) Lo he cambiado y ahora no se ve. Ahora, te sala otra vez esto: Link to database cannot be established: SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) que ya te salio antes...... Edited May 25, 2013 by Rubalcaba (see edit history) Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Ahora, te sala otra vez esto: Link to database cannot be established: SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) que ya te salio antes...... Correcto, además sale cada vez que cambio algo que tenga que ver con este buscador. Link to comment Share on other sites More sharing options...
Sergio Ruiz Posted May 25, 2013 Share Posted May 25, 2013 Upss vaya ¿no cambié la clase?... no tiene que ver sorry ¿? Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Rubalcaba, olvidalo... ¿Algo que pueda hacer? Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Bueno yo diria que es una capada de tu provehedor de host por superar un máximo de conecciones a la bd. O simplemente que el servidor donde alojan la bd a caido... Debes de tomar contacto con ellos, y exiguir algo que no se dá mucho en España que es transparencia. Que te digan si te capan o es que se cae el servidor... La cuestión es que he estado hablando con ellos siempre y siempre me han ayudado altruistamente, es más, cuando tenía hosting (no vps) me aumentaron características específicas porque no necesitaba más y no querían sacarme el dinero, por eso me extraña que me hayan capado, acabo de llamarlos y me han dado las gracias porque a lo mejor me cambian todo el VPS para que funcione. Por un casual, no puede ser problema de los php? Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 No, más bien sería una mala configuración en el .cnf o como te decia anteriormente que hayas superado las conecciones a la bd... Creo que eso lo tengo ilimitado. Link to comment Share on other sites More sharing options...
nadie Posted May 25, 2013 Share Posted May 25, 2013 Por un casual, no puede ser problema de los php? Buenas dias a todos, Todo puede ser, pero no creo. Por lo que comento Rubalcaba aquí http://www.prestasho...ost__p__1241722 parece que de un modo o otro estas limitado en ese sentido. De todos modos, tu hosting te podra dar mas detalles.. Creo que eso lo tengo ilimitado. Quien te diga la palabra ilimitado, te miente... Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Buenas dias a todos, Todo puede ser, pero no creo. Por lo que comento Rubalcaba aquí http://www.prestasho...ost__p__1241722 parece que de un modo o otro estas limitado en ese sentido. De todos modos, tu hosting te podra dar mas detalles.. Quien te diga la palabra ilimitado, te miente... Es decir, cuando he hablado con ellos me han dicho que era un error muy poco visto, que no sabían que ni por qué y que lo intentarían solucionar. Link to comment Share on other sites More sharing options...
nadie Posted May 25, 2013 Share Posted May 25, 2013 Es decir, cuando he hablado con ellos me han dicho que era un error muy poco visto, que no sabían que ni por qué y que lo intentarían solucionar. Vuelve a comentarselo, y dile que te pasa justo en los momentos, en los que realizas las busquedas (por que parece eso... ¿no?) Si un hosting serio, aunque exista la posibilidad de que el problema pueda no ser de ellos, tendran un registro para ver las cosas con detalles.. Link to comment Share on other sites More sharing options...
nadie Posted May 25, 2013 Share Posted May 25, 2013 Bueno parece que ya tienes lo que querias. Ahora te falta ajustar el css para el autocomplete. Saludos ¿A que ponerle un z-index? ¿no? (Lo digo por que se ve por debajo..) Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 (edited) Bueno parece que ya tienes lo que querias. Ahora te falta ajustar el css para el autocomplete. Saludos Vuelve a comentarselo, y dile que te pasa justo en los momentos, en los que realizas las busquedas (por que parece eso... ¿no?) Si un hosting serio, aunque exista la posibilidad de que el problema pueda no ser de ellos, tendran un registro para ver las cosas con detalles.. Correcto, pero me acaban de decir que no moleste al comercial. ¿Lo veis normal? PD: La web va como una patada en el culo de lenta PD2: A mi sigue sin salirme nada Edited May 25, 2013 by Rubén (see edit history) Link to comment Share on other sites More sharing options...
nadie Posted May 25, 2013 Share Posted May 25, 2013 PD2: A mi sigue sin salirme nada Sale por detras... como dice statitic, a que ajustar el css. (Pero fijate que si sale por detras) Link to comment Share on other sites More sharing options...
nadie Posted May 25, 2013 Share Posted May 25, 2013 Sale por detras... como dice statitic, a que ajustar el css. (Pero fijate que si sale por detras) Vaya, antes salio, pero ahora no me sale... Link to comment Share on other sites More sharing options...
nadie Posted May 25, 2013 Share Posted May 25, 2013 EDITO: que esto es con el autocomplete, no puedes meterle el value ya que estará buscando continuamente el royal canin hasta la saciedad y te tira la conección a la bd... Vaya, Entonces todo el problema, ha venido desde hay desde un principio ¿? Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 (edited) Ahora es cuando te vas a reír a carcajadas. Yo no he puesto ningún value, copie y pegue tal cual, royal canin es la primera busqueda de prueba que hice Edited May 27, 2013 by Rubén (see edit history) Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Estará mal la db? voy, un momentin Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Quieres datos FTP? PD ya esta flusheado Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 (edited) Recapitulemos: Cada vez que uso búsqueda predictiva (como está ahora) la web se realentiza, y en algunas ocasiones pierde la conexión con la BD. Cuando pongo una búsqueda normal, la web vuelve a estar fluida y rápida. Cada vez que toco el código blocktopmenu.php me pasa lo de la web. Para mi que el error está en la BD o en código PHP (ya que está sobreescribiendo) PD: Incluso pierdo el acceso a plesk Edited May 25, 2013 by Rubén (see edit history) Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 No. PD: En la pestaña información pone que me falta el blocksearch.tpl, y cosas de ese estilo, aunque borre la carpeta entera de mi ftp, ¿podría ser? Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Acabo de añadir la carpeta blocksearch original a mi ftp y parece más rápida (la página) Antes de borrar un modulo de la carpeta hay que desinstalarlo... si no queda en la bd como instaldo. Otra cosa que veo que se mete para descargar las imagenes 1 segundo más o menos por cada una Antes no era así, ha sido desde la instalación. PD: Voy a ver lo del block search Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Vale, parece que sigue igual PD: Creo que hace peticiones infinitas a la BD: Link to database cannot be established: SQLSTATE[42000] [1203] User excellencedogs already has more than 'max_user_connections' active connections Link to comment Share on other sites More sharing options...
nadie Posted May 25, 2013 Share Posted May 25, 2013 Vale, parece que sigue igual PD: Creo que hace peticiones infinitas a la BD: Link to database cannot be established: SQLSTATE[42000] [1203] User excellencedogs already has more than 'max_user_connections' active connections ¿Por cierto, restaurastes el Search.php original, que cambiastes al inicio del tema? (Lo digo, por que no sea que eso este armando el follon..) Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 ¿Por cierto, restaurastes el Search.php original, que cambiastes al inicio del tema? (Lo digo, por que no sea que eso este armando el follon..) Si, lo restauré, ¿quieres que vuelva a hacerlo por si las moscas? Link to comment Share on other sites More sharing options...
nadie Posted May 25, 2013 Share Posted May 25, 2013 Si, lo restauré, ¿quieres que vuelva a hacerlo por si las moscas? Si lo hicistes ... no hace falta que lo vuelvas hacer.. Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Okis, otra cosa... has perdido el supersubs en el menu. Cuando lo añadas haslo en el superfish-modified.js que está en la carpeta js del módulo... verás al final: jQuery(function(){ jQuery('ul.sf-menu').superfish(); }); Añadelo en el... ¿Como como? No acabo de entender, meto ese código al js? Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 No creo que se por eso chicos, el override de la clase Search tan solo se diferencia en la función que he añadido el un left join para que de el id de la imagen... A ver, pienso que debe ser de la función en si, statictic, podemos comparar archivos para ver por qué a ti te funciona y por qué a mi no? Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 ¿Queréis que restaure todo y a tomar por saco? No quiero molestaros, de verdad Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 (edited) He instaldo un presta 1.5.4.1 en local y he hecho los cambios al blocktopmenu tal y como he posteado, y no tengo ese problema. Claro está solo hay 5 productos. Pero no creo que venga por hay el tema... No tendré las tablas rotas? PD: Repito, si quieres acceso FTP sin ningún problema PD2: Espera, razonando un poco cuando hace la predicción tiene que buscar los archivos de golpe, no será eso? quito la opción de predicción? Edited May 25, 2013 by Rubén (see edit history) Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 ¿Me da la sensación o está funcionando bien? Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 ahora va rápida la web, pero da error 500 la busqueda... Prueba a quitarla a ver... Ya lo he hecho, entra a la página, pasa una cosa curiosa: http://dogstore.es/tienda Link to comment Share on other sites More sharing options...
nadie Posted May 25, 2013 Share Posted May 25, 2013 ahora va rápida la web, pero da error 500 la busqueda... Prueba a quitarla a ver... Pues a mi me ha tardado 25 segundos, en cambiar de sección.. Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Pues a mi me ha tardado 25 segundos, en cambiar de sección.. Vaya tela... ¿Queréis que lo deje tal cual estaba? Nos ahorraremos dolores de cabeza innecesarios Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Acabo de restaurar, pero sigue yendo lento Pero si es que no está instalado Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 No va ni para adelante. Me tengo que ir, si estáis esta noche hasta esta noche y si no hasta mañana Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Me da esto: [PrestaShop] Fatal error in module DbPDO: Call to a member function rowCount() on a non-object Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Ese error me lo da el prestashop cleaner Link to comment Share on other sites More sharing options...
Rubén Posted May 25, 2013 Author Share Posted May 25, 2013 Podemos hacer algo para desentrañar todos los errores de mi web y solucionarlos? (activar algo que nos diga que pasa, que esta mal) Link to comment Share on other sites More sharing options...
Rubén Posted May 26, 2013 Author Share Posted May 26, 2013 Buenas Rubén, creo que puedes dar este hilo por solucionado... ya el aporte está presentado. Saludos Ok, lamentablemente no puedo usarlo (una pena, me hubiese encantado) El problema ahora son los precios, menuda basura el tema default de prestashop Link to comment Share on other sites More sharing options...
nadie Posted May 26, 2013 Share Posted May 26, 2013 Por cierto, ¿podrias decir quien es tu provehedor de hosting? Saludos La empresa donde ha contratado el hosting, es profesionalhosting (creo haberlo leído por el foro que es hay donde Ruben, habia contratado el hosting..) De todos modos, esperemos a ver si hay mas detalles. Link to comment Share on other sites More sharing options...
Rubén Posted May 26, 2013 Author Share Posted May 26, 2013 Pero sigue dando problemas? Yo he leído que es por la plantilla lo de los precios, que a decir verdad me urge solucionar Link to comment Share on other sites More sharing options...
Rubén Posted May 26, 2013 Author Share Posted May 26, 2013 Pues parece que no es Profesional Host, es 1&1... quito a PH de la lista negra. 1&1 ya estaba en ella... Como como? Estoy en Profesional Hosting Link to comment Share on other sites More sharing options...
Rubén Posted May 27, 2013 Author Share Posted May 27, 2013 Vaya pues en tu otro post has dicho algo de 1and1... Que era malo, por eso me cambié Link to comment Share on other sites More sharing options...
Rubén Posted May 27, 2013 Author Share Posted May 27, 2013 Okis, eso me llevo a confución y por lo que veo a otros tambien. Por cierto, ¿has tomado en concideración de dar este tema como solucionado?. Te lo habia sugerio más arriba, pero no sé si lo llegastes a leer con tanto lio... Saludos Pues no lo habia leido, lo marco compañero Link to comment Share on other sites More sharing options...
Recommended Posts