Jump to content

hgarcia

Members
  • Posts

    21
  • Joined

  • Last visited

Profile Information

  • Location
    Mexico
  • Activity
    Developer

hgarcia's Achievements

Newbie

Newbie (1/14)

4

Reputation

  1. Hola Esteban. Acabo de mandarte un correo privado. A tus órdenes. Saludos.
  2. Hola. Sé que este post está cerrado desde hace 6 meses. Quería agradecer publicamente a @MaryDey y @rsaiz por el mismo, además de agregar mi granito de arena. Después de una tarde de frustración, y una mañana completa de investigación y pruebas en una tienda Version 1.6.09, por fin pude tener un form de contacto en la página de producto. Me tomo la libertad de publicar mis resultados aquí, a manera de contribución y complemento al post. Voy por pasos largos: product.tpl Primero, me pareció mejor organizado poner el form de contacto del lado izquierdo, en ése espacio vacío entre las imagenes del producto, y la sección de más información. Así, en product.tpl, busqué el div correspondiente: <!-- left infos--> <div class="pb-left-column col-xs-12 col-sm-4 col-md-5"> y, al final del mismo justo antes del </div> de cierre puse el mismo código de @MaryDey, al cual, después de generarme varios errores, le hice cambios: {* product contact form *} <h3 class="bottom-indent"> {l s='Request info about '}{$product->name|escape:'html':'UTF-8'} </h3> {if isset($confirmation)} <p class="alert alert-success" style="margin-top:80px;"><h1>{l s='Your message has been successfully sent to our team.'}</h1></p> <ul class="footer_links clearfix"> <li> <a class="btn btn-default button button-small" href="{$base_dir}"> <span> <i class="icon-chevron-left"></i>{l s='Home'} </span> </a> </li> </ul> {elseif isset($alreadySent)} <p class="alert alert-warning" style="margin-top:80px;">{l s='Your message has already been sent.'}</p> <ul class="footer_links clearfix"> <li> <a class="btn btn-default button button-small" href="{$base_dir}"> <span> <i class="icon-chevron-left"></i>{l s='Home'} </span>sobre </a> </li> </ul> {else} {include file="$tpl_dir./errors.tpl"} <form action="{$request_uri|escape:'html':'UTF-8'}" method="post" class="contact-form-box" enctype="multipart/form-data"> <fieldset> <div class="clearfix" style="border: 1px solid #A6AAAD;padding: 7px;background-color: #056b8f;color: #fff;"> <div class="col-xs-12 col-md-3" style="width: 82%;"> <div class="form-group selector1"> <p class="form-group"> <label for="email">{l s='Email address'}</label> {if isset($customerThread.email)} <input class="form-control grey" type="text" id="email" name="from" value="{$customerEmail|escape:'html':'UTF-8'}" readonly="readonly" /> {else} <input class="form-control grey validate" type="text" id="email" name="from" data-validate="isEmail" value="{$customerEmail|escape:'html':'UTF-8'}" /> {/if} <input type="hidden" name="id_contact" value="2" /> <input type="hidden" name="id_product" value="{$product->id|intval}" /> </p> </div> <div class="col-xs-12 col-md-9"> <div class="form-group"> <label for="message">{l s='Message'}</label> <textarea class="form-control" id="message" name="message" style="line-height:2.42857; width:324px;">{if isset($message)}{$message|escape:'html':'UTF-8'|stripslashes}{/if}{$product->name|escape:'html':'UTF-8'}:</textarea> </div> </div> </div> <div class="submit"> <button type="submit" name="submitMessage" id="submitMessage" class="button btn btn-default button-medium" style=" background-color:#950341;"><span>{l s='Send'}<i class="icon-chevron-right right"></i></span></button> </div> </fieldset> </form> {/if} {* end contact form *} A simple vista se puede apreciar que eliminé la primera línea: {capture name=path}{l s='Contact'}{/capture} Esto para evitar que la pequeña barrita de navegación, justo abajo del menú horizontal sea la que le corresponde al producto, y no la que se muestra en el contact form. También se puede observar que regresé los textos dentro del tpl a su version original en Inglés. Ésto para permitirme traducir los mismos desde el menu de traducciones, lo mostraré mas adelante. Product no tiene acceso ni a $customerThread.email, tampoco a $email; por lo que genera un error. Así, en los dos input text con id="email" (lineas 192 y 194 del código que puse arriba ) cambié sus propiedades value a value="{$customerEmail|escape:'html':'UTF-8'}" En las lineas 196 y 197, tenemos lo siguiente: <input type="hidden" name="id_contact" value="2" /> <input type="hidden" name="id_product" value="{$product->id|intval}" /> Esto es importante: El valor de id_contact lo puse a 2, corresponde a la dirección de correo de Servicio a Cliente en mi tienda, configurado en el menú Clientes, Contacto. También aquí se generaba un error al no estar accesibles los id de contacto en el entorno del producto. La segunda línea de código, me sirve para pasarle el id del producto al controller, para poder enviar el mensaje de acuerdo al mismo También lo veremos más adelante. Por último, las dos lineas addJsDefL al final del código de @MaryDey, las puse hasta el final de product.tpl justo antes del {/strip} {addJsDefL name='contact_fileDefaultHtml'}{l s='No file selected' js=1}{/addJsDefL} {addJsDefL name='contact_fileButtonHtml'}{l s='Choose File' js=1}{/addJsDefL} {/strip} {/if} Aunque, en mi modificación, me parece que éstas llamadas no son necesarias, veremos el por qué más adelante. Sigamos ahora con ProductController.php La función postProcess(), la puse justo después de protected $category; y arriba de la funcion setMedia() Aquí la función modificada, con las instrucciones que eliminé comentadas: /** * Start forms process * @see FrontController::postProcess() * Agregar contact form a product */ public function postProcess() { if (Tools :: isSubmit('submitMessage')) { /*$extension = array('.txt', '.rtf', '.doc', '.docx', '.pdf', '.zip', '.png', '.jpeg', '.gif', '.jpg');*/ /*$fileAttachment = Tools::fileAttachment('fileUpload');*/ $message = Tools :: getValue('message'); // Html entities is not usefull, iscleanHtml check there is no bad html tags. /*$id_contact = (int)(Tools::getValue('id_contact'));*/ if (!($from = trim(Tools :: getValue('from'))) || !Validate :: isEmail($from)) $this->errors[] = Tools :: displayError('Invalid email address.'); else if (!$message) $this->errors[] = Tools :: displayError('The message cannot be blank.'); else if (!Validate :: isCleanHtml($message)) $this->errors[] = Tools :: displayError('Invalid message'); else if (!($id_contact = (int) (Tools :: getValue('id_contact'))) || !(Validate :: isLoadedObject($contact = new Contact($id_contact, $this->context->language->id)))) $this->errors[] = Tools :: displayError('Please select a subject from the list provided. '); /*else if (!empty($fileAttachment['name']) && $fileAttachment['error'] != 0) $this->errors[] = Tools::displayError('An error occurred during the file-upload process.'); else if (!empty($fileAttachment['name']) && !in_array( Tools::strtolower(substr($fileAttachment['name'], -4)), $extension) && !in_array( Tools::strtolower(substr($fileAttachment['name'], -5)), $extension)) $this->errors[] = Tools::displayError('Bad file extension');*/ else { $customer = $this->context->customer; if (!$customer->id) $customer->getByEmail($from); $contact = new Contact($id_contact, $this->context->language->id); /*$id_order = (int) $this->getOrder();*/ $id_order = 0; if (!((($id_customer_thread = (int) Tools :: getValue('id_customer_thread')) && (int) Db :: getInstance()->getValue(' SELECT cm.id_customer_thread FROM ' . _DB_PREFIX_ . 'customer_thread cm WHERE cm.id_customer_thread = ' . (int) $id_customer_thread . ' AND cm.id_shop = ' . (int) $this->context->shop->id . ' AND token = \'' . pSQL(Tools :: getValue('token')) . '\'')) || ($id_customer_thread = CustomerThread :: getIdCustomerThreadByEmailAndIdOrder($from, $id_order)))) { $fields = Db :: getInstance()->executeS(' SELECT cm.id_customer_thread, cm.id_contact, cm.id_customer, cm.id_order, cm.id_product, cm.email FROM ' . _DB_PREFIX_ . 'customer_thread cm WHERE email = \'' . pSQL($from) . '\' AND cm.id_shop = ' . (int) $this->context->shop->id . ' AND (' . ($customer->id ? 'id_customer = ' . (int) ($customer->id) . ' OR ' : '') . ' id_order = ' . (int) $id_order . ')'); $score = 0; foreach ($fields as $key => $row) { $tmp = 0; if ((int) $row['id_customer'] && $row['id_customer'] != $customer->id && $row['email'] != $from) continue; if ($row['id_order'] != 0 && $id_order != $row['id_order']) continue; if ($row['email'] == $from) $tmp += 4; if ($row['id_contact'] == $id_contact) $tmp++; if (Tools :: getValue('id_product') != 0 && $row['id_product'] == Tools :: getValue('id_product')) $tmp += 2; if ($tmp >= 5 && $tmp >= $score) { $score = $tmp; $id_customer_thread = $row['id_customer_thread']; } } } $old_message = Db :: getInstance()->getValue(' SELECT cm.message FROM ' . _DB_PREFIX_ . 'customer_message cm LEFT JOIN ' . _DB_PREFIX_ . 'customer_thread cc on (cm.id_customer_thread = cc.id_customer_thread) WHERE cc.id_customer_thread = ' . (int) ($id_customer_thread) . ' AND cc.id_shop = ' . (int) $this->context->shop->id . ' ORDER BY cm.date_add DESC'); if ($old_message == $message) { $this->context->smarty->assign('alreadySent', 1); $contact->email = ''; $contact->customer_service = 0; } if ($contact->customer_service) { if ((int) $id_customer_thread) { $ct = new CustomerThread($id_customer_thread); $ct->status = 'open'; $ct->id_lang = (int) $this->context->language->id; $ct->id_contact = (int) ($id_contact); $ct->id_order = (int) $id_order; if ($id_product = (int) Tools :: getValue('id_product')) $ct->id_product = $id_product; $ct->update(); } else { $ct = new CustomerThread(); if (isset ($customer->id)) $ct->id_customer = (int) ($customer->id); $ct->id_shop = (int) $this->context->shop->id; $ct->id_order = (int) $id_order; if ($id_product = (int) Tools :: getValue('id_product')) $ct->id_product = $id_product; $ct->id_contact = (int) ($id_contact); $ct->id_lang = (int) $this->context->language->id; $ct->email = $from; $ct->status = 'open'; $ct->token = Tools :: passwdGen(12); $ct->add(); } if ($ct->id) { $cm = new CustomerMessage(); $cm->id_customer_thread = $ct->id; $cm->message = $message; /*if (isset ($fileAttachment['rename']) && !empty ($fileAttachment['rename']) && rename($fileAttachment['tmp_name'], _PS_UPLOAD_DIR_ . basename($fileAttachment['rename']))) { $cm->file_name = $fileAttachment['rename']; @ chmod(_PS_UPLOAD_DIR_ . basename($fileAttachment['rename']), 0664); }*/ $cm->ip_address = ip2long(Tools :: getRemoteAddr()); $cm->user_agent = $_SERVER['HTTP_USER_AGENT']; if (!$cm->add()) $this->errors[] = Tools :: displayError('An error occurred while sending the message.'); } else $this->errors[] = Tools :: displayError('An error occurred while sending the message.'); } if (!count($this->errors)) { $var_list = array ( '{message}' => Tools :: nl2br(stripslashes($message)), '{email}' => $from, '{product_name}' => '', ); /*if (isset ($fileAttachment['name'])) $var_list['{attached_file}'] = $fileAttachment['name'];*/ $id_product = (int) Tools :: getValue('id_product'); /*if (isset ($ct) && Validate :: isLoadedObject($ct) && $ct->id_order) { $order = new Order((int) $ct->id_order); $var_list['{order_name}'] = $order->getUniqReference(); $var_list['{id_order}'] = (int) $order->id; }*/ if ($id_product) { $product = new Product((int) $id_product); if (Validate :: isLoadedObject($product) && isset ($product->name[Context :: getContext()->language->id])) $var_list['{product_name}'] = $product->name[Context :: getContext()->language->id]; } if (empty ($contact->email)) /*Mail :: Send($this->context->language->id, 'contact_form', ((isset ($ct) && Validate :: isLoadedObject($ct)) ? sprintf(Mail :: l('Your message has been correctly sent #ct%1$s #tc%2$s'), $ct->id, $ct->token) : Mail :: l('Your message has been correctly sent')), $var_list, $from, null, null, null, $fileAttachment);*/ Mail :: Send($this->context->language->id, 'contact_form', ((isset ($ct) && Validate :: isLoadedObject($ct)) ? sprintf(Mail :: l('Your message has been correctly sent #ct%1$s #tc%2$s'), $ct->id, $ct->token) : Mail :: l('Your message has been correctly sent')), $var_list, $from, null, null, null, null); else { /*if (!Mail :: Send($this->context->language->id, 'contact', Mail :: l('Message from contact form') . ' [no_sync]', $var_list, $contact->email, $contact->name, $from, ($customer->id ? $customer->firstname . ' ' . $customer->lastname : ''), $fileAttachment) || !Mail :: Send($this->context->language->id, 'contact_form', ((isset ($ct) && Validate :: isLoadedObject($ct)) ? sprintf(Mail :: l('Your message has been correctly sent #ct%1$s #tc%2$s'), $ct->id, $ct->token) : Mail :: l('Your message has been correctly sent')), $var_list, $from, null, $contact->email, $contact->name, $fileAttachment)) $this->errors[] = Tools :: displayError('An error occurred while sending the message.');*/ if (!Mail :: Send($this->context->language->id, 'contact', Mail :: l('Request info about product: ') . $product->name[Context :: getContext()->language->id], $var_list, $contact->email, $contact->name, $from, ($customer->id ? $customer->firstname . ' ' . $customer->lastname : ''), null) || !Mail :: Send($this->context->language->id, 'contact_form', ((isset ($ct) && Validate :: isLoadedObject($ct)) ? sprintf(Mail :: l('Your message has been correctly sent #ct%1$s #tc%2$s'), $ct->id, $ct->token) : Mail :: l('Your message has been correctly sent')), $var_list, $from, null, $contact->email, $contact->name, null)) $this->errors[] = Tools :: displayError('An error occurred while sending the message.'); } } if (count($this->errors) > 1) array_unique($this->errors); else $this->context->smarty->assign('confirmation', 1); } } } /* Fin contact form en producto */ Casi todos los cambios que realicé en éste código, se limitan a quitar información innecesaria: archivos adjuntos, y numero de orden; todas las líneas encerradas en comentario son relacionadas con éstas omisiones. Por ésta razón, me parecieron innecesarias las dos llamadas a addJsDefL en el .tpl Agregué, en la línea 71, una asignación en cero para el número de orden, comentando la instrucción original: /*$id_order = (int) $this->getOrder();*/ $id_order = 0; En las líneas 155-160, eliminé del array la información de archivo adjunto y numero de orden: $var_list = array ( '{message}' => Tools :: nl2br(stripslashes($message)), '{email}' => $from, '{product_name}' => '', ); En las lineas 181 y 186, cambié los comandos Mail, eliminando los adjuntos, y cambiando el nombre de las plantillas de correo a enviar. Aquí también hay un pequeño cambio en el subject del mensaje, agregándo el nombre del producto al mismo. ¿Se acuerdan del campo hidden que puse en el tpl con el id del producto? Para ésto sirvió if (empty ($contact->email)) /*Mail :: Send($this->context->language->id, 'contact_form', ((isset ($ct) && Validate :: isLoadedObject($ct)) ? sprintf(Mail :: l('Your message has been correctly sent #ct%1$s #tc%2$s'), $ct->id, $ct->token) : Mail :: l('Your message has been correctly sent')), $var_list, $from, null, null, null, $fileAttachment);*/ Mail :: Send($this->context->language->id, 'contact_form_product', ((isset ($ct) && Validate :: isLoadedObject($ct)) ? sprintf(Mail :: l('Your message has been correctly sent #ct%1$s #tc%2$s'), $ct->id, $ct->token) : Mail :: l('Your message has been correctly sent')), $var_list, $from, null, null, null, null); else { /*if (!Mail :: Send($this->context->language->id, 'contact', Mail :: l('Message from contact form') . ' [no_sync]', $var_list, $contact->email, $contact->name, $from, ($customer->id ? $customer->firstname . ' ' . $customer->lastname : ''), $fileAttachment) || !Mail :: Send($this->context->language->id, 'contact_form', ((isset ($ct) && Validate :: isLoadedObject($ct)) ? sprintf(Mail :: l('Your message has been correctly sent #ct%1$s #tc%2$s'), $ct->id, $ct->token) : Mail :: l('Your message has been correctly sent')), $var_list, $from, null, $contact->email, $contact->name, $fileAttachment)) $this->errors[] = Tools :: displayError('An error occurred while sending the message.');*/ if (!Mail :: Send($this->context->language->id, 'contact_product', Mail :: l('Request info about product: ') . $product->name[Context :: getContext()->language->id], $var_list, $contact->email, $contact->name, $from, ($customer->id ? $customer->firstname . ' ' . $customer->lastname : ''), null) || !Mail :: Send($this->context->language->id, 'contact_form', ((isset ($ct) && Validate :: isLoadedObject($ct)) ? sprintf(Mail :: l('Your message has been correctly sent #ct%1$s #tc%2$s'), $ct->id, $ct->token) : Mail :: l('Your message has been correctly sent')), $var_list, $from, null, $contact->email, $contact->name, null)) $this->errors[] = Tools :: displayError('An error occurred while sending the message.'); } Se puede observar que los nombres de los archivos de plantilla son: contact_form_product y contact_product lo que nos lleva al siguiente paso plantillas de correo Simplemente, dentro de la carpeta mails/idioma de la tienda ( en mi caso, mx) copié los archivos contact.html, contact.txt, contact_form.html y contact_form.txt a sus nuevos nombres, como lo especifiqué más arriba: contact_product.html, contact_product.txt, contact_form_product.html y contact_form_product.txt. Aquí un detalle de los archivos desde filezilla Después de eso (o antes), con un editor abrí cada uno de los archivos *_product.* y eliminé la información de id del pedido y archivo adjunto. En el caso de los .html, ésta se encuentra dentro de secciones <span>. En el caso de los txt, son líneas simples, fáciles de identificar. No muestro detalles de éstos cambios, ya que son simples de hacer. traducciones Como comenté más arriba, dejé los mensajes a cliente en el .tpl en su formato original en inglés, con el fin de traducirlos desde el menú de traducciones, pues bien, en el back, me voy al menú Localización, Traducciones. Allí selecciono Traducciones del Fron Office, Mi tema e idioma defecto y le doy click a Modificar. Después, busco la sección Product y aquí la tenemos, mostrando en rojo los nuevos campos añadidos Ahora, lo único que falta, es jugar con las hojas de estilo para personalizar la apariencia. Pero eso, es otro boleto Pues eso es todo. Espero que a los que lean éste post les sea tan útil como a mí. Por último, me obligo a poner mi DISCLAIMER La información, códigos y procesos aquí vertida es, opinión meramente personal. Se proporciona *tal cual* y no otorga ningún derecho ni obligación. Saludos!!
  3. Hi Beginner thoughts: Do you have BlockUserInfo module enabled? Is it hooked to displayHeader and displayTop? Regards
  4. Hello Prestashop 1.6.09 I'm triying to setup twitter cards for my store: http://tiendascancun.com/ I'm triying to validate, and request card aproval on the twiter card validator at: https://cards-dev.twitter.com/validator First of all i tried this module: http://www.prestashop.com/forums/topic/303217-module-free-prestashop-twitter-card-module/ After, I deactivate it and, by following the Summary Card directives https://dev.twitter.com/cards/types/summary I put the code, for testing on header.tpl, just after the favicon tag: <link rel="shortcut icon" type="image/x-icon" href="{$favicon_url}?{$img_update_time}" /> {* facebook tags*} <meta name="og:title" content="{$meta_title}" /> {if isset($have_image)} {if $have_image} <meta name="og:image" content="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'large_default')}" /> <meta name="og:type" content="og:product" /> <meta name="og:description" content="{$meta_description} Adquierelo en linea ahora." /> {/if} {else} <meta name="og:image" content="{$img_ps_dir}logo_fb.png" /> <meta name="og:type" content="og:website" /> <meta name="og:description" content="{$meta_description}" /> {/if} {* twitter card *} <meta name="twitter:card" content="summary" /> <meta name="twitter:site" content="@tiendascancun" /> <meta name="twitter:creator" content="@tiendascancun" /> <meta name="twitter:title" content="{$meta_title}" /> <meta name="twitter:description" content="{$meta_description}" /> <meta name="twitter:image" content="{$img_ps_dir}logo_fb.png" /> <meta name="twitter:url" content="http://tiendascancun.com/" /> The first group of lines, are the Facebook OpenGraph Tags, wich worked me good on FB. So, no matter what I do , I allways get the same results on the validator: "Unable to render card preview" and "Error: internal server error" I thought that the problem was because I used to have this store installed on a domain subfolder. I already change it to / (public_html), I also added to the begining of robots.txt the lines: User-agent: Twitterbot Disallow: I'm running out of ideas. And Google does not like my questions. Has someone had this problem? Did you found a solution to share? Many thanks in advanced. Best regards
  5. Yes. i did. I found a solution!! I was posting it when your reply came in. First of all Emma, my apologizes for hijacking your post. here are my results: All the steps on your tutorial plus: On /modules/blocktopmenu/blocktopmenu.php public function hookDisplayNav($params) { return $this->hookDisplayTop($params); $this->context->controller->addJS($this->_path.'js/hoverIntent.js'); $this->context->controller->addJS($this->_path.'js/superfish-modified.js'); $this->context->controller->addJS($this->_path.'js/blocktopmenu.js'); $this->context->controller->addCSS($this->_path.'css/blocktopmenu.css'); $this->context->controller->addCSS($this->_path.'css/superfish-modified.css'); } public function hookdisplayHeader($params){ $this->context->controller->addJS($this->_path.'js/hoverIntent.js'); $this->context->controller->addJS($this->_path.'js/superfish-modified.js'); $this->context->controller->addJS($this->_path.'js/blocktopmenu.js'); $this->context->controller->addCSS($this->_path.'css/blocktopmenu.css'); $this->context->controller->addCSS($this->_path.'css/superfish-modified.css'); } On /themes/default-bootstrap/css/modules/blocktopmenu/css/blocktopmenu.css #block_top_menu { padding-top: 1px;/*25px;*/ padding-bottom: 1px; padding-left: 0px; z-index: 28895; } With that code, I also moved the block top menu to the left. Now, Block Top Menu is hooked on displayHeader actionCategoryUpdate displayNav Many thanks!!!
  6. Sorry. Geolocation settings. It's open now for U.S. and Europe. At this moment, I have the menu hooked on : displayHeader actionCategoryUpdate displayNav displayTop -- only because i need to keep working on the store. When I navigate to a tab from displayTop, I can see the same tab shaded on Nav bar . I'm thinking that maybe there is a div or something over the menu, that it's blocking it. Many thanks. And the best regards.
  7. Hello. I may be doing something wrong. I followed all the tutorial instructions, step by step, twice. I can hook the menu on displayNav... but it loses all javascript's operation. Hover effect doesn't work, neither the hyperlinks.. This is my store. ver 1.606 http://bit.ly/1zY1R9q What could be missing? Edit:. I forgot to mention. The hookdisplayHeader is on blocktopmenu.php. Just Bellow hookDisplayNav function. Best regards
  8. Hola Al final, la solución estuvo por desinstalar la Ver. 1.6, e instalar la Ver. 1.5.6.2, para la cual sí es compatible el template. Tenía la idea de que al ser la 1.6 la ultima "estable" funcionaría con compatibilidad hacia atrás con los templates aún no actualizados, craso error mío. Saludos
  9. Buenas noches a todos. Un saludo desde México. Principiante en prestashop. Ofrezco una disculpa anticipada si algo hice mal. Asimismo, agradezco cualquier crítica constructiva. Versión 1.6.0.6 Estoy usando ésta plantilla: http://addons.prestashop.com/es/demo/FO4155.html Ésta es mi tienda: http://plumascancun.com Inmediatamente después de instalar el template, la columna izquierda, y las columnas del footer desaparecieron. He intentado varias opciones tomadas desde búsquedas en estos foros (inglés y español) y otros recursos encontrados por Google. Finalmente, hace unos momentos pude activar la columna izquierda del home habilitándola desde la configuración del propio tema ( preferencias, temas). Sin embargo, al momento de entrar al catálogo de productos, la columna desaparece. Los hooks configurados para ésta página son : Bloque de compartir en Fb, Enviar a un amigo, y productos favoritos. Por alguna razón, posiciones no me permite agregar los hooks a los mismos bloques en ésta sección (displayleftcolproduct) El error que me da es que el modulo no puede ser transplantado en el hook. Por otro lado, el footer no me mostraba las columnas Mi cuenta y CMS. Pude mostrar la columna de la cuenta de manera chapucera, editando el global.css del template activo: #footer .myaccount .lnk_wishlist img {display:initial} //era none Pero, solo pude mostrar el bloque de la cuenta. Aún tengo el bloque CMS invisible, de hecho, si inspecciono el código de la página con las herramientas de desarrollo de Chrome, ni siquiera veo que exista el div correspondiente. Ya le envié correo al desarrollador del template, pero no he obtenido una respuesta satisfactoria. Sospecho que la solución es muy simple, pero mi reducido conocimiento de la plataforma no me permite deducirla, y google ya empieza a disvariar con mis consultas... ¿Alguna idea? Agradezco de antemano Saludos cordiales Hector
×
×
  • Create New...