Yorch_Sánchez Posted September 11, 2015 Share Posted September 11, 2015 Hola a todos, necesito puedan ayudarme, tengo mi wishlist llamado en otra ventana (en manufacturer) y no puedo atrapar o saber el id del wishlist existente, podrian apoyarme para saber como conocer este dato. El codigo que tengo es este <a id="show_products_wishlist_1" href="" style="visibility:hidden" onclick="javascript:event.preventDefault();WishlistManage('block-order-detail', 'AQUI VA EL ID DEL WISHLIST');"></a> Link to comment Share on other sites More sharing options...
elperi17 Posted September 11, 2015 Share Posted September 11, 2015 Prueba a depurar smarty en tus plantillas tpl con la variable {debug}, te abrirá una ventana emergente con todas las variables y sus valores disponibles, el whislist es una de ellas. Además prueba a buscar entre las variables de javascript de tu código en cualquier página de producto una vez hayas añadido algo a la wishlist. Espero poder reproducir una wishlist mañana y ayudarte más pero en todas las instalaciones que tengo siempre he deshabilitado ese módulo y ahora no lo tengo a mano. 1 Link to comment Share on other sites More sharing options...
Yorch_Sánchez Posted September 11, 2015 Author Share Posted September 11, 2015 Pues mira de hecho si ubico la variable en donde se encuentra {$wishlists[0].id_wishlist}, pero si esta variable la uso en el tpl de manufacturer no da la información de el id que necesito, ojala me puedas decir como se puede pasar ese dato, o como correr un query para sacar ese dato Link to comment Share on other sites More sharing options...
ventura Posted September 12, 2015 Share Posted September 12, 2015 (edited) Deberas incluir el acceso al object Wishlist en controllers\front\ManufacturerController.php añadiendo en initContent if (Module::isEnabled('blockwishlist')){ $wishlistObj = new WishList(Tools::getValue('id_wishlist')); $wishlist = $wishlistObj->getByIdCustomer($this->context->customer->id); } Edited September 12, 2015 by ventura (see edit history) Link to comment Share on other sites More sharing options...
Yorch_Sánchez Posted September 14, 2015 Author Share Posted September 14, 2015 Hola, agregue la información como me dijiste pero aun no puedo acceder a la variable, no me aparece nada cuando la mando llamar la variable, he ocupado el mismo dato donde la encuentro en wishlist ({$wishlists[$i].id_wishlist}) y no aparece el id, puedes indicarme si es el modo correcto o si debo de acceder de otro modo los codigos quedarón asi: ManufacturerController.php public function initContent() { parent::initContent(); if (Module::isEnabled('blockwishlist')){ $wishlistObj = new WishList(Tools::getValue('id_wishlist')); $wishlist = $wishlistObj->getByIdCustomer($this->context->customer->id); } if (Validate::isLoadedObject($this->manufacturer) && $this->manufacturer->active && $this->manufacturer->isAssociatedToShop()) { $this->productSort(); $this->assignOne(); $this->setTemplate(_PS_THEME_DIR_.'manufacturer.tpl'); } else { $this->assignAll(); $this->setTemplate(_PS_THEME_DIR_.'manufacturer-list.tpl'); } } manufacturer.tpl id del whishlist = {$wishlists[0].id_wishlist}<br>/*Esta es la variable en la que encuentro el wishlist en mywishlist.tpl*/ {for $i=0 to 100} {if $wishlists[$i].id_wishlist!=""} id del whishlist {$i}= {$wishlists[$i].id_wishlist}<br> {/if} {/for} El For lo tengo para encontrar en que posición se esta almacenando al id del whislist pero no logro obtenerlo Deberas incluir el acceso al object Wishlist en controllers\front\ManufacturerController.php añadiendo en initContent if (Module::isEnabled('blockwishlist')){ $wishlistObj = new WishList(Tools::getValue('id_wishlist')); $wishlist = $wishlistObj->getByIdCustomer($this->context->customer->id); } Link to comment Share on other sites More sharing options...
ventura Posted September 14, 2015 Share Posted September 14, 2015 Es que la instancia esa es para acceder a wishllist que tenga el cliente, no entendido bien lo que quieres hacer, si acceder a la id de las wishlist de cada cliente o a uno general de todas las wishlist generadas, si es asi, necesitas una query tipo $wishlist = Db::getInstance()->executeS(' SELECT w.`id_wishlist`, w.`name`, w.`id_customer`, c.`firstname`, c.`lastname` FROM `'._DB_PREFIX_.'wishlist` w INNER JOIN `'._DB_PREFIX_.'customer` c ON c.`id_customer` = w.`id_customer` WHERE w.`id_shop` = '.(int)$this->context->shop->id); Link to comment Share on other sites More sharing options...
Yorch_Sánchez Posted September 14, 2015 Author Share Posted September 14, 2015 Hola Ventura Bueno mira, lo que "necesito" o "busco" es que en la pagina de manufacturer debajo de todos los productos se muestren los productos que se han agregado al wishlist (esto es por cada usuario), ya logre construir el "vinculo" para ver los productos que contiene cada wishlist pero el id_wishlist lo debo poner manualmente, ya que cada que se elimina o se "limpia" el wishlist el id cambia, y quiero poder obtener ese id, para solo llamarlo en esa sección, te adjunto el cosigo que tengo. para que asi te puedas dar una idea. <div class="frame_Favorites"> <input id="img_btnI" class="btn_display_newProd" type="image" src="/lebour/img/manufacturer/flecha_regreso.png" onclick="displayProdLeftBtn();">/*Esto solo es para desplazar a la izquierda*/ <div id="block-order-detail"> </div>/*AQUI ES DONDE SE DESPLIEGA EL WISHLIST*/ <input id="img_btnD" class="btn_display_newProd" type="image" src="/lebour/img/manufacturer/flecha.png" onclick="displayProdRightBtn();">/*Esto solo es para desplazar a la derecha*/ </div> <!--**************************** Módulo de favoritos *************************************--> <a id="show_products_wishlist_1" href="" style="visibility:hidden" onclick="javascript:event.preventDefault();WishlistManage('block-order-detail', '10');"></a>/*ESTE ES EL VINCULO CON EL QUE SE DESPLIEGA EL WHISLIST EL NÚMERO 10 QUE APARECE ES EL ID DEL WISHLIST ACTUAL*/ <!--************************ Fin del módulo de favoritos *********************************--> Lo que busco es que en ligar de tener que poner el número manualmente pueda ponder el id de la variable y se genere de manera automatica. Espero me puedas ayudar con esto, pues ya no se ni como hacerle. Es que la instancia esa es para acceder a wishllist que tenga el cliente, no entendido bien lo que quieres hacer, si acceder a la id de las wishlist de cada cliente o a uno general de todas las wishlist generadas, si es asi, necesitas una query tipo $wishlist = Db::getInstance()->executeS(' SELECT w.`id_wishlist`, w.`name`, w.`id_customer`, c.`firstname`, c.`lastname` FROM `'._DB_PREFIX_.'wishlist` w INNER JOIN `'._DB_PREFIX_.'customer` c ON c.`id_customer` = w.`id_customer` WHERE w.`id_shop` = '.(int)$this->context->shop->id); Link to comment Share on other sites More sharing options...
ventura Posted September 14, 2015 Share Posted September 14, 2015 Te lo he dicho mal, perdona Añadelo en protected function assignOne() asi if (Module::isEnabled('blockwishlist')){ $wishlistObj = new WishList(Tools::getValue('id_wishlist')); $wishlist = $wishlistObj->getByIdCustomer($this->context->customer->id); $this->context->smarty->assign('wishlist', $wishlist); } ya desde el .tpl puedes poder acceder al id_wishlist Link to comment Share on other sites More sharing options...
Yorch_Sánchez Posted September 14, 2015 Author Share Posted September 14, 2015 (edited) Hola Ventura. Ya me esta funcionando el arreglo del wishlist, pero no me deja acceder aun al id del wishlist, estoy ocupando las variables igual que en el blockwishlist, pero no me muestra los datos solo en algun caso me muestra "array", perdona tanta molestia me puedes indicar cual podria ser el error. las variables que estoy usando son: id del whishlist = {$wishlists[0].id_wishlist}<br> id del whishlist = {$wishlist.id_wishlist}<br> id del whishlist = {$wishlist[0]}<br>/*ESTE ME DEVUELVE ARRAY PERO NO PUEDO ACCEDER A LOS ELEMNTOS*/ id del whishlist = {$id_wishlist}<br> id del whishlist = {$wishlistObj.id_wishlist}<br> Te lo he dicho mal, perdona Añadelo en protected function assignOne() asi if (Module::isEnabled('blockwishlist')){ $wishlistObj = new WishList(Tools::getValue('id_wishlist')); $wishlist = $wishlistObj->getByIdCustomer($this->context->customer->id); $this->context->smarty->assign('wishlist', $wishlist); } ya desde el .tpl puedes poder acceder al id_wishlist Edited September 14, 2015 by Yorch_Sánchez (see edit history) Link to comment Share on other sites More sharing options...
ventura Posted September 14, 2015 Share Posted September 14, 2015 {$wishlists[0].id_wishlist} // Tienes el primer id solo, en el caso de que el cliente tenga mas de uno no te los tomara {$wishlists.id_wishlist} // necesitaras acceder al array para poder tomarlo, {foreach from=$wishlist item=$wishlists} {$wishlists.id_wishlist}{/foreach} Link to comment Share on other sites More sharing options...
ventura Posted September 14, 2015 Share Posted September 14, 2015 (edited) Prueba a ver que te imprime {$wishlist[0]|@print_r} {$wishlist|@print_r} Edited September 14, 2015 by ventura (see edit history) Link to comment Share on other sites More sharing options...
Yorch_Sánchez Posted September 14, 2015 Author Share Posted September 14, 2015 (edited) Ok, esto tambien se agrega dentro de protected function assignOne? y con los ejemplos anteriores de las variables no me muestra nada (se queda en blanco el id_wishlist) Edited September 14, 2015 by ventura (see edit history) Link to comment Share on other sites More sharing options...
Yorch_Sánchez Posted September 14, 2015 Author Share Posted September 14, 2015 (edited) Es ud todo un maestro!!!Si ya me funciona como lo esperaba y estoy obteniendo el di tal cual lo requeria, de verdad muchas gracias!!! Solo una duda mas si necesitara meterlo en category.tpl, en cual función del CategoryController habria que incluirlo? Tienes esto tambien que es lo que creo que necesitas if ($this->context->customer->isLogged()) { $wishlists = Wishlist::getByIdCustomer($this->context->customer->id); if (empty($this->context->cookie->id_wishlist) === true || WishList::exists($this->context->cookie->id_wishlist, $this->context->customer->id) === false) { if (!count($wishlists)) $id_wishlist = false; else { $id_wishlist = (int)$wishlists[0]['id_wishlist']; $this->context->cookie->id_wishlist = (int)$id_wishlist; } } else $id_wishlist = $this->context->cookie->id_wishlist; Y le asignas la variable $this->context->smarty->assign('id_wishlist', $id_wishlist); Edited September 14, 2015 by Yorch_Sánchez (see edit history) Link to comment Share on other sites More sharing options...
ventura Posted September 14, 2015 Share Posted September 14, 2015 Ok, esto tambien se agrega dentro de protected function assignOne? y con los ejemplos anteriores de las variables no me muestra nada (se queda en blanco el id_wishlist) si, de ahi lo llama al init-content Revisa lo que te he puesto antes, te deberia tomar los valores Link to comment Share on other sites More sharing options...
ventura Posted September 14, 2015 Share Posted September 14, 2015 Si, en el initContent Link to comment Share on other sites More sharing options...
Yorch_Sánchez Posted September 14, 2015 Author Share Posted September 14, 2015 Gracias nuevamente, de verdad que me ha sido muy util tu ayuda Link to comment Share on other sites More sharing options...
ventura Posted September 14, 2015 Share Posted September 14, 2015 De nada. Me alegro de que hayas podido solucionarlo 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now