yyyaaazzz

Помогите разобраться. vqmod

Рекомендуемые сообщения

yyyaaazzz    7

Наткнулся недавно на одно интересное дополнение. Задача его - прятать кнопку "купить" и подгружать водяной знак для товаров. которых нет в наличии.

На странице товара все заработало "на ура", но на странице категории не работает. Открыв код, я обнаружил кое-что интересное:

<file name="catalog/controller/product/category.php">
  <operation>
   <search position="after" index="1"><![CDATA[
   $this->data['products'][] = array(
   ]]></search>
   <add><![CDATA[
   'quantity' => $result['quantity'],
   ]]></add>
  </operation>
</file>
Эта функция записывает в массив контроллера category.php новую переменную, содержащую количество товара. Вроде бы с первого взгляда все правильно, но если внимательнее разобрать цикл, образующий массив, оказывается что данная переменная пуста. Вот цикл:

$results = $this->model_catalog_product->getProducts($data);

  foreach ($results as $result) {
if ($result['image']) {
 $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));
} else {
 $image = false;
}

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;
}

$this->data['products'][] = array(
 'product_id'  => $result['product_id'],
 'thumb'	   => $image,
 'name'		=> $result['name'],
 'description' => mb_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 100) . '..',
 'price'	   => $price,
 'special'	 => $special,
 'tax'		 => $tax,
 'rating'	  => $result['rating'],
 'reviews'	 => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
 'href'		=> $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'])
);
  }

Этот цикл вытягивает данные из массива в model/catalog/product.php, функция getProducts (26 строка). Но в данной функции нет захвата данных о наличии.

Следовательно, новая переменная

'quantity' => $result['quantity'],

пуста и определить наличие товара таким образом невозможно. Понятно что это ошибка разработчика, но может у кого-нибудь есть идеи как ее исправить?

PS: версия ОС 1.5.1.3. Файл дополнения в аттаче.

Hide AddToCart 2.0.0.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
snastik    855

А Вы разработчику об этом писали ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
yyyaaazzz    7

Писал. Но ответа не получил. На странице загрузки дополнения можете найти мои комменты. Пока пытаюсь разобраться сам, а также спрашиваю совета у более опытных пользователей ОС

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
freelancer    1 421

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

не переменная, а индекс ассоциативного массива. значение не пусто. там верный код

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
farmukanx    16

Писал. Но ответа не получил. На странице загрузки дополнения можете найти мои комменты. Пока пытаюсь разобраться сам, а также спрашиваю совета у более опытных пользователей ОС

это дополнение работает.

На странице товара отображает картинку и скрывает кнопку "Купить", на странице категории - только скрывает кнопку "Купить".

так и должно быть:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
yyyaaazzz    7

это дополнение работает.

На странице товара отображает картинку и скрывает кнопку "Купить", на странице категории - только скрывает кнопку "Купить".

так и должно быть :)

Допустим. Но с точки зрения юзабилити, не лучше бы сделать так чтобы на странице категории отображалось наличие товара? Кликабельность картинки при этом можно сохранить, добавив в код водяного знака значение href="<?php echo '$this['href'];' ?>" и сменив точку вывода водяного знака. Не подскажете как в данном случае вывести водяной знак?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
freelancer    1 421

Допустим. Но с точки зрения юзабилити, не лучше бы сделать так чтобы на странице категории отображалось наличие товара? Кликабельность картинки при этом можно сохранить, добавив в код водяного знака значение href="<?php echo '$this['href'];' ?>" и сменив точку вывода водяного знака. Не подскажете как в данном случае вывести водяной знак?

работает. вам уже двое это говорят. разбирайтесь почему quality == 0.

водяной знак по аналогии со страницей товара

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
yyyaaazzz    7

Решено!

Причем довольно-таки просто, без всяких там vqmod'ов. В контроллер category.php дописал:

'quantity'	=> $result['quantity'],
В шаблоне category.tpl вывел картинку с водяным знаком:

<?php if($product['quantity'] <= 0) {
	 echo '<img src="image/sold-out.png" width="200" style="position:absolute" />';
	} ?>
То же самое работает в модулях latest, featured, special итд. Только в контроллер 'quantity' нужно дописать. Смотрим результат:

Изображение

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
yyyaaazzz    7

Добавил процессинг изображений средствами GD2. Теперь изображения товаров, которых нет в наличии будут визуально выделяться черно-белым, или каким-либо другим эффектом. Как только чуть освобожусь - ждите готовый vqmod

Изображение

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Похожий контент

    • От zcell

      300.00 руб
      Скачать/Купить дополнение


      Списание остатков товара только при изменении статуса в админке
      Что делает модуль:
      Убирает списание товаров при оформлении заказа. Списывает остатки товара из заказа и остатки опций только при изменении на заданный в админке статус (стандартная настройка, см скриншот) Для чего это нужно:
      Если вы продаете товары, которые бывают в наличии в небольших количествах, то будет удобно списывать остатки товара по опреденному статусу, вместо автосписывания при оформления заказа клиентом.
      Например: оформлен заказ, но клиент отказался от него, либо что-то не подошло. В стандарте - товар уже будет списан, и если остаток был равен одному, другой клиент не сможет заказать товар. С модулем - товар спишется, только если вы поставили в заказе статус "Обработка" (зависит от настроек).
      То есть подтвердился заказ, тогда и бронируем товар за клиентом.
      Как установить:
      Залить файл в папку vqmod/xml Требования:
      opencart/ocstore 1.5.5 установленный vqmod Добавил zcell Добавлено 15.01.2016 Категория Прочее Системные требования Метод активации Без активации Ioncube Loader Нет OpenCart 1.5.5.1
      1.5.5 ocStore 1.5.5.1.2
      1.5.5.1.1
      1.5.5.1 OpenCart.Pro, ocShop  
    • От zcell
      Что делает модуль:
      Убирает списание товаров при оформлении заказа. Списывает остатки товара из заказа и остатки опций только при изменении на заданный в админке статус (стандартная настройка, см скриншот) Для чего это нужно:
      Если вы продаете товары, которые бывают в наличии в небольших количествах, то будет удобно списывать остатки товара по опреденному статусу, вместо автосписывания при оформления заказа клиентом.
      Например: оформлен заказ, но клиент отказался от него, либо что-то не подошло. В стандарте - товар уже будет списан, и если остаток был равен одному, другой клиент не сможет заказать товар. С модулем - товар спишется, только если вы поставили в заказе статус "Обработка" (зависит от настроек).
      То есть подтвердился заказ, тогда и бронируем товар за клиентом.
      Как установить:
      Залить файл в папку vqmod/xml Требования:
      opencart/ocstore 1.5.5 установленный vqmod
    • От zcell

      300.00 руб
      Скачать/Купить дополнение


      Избранное (закладки) без регистрации и авторизации
      Избранное без регистрации для версий 1.5.x и 2.1x, 2.2.x, 2.3.x
       
      DEMO
       
      Ваши клиенты смогут откладывать товар в Избранное (Закладки) без регистрации.
       
      Модуль позволяет добавлять пользователям товары в закладки даже без регистрации на сайте.
      При добавление выдается сообщение об успешном добавлении (также как у зарегистрированного пользователя), вместо стандартной ошибки с ссылкой на вход.
      Товар добавляется в корзину из закладок и удаляется из закладок, также без регистрации. Кнопка "Продолжить" в закладках отправляет на главную страницу, вместо страницы аккаунта.
      Не заменяет системных и файлов темы.
      Необходима установка VQMod для ocStore 1.5.x.x
      >>
      После покупки - вы сможете скачать версию и для версии 1.5.x и версии 2.x
      >>
      Работает в 99,99% случаев!
      update от 2015-12-11: до сих не было ни одного обращения в поддержку.
      Установка модуля для версий ocStore и Opencart 1.5.x:
      Скопировать файл в папку vqmod/xml/
      Установка модуля для версий ocStore и Opencart 2.х:
      Для установки на версиях 2.2.x и 2.3.x воспользуйтесь установкой дополнений в административной панели.
      Добавил zcell Добавлено 24.09.2013 Категория Сравнения, закладки Системные требования Сайт разработчика https://true-studio.ru/ Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart ocStore OpenCart.Pro, ocShop  
    • От zcell
      Избранное без регистрации для версий 1.5.x и 2.1x, 2.2.x, 2.3.x
       
      DEMO
       
      Ваши клиенты смогут откладывать товар в Избранное (Закладки) без регистрации.
       
      Модуль позволяет добавлять пользователям товары в закладки даже без регистрации на сайте.
      При добавление выдается сообщение об успешном добавлении (также как у зарегистрированного пользователя), вместо стандартной ошибки с ссылкой на вход.
      Товар добавляется в корзину из закладок и удаляется из закладок, также без регистрации. Кнопка "Продолжить" в закладках отправляет на главную страницу, вместо страницы аккаунта.
      Не заменяет системных и файлов темы.
      Необходима установка VQMod для ocStore 1.5.x.x
      >>
      После покупки - вы сможете скачать версию и для версии 1.5.x и версии 2.x
      >>
      Работает в 99,99% случаев!
      update от 2015-12-11: до сих не было ни одного обращения в поддержку.
      Установка модуля для версий ocStore и Opencart 1.5.x:
      Скопировать файл в папку vqmod/xml/
      Установка модуля для версий ocStore и Opencart 2.х:
      Для установки на версиях 2.2.x и 2.3.x воспользуйтесь установкой дополнений в административной панели.
    • От antropolog13
      Пробовал удалить по инструкции, как указано здесь и здесь
      У меня в файлах index.php и admin/index.php отсутствуют строки:
       
      1 2 3 4 5 6 // Application Classes require_once(VQMod::modCheck(DIR_SYSTEM . 'library/currency.php')); require_once(VQMod::modCheck(DIR_SYSTEM . 'library/user.php')); require_once(VQMod::modCheck(DIR_SYSTEM . 'library/weight.php')); require_once(VQMod::modCheck(DIR_SYSTEM . 'library/length.php')); require_once(VQMod::modCheck(DIR_SYSTEM . 'library/ocstore.php'));    
      В оригинальных файлах их тоже нет   Opencart Pro 2.3.0.2
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу