function display($cachable = false, $urlparams = false) { $mainframe = JFactory::getApplication(); $jshopConfig = JSFactory::getConfig(); $user = JFactory::getUser(); $dispatcher = JDispatcher::getInstance(); $model = JSFactory::getModel('productShop', 'jshop'); $ajax = JRequest::getInt('ajax'); $tmpl = JRequest::getVar("tmpl"); $product_id = JRequest::getInt('product_id'); $category_id = JRequest::getInt('category_id'); $attr = JRequest::getVar("attr"); JSFactory::loadJsFilesLightBox(); if ($tmpl != "component") { $model->storeEndPageBuy(); } $back_value = $model->getBackValue($product_id, $attr); $dispatcher->trigger('onBeforeLoadProduct', array(&$product_id, &$category_id, &$back_value)); $dispatcher->trigger('onBeforeLoadProductList', array()); $product = JSFactory::getTable('product', 'jshop'); $product->load($product_id); $category = JSFactory::getTable('category', 'jshop'); $category->load($category_id); $category->name = $category->getName(); $model->setProduct($product); $listcategory = $model->getCategories(1); $model->prepareView($back_value); $model->clearBackValue(); $attributes = $model->getAttributes(); $all_attr_values = $model->getAllAttrValues(); if (!$product->checkView($category, $user, $category_id, $listcategory)) { JError::raiseError(404, _JSHOP_PAGE_NOT_FOUND); return; } JshopHelpersMetadata::product($category, $product); $product->hit(); $allow_review = $model->getAllowReview(); $text_review = $model->getTextReview(); $select_review = $model->getSelectReview(); $hide_buy = $model->getHideBuy(); $available = $model->getTextAvailable(); $default_count_product = $model->getDefaultCountProduct($back_value); $displaybuttons = $model->getDisplayButtonsStyle(); $product_images = $product->getImages(); $product_videos = $product->getVideos(); $product_demofiles = $product->getDemoFiles(); $dispatcher->trigger('onBeforeDisplayProductList', array(&$product->product_related)); $view = $this->getView("product"); $view->setLayout("product_" . $product->product_template); $dispatcher->trigger('onBeforeDisplayProduct', array(&$product, &$view, &$product_images, &$product_videos, &$product_demofiles)); $view->assign('config', $jshopConfig); $view->assign('image_path', $jshopConfig->live_path . '/images'); $view->assign('noimage', $jshopConfig->noimage); $view->assign('image_product_path', $jshopConfig->image_product_live_path); $view->assign('video_product_path', $jshopConfig->video_product_live_path); $view->assign('video_image_preview_path', $jshopConfig->video_product_live_path); $view->assign('product', $product); $view->assign('category_id', $category_id); $view->assign('images', $product_images); $view->assign('videos', $product_videos); $view->assign('demofiles', $product_demofiles); $view->assign('attributes', $attributes); $view->assign('all_attr_values', $all_attr_values); $view->assign('related_prod', $product->product_related); $view->assign('path_to_image', $jshopConfig->live_path . 'images/'); $view->assign('live_path', JURI::root()); $view->assign('enable_wishlist', $jshopConfig->enable_wishlist); $view->assign('action', SEFLink('index.php?option=com_jshopping&controller=cart&task=add', 1)); $view->assign('urlupdateprice', SEFLink('index.php?option=com_jshopping&controller=product&task=ajax_attrib_select_and_price&product_id=' . $product_id . '&ajax=1', 1, 1)); if ($allow_review) { JSFactory::loadJsFilesRating(); $modelreviewlist = JSFactory::getModel('productReviewList', 'jshop'); $modelreviewlist->setModel($product); $modelreviewlist->load(); $review_list = $modelreviewlist->getList(); $pagination = $modelreviewlist->getPagination(); $pagenav = $pagination->getPagesLinks(); $view->assign('reviews', $review_list); $view->assign('pagination', $pagenav); $view->assign('pagination_obj', $pagination); $view->assign('display_pagination', $pagenav != ""); } $view->assign('allow_review', $allow_review); $view->assign('select_review', $select_review); $view->assign('text_review', $text_review); $view->assign('stars_count', floor($jshopConfig->max_mark / $jshopConfig->rating_starparts)); $view->assign('parts_count', $jshopConfig->rating_starparts); $view->assign('user', $user); $view->assign('shippinginfo', SEFLink($jshopConfig->shippinginfourl, 1)); $view->assign('hide_buy', $hide_buy); $view->assign('available', $available); $view->assign('default_count_product', $default_count_product); $view->assign('folder_list_products', "list_products"); $view->assign('back_value', $back_value); $view->assign('displaybuttons', $displaybuttons); $dispatcher->trigger('onBeforeDisplayProductView', array(&$view)); $view->display(); $dispatcher->trigger('onAfterDisplayProduct', array(&$product)); if ($ajax) { die; } }