Skip to main content

How to create Guest Wishlist For Magento

Add to wishlist without customer login


Add three tables

CREATE TABLE `wishlist` (
`wishlist_id` INT(11) NOT NULL AUTO_INCREMENT,
`customer_id` INT(11) NULL DEFAULT NULL,
`shared` INT(11) NULL DEFAULT NULL,
`sharing_code` VARCHAR(50) NULL DEFAULT NULL,
`updated_at` TIMESTAMP NULL DEFAULT NULL,
`cookie` VARCHAR(255) NULL DEFAULT NULL,
PRIMARY KEY (`wishlist_id`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
AUTO_INCREMENT=0
;


CREATE TABLE `wishlist_item` (
`wishlist_item_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Wishlist item ID',
`wishlist_id` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Wishlist ID',
`product_id` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Product ID',
`store_id` SMALLINT(5) UNSIGNED NULL DEFAULT NULL COMMENT 'Store ID',
`added_at` TIMESTAMP NULL DEFAULT NULL COMMENT 'Add date and time',
`description` TEXT NULL COMMENT 'Short description of wish list item',
`qty` DECIMAL(12,4) NOT NULL COMMENT 'Qty',
PRIMARY KEY (`wishlist_item_id`),
INDEX `IDX_WISHLIST_ITEM_WISHLIST_ID` (`wishlist_id`),
INDEX `IDX_WISHLIST_ITEM_PRODUCT_ID` (`product_id`),
INDEX `IDX_WISHLIST_ITEM_STORE_ID` (`store_id`)
)
COMMENT='Wishlist items'
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=0
;

CREATE TABLE `wishlist_item_option` (
`option_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Option Id',
`wishlist_item_id` INT(10) UNSIGNED NOT NULL COMMENT 'Wishlist Item Id',
`product_id` INT(10) UNSIGNED NOT NULL COMMENT 'Product Id',
`code` VARCHAR(255) NOT NULL COMMENT 'Code',
`value` TEXT NULL COMMENT 'Value',
PRIMARY KEY (`option_id`)
)
COMMENT='Wishlist Item Option Table'
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=3
;


..........................................................................
After That :

edit - app/code/core/Mage/Wishlist/controllers/IndexController.php

Replace these functions:
protected $_skipAuthentication = true;

 public function skipAuthentication()
    {
        $this->_skipAuthentication = true;
        return $this;
    }


 protected function _getWishlist($wishlistId = null)
    {
        $wishlist = Mage::registry('wishlist');
        if ($wishlist) {
            return $wishlist;
        }

        try {
            if (!$wishlistId) {
                $wishlistId = $this->getRequest()->getParam('wishlist_id');
            }
            $customerId = Mage::getSingleton('customer/session')->getCustomerId();
            /* @var Mage_Wishlist_Model_Wishlist $wishlist */
            $wishlist = Mage::getModel('wishlist/wishlist');
            if ($wishlistId) {
                $wishlist->load($wishlistId);
            } else {
                $wishlist->loadByCustomer($customerId, true);
            }

            if (!$wishlist->getId() ) {
                $wishlist = null;
                Mage::throwException(
                    Mage::helper('wishlist')->__("Requested wishlist doesn't exist")
                );
            }

            Mage::register('wishlist', $wishlist);
        } catch (Mage_Core_Exception $e) {
            Mage::getSingleton('wishlist/session')->addError($e->getMessage());
            return false;
        } catch (Exception $e) {
            Mage::getSingleton('wishlist/session')->addException($e,
                Mage::helper('wishlist')->__('Wishlist could not be created.')
            );
            return false;
        }

        return $wishlist;
    }

Solved :)

Comments

Popular posts from this blog

Parsing Domain Name From URL In PHP

To get Domain name from the url, we can use parse_url() php function. This would filter the domain name from the given url. $domain = str_ireplace ( 'www.' , '' , parse_url ( $url , PHP_URL_HOST )); This would return the google.com for both http://google.com and http://www.google.com

get directory paths, get Base URLs, get URLs in static block, get secure URL in Magento

1) Get Directory paths  Mage::getBaseDir()  //output : /var/www/html/magento Mage::getBaseDir('app')  //output : /var/www/html/magento/app Mage::getBaseDir('media') //output : /var/www/html/magento/media Mage::getBaseDir(‘design’) => Get design directory path Mage::getBaseDir(‘code’) => Gives code directory file path Mage::getBaseDir(‘lib’) => Gives lib directory file path Mage::getBaseDir(‘skin’) => Gives skin directory file path Mage::getBaseDir(‘var’) => Gives var directory file path Mage::getBaseDir(‘cache’) => Gives cache directory file path Mage::getBaseDir(‘log’) => Gives log directory file path       2) Get Base URL  Mage::getBaseUrl() => Get base url path e.g. http://yourwebsite.com/  Mage::getBaseUrl('media') => Get MEDIA folder path e.g. http://yourwebsite.com/media/  Mage::getBaseUrl('js') => Get JS folder path e.g. http://yourwebsite.com/js/  Mage::getBaseUrl('skin') => Get...

Upgrade from Magento 1.7.0.2 to 1.9.0.1

Upgrade Roadmap for 1.9.0.1 from 1.7 1) take a backup of current database and current 1.7 code. 2) download latest magento from the  http://www.magentocommerce.com/download 3) remove all folders and files from your 1.7 code (but you should  have backup somewhere) and place all folders and files from the 1.9. 4) now from your 1.7 merge your following custom folders into the 1.9 - Community app/code/community - Local app/code/local - Media - your theme or package (app/design/frontend/default/<ur theme> or  app/design/frontend/<your package>) - custom folders from Skin (both for adminhtml and frontend). - copy your custom xml files from app/etc/modules/ to current  app/etc/modules/ - any custom admin theme folder  from adminhtml/default/yourtheme. - copy your custom folders from adminhtml/default/default/ (1.7)  to adminhtml/default/default/ (1.9). - custom js files if any from app/js/. 5) now go to app/e...