Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

При включении SeoPro перестает работать QuickView


Recommended Posts

В магазине реализованном на ocStore v1.5.5.1.1 при включении SeoPro перестает работать функция быстрого просмотра товара (QuickView).

Окно открывается как и положено, но вместо карточки товара в фрейме загружается весь сайт

Со стандартным чпу все работает нормально.
Буду признателен за подсказку.

 

 

 

Надіслати
Поділитися на інших сайтах


Вы правы конечно.

Просто первый мой магазин на OpenCart. Дизайн шаблонный. К тому же, еще в стадии доработки...

Ну да ладно

 

Заранее спасибо за помощь.

Надіслати
Поділитися на інших сайтах


Покажите код, как вы формируете ссылку для quickview

т..е.

в коде шаблона

там где в выводите

<a class="quickview" href="h**p://****-systems.ru/bumajnik-mujskoi-dc-naturalnaya-koja-km-002.html" data-height="510" data-width="700">Просмотр</a>

дело в том, что эту ссылку нельзя "прогонять" через

$this->url->link(

  • +1 1
Надіслати
Поділитися на інших сайтах

Честно говоря я в php не особо.

В category.tpl насколько я смог разобраться quickview вызывается так:

 if (typeof(init_quickview) === 'function') {
      init_quickview();
    }

А сам quickview вроде тут.

 

дело в том, что эту ссылку нельзя "прогонять" через

$this->url->link(

 

Да но при включенном стандартном seo все работает.

 

Надіслати
Поділитися на інших сайтах


Да я увидел

 

в том-то и дело, что в данном случае шаблон не подключается, а подключается шаблон продукта, потому что

 в коде прописан полный путь

<a class="quickview" href="h**tp://center-systems.ru/koshelek-toni-perotti-km-001.html" data-height="510" data-width="700">Просмотр</a>

а должен быть, скорей всего href=?route=module/quick_view ( я не знаю этого модуля, только предполагаю)

 

поэтому и прошу покажите код в шаблоне, где выводится

<a class="quickview" 
Надіслати
Поділитися на інших сайтах

Тогда возможно вот это из файла product.tpl

<?php if (isset($this->request->get['boxer'])): ?>
<?php require_once DIR_TEMPLATE . '/journal/template/product/product_quick_view.tpl'; ?>
<?php else: ?>

Ничего более подходящего найти не удалось.

Надіслати
Поділитися на інших сайтах


Это в tpl?

Все же это должно быть в контроллере..

Отключите seopro и посмотрите как выглядит ссылка на кнопке qickview

Надіслати
Поділитися на інших сайтах

Отключил

<a class="quickview" data-width="700" data-height="510" href="http://center-systems.ru/damskii-koshelek-iz-naturalnoi-koji-CANEVO-kw-003" style="z-index: 10005;">Просмотр</a>

В коде ничего особо не изменилось, помимо того, что  quickview заработал.

Надіслати
Поділитися на інших сайтах


практически ничего не изменилось, только добавился в запрос параметр boxer

 

на вскидку

найдите строку

$quickview.attr('href', href);
$quickview.attr('href', href+'?boxer=true');

и переключитесь в seopro

Надіслати
Поділитися на інших сайтах

Нашел указанную строку в header.tpl заменил. Ссылка теперь имеет вид:

<a class="quickview" href="h**p://****-systems.ru/bumajnik-mujskoi-dc-naturalnaya-koja-km-002.html?boxer=true" data-height="510" data-width="700">Просмотр</a>

Глюк некуда не исчез. 

Надіслати
Поділитися на інших сайтах


вот что происходит при включенном seopro

 

По какой-то причине страница получает редирект

А при редиректе уже параметр boxer отстутвует

 

1. нужно выяснить - почему редирект

 

2. Как избавиться? надо смотреть в код

Надіслати
Поділитися на інших сайтах

  • 1 month later...

Поставьте вот это и все заработает.. Было тоже самое. https://opencartforum.com/topic/10270-%D0%B4%D1%83%D0%B1%D0%BB%D0%B8-%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86-seopro/

 Ставьте этот файлик.  seo_pro.php(ocStore1.5.5).zip

Надіслати
Поділитися на інших сайтах


  • 8 months later...

вопрос актуален, предложение без танцев с бубном не работает. :-D

могу предложить даже ...легкое вознаграждение за решение данного вопроса

Надіслати
Поділитися на інших сайтах


Видимо, так никто и не нашел решения. А между тем все наиболее популярные западные шаблоны (от Lexus и PavoThemes, например) страдают этой болезнью.

Надіслати
Поділитися на інших сайтах


  • 10 months later...

В магазине реализованном на ocStore v1.5.5.1.1 при включении SeoPro перестает работать функция быстрого просмотра товара (QuickView).

Окно открывается как и положено, но вместо карточки товара в фрейме загружается весь сайт

 
Со стандартным чпу все работает нормально.
Буду признателен за подсказку.

 

 

вопрос актуален

Надіслати
Поділитися на інших сайтах


  • 7 months later...

В 2.1 такая же проблема с быстрым просмотром. Тема от themeforest.

Подскажите с кодом.

Product.tpl

Код кнопки быстрого просмотра

<div class="quickview">
<a href="index.php?route=product/quickview&product_id=<?php echo $product['product_id']; ?>" title="<?php echo $product['name']; ?>"><?php if($theme_options->get( 'quickview_text', $config->get( 'config_language_id' ) ) != '') { echo html_entity_decode($theme_options->get( 'quickview_text', $config->get( 'config_language_id' ) )); } else { echo 'QUICKVIEW'; } ?></a>
</div>

 

Т.е. ссылка формируется без учета SEO URL по типу index.php?route=product/quickview&product_id=  

В итоге в фрейме выводится вся страница товара целиком, а не quickview.tpl

 

Подскажите где копнуть код? 

Надіслати
Поділитися на інших сайтах


&product_id

 

заменить на prod_id

 

в контроллере $this->request->get['product_id']

заменить на $this->request->get['prod_id']

Надіслати
Поділитися на інших сайтах

Спасибо, заработал вывод в фрейме. :eek:

А добиться ЧПУ получится? Дубли ссылок не хочется делать. 

 

Смотрю в одном интернет магазине на таком же шаблоне работает с ЧПУ.

Надіслати
Поділитися на інших сайтах


самій правильный вариант,  делать post запрос.

Да. читал об этом. Опыта не сильно хватает весь php код перебрать. Хотя интерес берет свое.

Придется что-то внешнее лепить, а-ля fastorder вместо быстрого просмотра.

Надіслати
Поділитися на інших сайтах


  • 3 months later...

Вопрос актуален для версии 2.1.0.2 тема Fastor, также при открытии фрейма быстрого просмотра выдает весь сайт. Правда модуль реализован в отдельном файле. 

controller/catalog/product/

class ControllerProductQuickview extends Controller {
private $error = array();

public function index() {
$this->load->language('product/product');

$data['breadcrumbs'] = array();

$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_home'),
'href' => $this->url->link('common/home')
);

$this->load->model('catalog/category');

if (isset($this->request->get['path'])) {
$path = '';

$parts = explode('_', (string)$this->request->get['path']);

$category_id = (int)array_pop($parts);

foreach ($parts as $path_id) {
if (!$path) {
$path = $path_id;
} else {
$path .= '_' . $path_id;
}

$category_info = $this->model_catalog_category->getCategory($path_id);

if ($category_info) {
$data['breadcrumbs'][] = array(
'text' => $category_info['name'],
'href' => $this->url->link('product/category', 'path=' . $path)
);
}
}

// Set the last category breadcrumb
$category_info = $this->model_catalog_category->getCategory($category_id);

if ($category_info) {
$url = '';

if (isset($this->request->get['sort'])) {
$url .= '&sort=' . $this->request->get['sort'];
}

if (isset($this->request->get['order'])) {
$url .= '&order=' . $this->request->get['order'];
}

if (isset($this->request->get['page'])) {
$url .= '&page=' . $this->request->get['page'];
}

if (isset($this->request->get['limit'])) {
$url .= '&limit=' . $this->request->get['limit'];
}

$data['breadcrumbs'][] = array(
'text' => $category_info['name'],
'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url)
);
}
}

$this->load->model('catalog/manufacturer');

if (isset($this->request->get['manufacturer_id'])) {
$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_brand'),
'href' => $this->url->link('product/manufacturer')
);

$url = '';

if (isset($this->request->get['sort'])) {
$url .= '&sort=' . $this->request->get['sort'];
}

if (isset($this->request->get['order'])) {
$url .= '&order=' . $this->request->get['order'];
}

if (isset($this->request->get['page'])) {
$url .= '&page=' . $this->request->get['page'];
}

if (isset($this->request->get['limit'])) {
$url .= '&limit=' . $this->request->get['limit'];
}

$manufacturer_info = $this->model_catalog_manufacturer->getManufacturer($this->request->get['manufacturer_id']);

if ($manufacturer_info) {
$data['breadcrumbs'][] = array(
'text' => $manufacturer_info['name'],
'href' => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $this->request->get['manufacturer_id'] . $url)
);
}
}

if (isset($this->request->get['search']) || isset($this->request->get['tag'])) {
$url = '';

if (isset($this->request->get['search'])) {
$url .= '&search=' . $this->request->get['search'];
}

if (isset($this->request->get['tag'])) {
$url .= '&tag=' . $this->request->get['tag'];
}

if (isset($this->request->get['description'])) {
$url .= '&description=' . $this->request->get['description'];
}

if (isset($this->request->get['category_id'])) {
$url .= '&category_id=' . $this->request->get['category_id'];
}

if (isset($this->request->get['sub_category'])) {
$url .= '&sub_category=' . $this->request->get['sub_category'];
}

if (isset($this->request->get['sort'])) {
$url .= '&sort=' . $this->request->get['sort'];
}

if (isset($this->request->get['order'])) {
$url .= '&order=' . $this->request->get['order'];
}

if (isset($this->request->get['page'])) {
$url .= '&page=' . $this->request->get['page'];
}

if (isset($this->request->get['limit'])) {
$url .= '&limit=' . $this->request->get['limit'];
}

$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_search'),
'href' => $this->url->link('product/search', $url)
);
}

if (isset($this->request->get['product_id'])) {
$product_id = (int)$this->request->get['product_id'];
} else {
$product_id = 0;
}

$this->load->model('catalog/product');

$product_info = $this->model_catalog_product->getProduct($product_id);

if ($product_info) {
$url = '';

if (isset($this->request->get['path'])) {
$url .= '&path=' . $this->request->get['path'];
}

if (isset($this->request->get['filter'])) {
$url .= '&filter=' . $this->request->get['filter'];
}

if (isset($this->request->get['manufacturer_id'])) {
$url .= '&manufacturer_id=' . $this->request->get['manufacturer_id'];
}

if (isset($this->request->get['search'])) {
$url .= '&search=' . $this->request->get['search'];
}

if (isset($this->request->get['tag'])) {
$url .= '&tag=' . $this->request->get['tag'];
}

if (isset($this->request->get['description'])) {
$url .= '&description=' . $this->request->get['description'];
}

if (isset($this->request->get['category_id'])) {
$url .= '&category_id=' . $this->request->get['category_id'];
}

if (isset($this->request->get['sub_category'])) {
$url .= '&sub_category=' . $this->request->get['sub_category'];
}

if (isset($this->request->get['sort'])) {
$url .= '&sort=' . $this->request->get['sort'];
}

if (isset($this->request->get['order'])) {
$url .= '&order=' . $this->request->get['order'];
}

if (isset($this->request->get['page'])) {
$url .= '&page=' . $this->request->get['page'];
}

if (isset($this->request->get['limit'])) {
$url .= '&limit=' . $this->request->get['limit'];
}

$data['breadcrumbs'][] = array(
'text' => $product_info['name'],
'href' => $this->url->link('product/product', $url . '&product_id=' . $this->request->get['product_id'])
);

$this->document->setTitle($product_info['meta_title']);
$this->document->setDescription($product_info['meta_description']);
$this->document->setKeywords($product_info['meta_keyword']);
$this->document->addLink($this->url->link('product/product', 'product_id=' . $this->request->get['product_id']), 'canonical');
$this->document->addScript('catalog/view/javascript/jquery/magnific/jquery.magnific-popup.min.js');
$this->document->addStyle('catalog/view/javascript/jquery/magnific/magnific-popup.css');
$this->document->addScript('catalog/view/javascript/jquery/datetimepicker/moment.js');
$this->document->addScript('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.js');
$this->document->addStyle('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.css');

$data['heading_title'] = $product_info['name'];

$data['text_select'] = $this->language->get('text_select');
$data['text_manufacturer'] = $this->language->get('text_manufacturer');
$data['text_model'] = $this->language->get('text_model');
$data['text_reward'] = $this->language->get('text_reward');
$data['text_points'] = $this->language->get('text_points');
$data['text_stock'] = $this->language->get('text_stock');
$data['text_discount'] = $this->language->get('text_discount');
$data['text_tax'] = $this->language->get('text_tax');
$data['text_option'] = $this->language->get('text_option');
$data['text_minimum'] = sprintf($this->language->get('text_minimum'), $product_info['minimum']);
$data['text_write'] = $this->language->get('text_write');
$data['text_login'] = sprintf($this->language->get('text_login'), $this->url->link('account/login', '', 'SSL'), $this->url->link('account/register', '', 'SSL'));
$data['text_note'] = $this->language->get('text_note');
$data['text_tags'] = $this->language->get('text_tags');
$data['text_related'] = $this->language->get('text_related');
$data['text_loading'] = $this->language->get('text_loading');

$data['entry_qty'] = $this->language->get('entry_qty');
$data['entry_name'] = $this->language->get('entry_name');
$data['entry_review'] = $this->language->get('entry_review');
$data['entry_rating'] = $this->language->get('entry_rating');
$data['entry_good'] = $this->language->get('entry_good');
$data['entry_bad'] = $this->language->get('entry_bad');
$data['entry_captcha'] = $this->language->get('entry_captcha');

$data['button_cart'] = $this->language->get('button_cart');
$data['button_wishlist'] = $this->language->get('button_wishlist');
$data['button_compare'] = $this->language->get('button_compare');
$data['button_upload'] = $this->language->get('button_upload');
$data['button_continue'] = $this->language->get('button_continue');

$this->load->model('catalog/review');

$data['tab_description'] = $this->language->get('tab_description');
$data['tab_attribute'] = $this->language->get('tab_attribute');
$data['tab_review'] = sprintf($this->language->get('tab_review'), $product_info['reviews']);

$data['product_id'] = (int)$this->request->get['product_id'];
$data['manufacturer'] = $product_info['manufacturer'];
$data['manufacturers'] = $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $product_info['manufacturer_id']);
$data['model'] = $product_info['model'];
$data['reward'] = $product_info['reward'];
$data['points'] = $product_info['points'];

if ($product_info['quantity'] <= 0) {
$data['stock'] = $product_info['stock_status'];
} elseif ($this->config->get('config_stock_display')) {
$data['stock'] = $product_info['quantity'];
} else {
$data['stock'] = $this->language->get('text_instock');
}

$this->load->model('tool/image');

if ($product_info['image']) {
$data['popup'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height'));
} else {
$data['popup'] = '';
}

if ($product_info['image']) {
$data['thumb'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('config_image_thumb_width'), $this->config->get('config_image_thumb_height'));
} else {
$data['thumb'] = '';
}

$data['images'] = array();

$results = $this->model_catalog_product->getProductImages($this->request->get['product_id']);

foreach ($results as $result) {
$data['images'][] = array(
'popup' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height')),
'thumb' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_additional_width'), $this->config->get('config_image_additional_height'))
);
}

if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
$data['price'] = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax')));
} else {
$data['price'] = false;
}

if ((float)$product_info['special']) {
$data['special'] = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax')));
} else {
$data['special'] = false;
}

if ($this->config->get('config_tax')) {
$data['tax'] = $this->currency->format((float)$product_info['special'] ? $product_info['special'] : $product_info['price']);
} else {
$data['tax'] = false;
}

$discounts = $this->model_catalog_product->getProductDiscounts($this->request->get['product_id']);

$data['discounts'] = array();

foreach ($discounts as $discount) {
$data['discounts'][] = array(
'quantity' => $discount['quantity'],
'price' => $this->currency->format($this->tax->calculate($discount['price'], $product_info['tax_class_id'], $this->config->get('config_tax')))
);
}

$data['options'] = array();

foreach ($this->model_catalog_product->getProductOptions($this->request->get['product_id']) as $option) {
$product_option_value_data = array();

foreach ($option['product_option_value'] as $option_value) {
if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) {
if ((($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) && (float)$option_value['price']) {
$price = $this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false));
} else {
$price = false;
}

$product_option_value_data[] = array(
'product_option_value_id' => $option_value['product_option_value_id'],
'option_value_id' => $option_value['option_value_id'],
'name' => $option_value['name'],
'image' => $this->model_tool_image->resize($option_value['image'], 50, 50),
'price' => $price,
'price_prefix' => $option_value['price_prefix']
);
}
}

$data['options'][] = array(
'product_option_id' => $option['product_option_id'],
'product_option_value' => $product_option_value_data,
'option_id' => $option['option_id'],
'name' => $option['name'],
'type' => $option['type'],
'value' => $option['value'],
'required' => $option['required']
);
}

if ($product_info['minimum']) {
$data['minimum'] = $product_info['minimum'];
} else {
$data['minimum'] = 1;
}

$data['review_status'] = $this->config->get('config_review_status');

if ($this->config->get('config_review_guest') || $this->customer->isLogged()) {
$data['review_guest'] = true;
} else {
$data['review_guest'] = false;
}

if ($this->customer->isLogged()) {
$data['customer_name'] = $this->customer->getFirstName() . ' ' . $this->customer->getLastName();
} else {
$data['customer_name'] = '';
}

$data['reviews'] = sprintf($this->language->get('text_reviews'), (int)$product_info['reviews']);
$data['rating'] = (int)$product_info['rating'];
$data['description'] = html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8');
$data['attribute_groups'] = $this->model_catalog_product->getProductAttributes($this->request->get['product_id']);

$data['products'] = array();

$results = $this->model_catalog_product->getProductRelated($this->request->get['product_id']);

foreach ($results as $result) {
if ($result['image']) {
$image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_related_width'), $this->config->get('config_image_related_height'));
} else {
$image = $this->model_tool_image->resize('placeholder.png', $this->config->get('config_image_related_width'), $this->config->get('config_image_related_height'));
}

if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));
} else {
$price = false;
}

if ((float)$result['special']) {
$special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')));
} else {
$special = false;
}

if ($this->config->get('config_tax')) {
$tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']);
} else {
$tax = false;
}

if ($this->config->get('config_review_status')) {
$rating = (int)$result['rating'];
} else {
$rating = false;
}

$data['products'][] = array(
'product_id' => $result['product_id'],
'thumb' => $image,
'name' => $result['name'],
'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_product_description_length')) . '..',
'price' => $price,
'special' => $special,
'tax' => $tax,
'rating' => $rating,
'href' => $this->url->link('product/product', 'product_id=' . $result['product_id'])
);
}

$data['tags'] = array();

if ($product_info['tag']) {
$tags = explode(',', $product_info['tag']);

foreach ($tags as $tag) {
$data['tags'][] = array(
'tag' => trim($tag),
'href' => $this->url->link('product/search', 'tag=' . trim($tag))
);
}
}

$data['text_payment_recurring'] = $this->language->get('text_payment_recurring');
$data['recurrings'] = $this->model_catalog_product->getProfiles($this->request->get['product_id']);

$this->model_catalog_product->updateViewed($this->request->get['product_id']);

$data['column_left'] = $this->load->controller('common/column_left');
$data['column_right'] = $this->load->controller('common/column_right');
$data['content_top'] = $this->load->controller('common/content_top');
$data['content_bottom'] = $this->load->controller('common/content_bottom');
$data['footer'] = $this->load->controller('common/footer');
$data['header'] = $this->load->controller('common/header');

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/quickview.tpl')) {
$this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/product/quickview.tpl', $data));
} else {
$this->response->setOutput($this->load->view('default/template/product/quickview.tpl', $data));
}
} else {
die('Product not found!');
}
}
}

Надіслати
Поділитися на інших сайтах


  • 1 month later...

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.