Jump to content

Ayuda con wishlist


Yorch_Sánchez

Recommended Posts

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

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.

  • Like 1
Link to comment
Share on other sites

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 by ventura (see edit history)
Link to comment
Share on other sites

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

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

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

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

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 by Yorch_Sánchez (see edit history)
Link to comment
Share on other sites


{$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

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 by Yorch_Sánchez (see edit history)
Link to comment
Share on other sites

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

Create an account or sign in to comment

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

Create an account

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

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...