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

[Доработка] Фото для специальных предложений


fill

Recommended Posts

Для новинок я сделал так:

Идем в catalog/controller/product/ и открываем category.php. Ищем там массив

$this->data['products'][] = array(
 name'    => $result['name'],
 ..еще куча строк..
)
и добавляем туда новую строку -
'date_available' => $result['date_available'],

Затем идём в catalog/view/theme/default/template/product/ и открываем category.tpl. Где-нибудь сверху (я добавил сразу после

<?php echo $column_right; ?>
) добавляем

<?php
$timestamp = time();
$date_time_array = getdate($timestamp);
$month = $date_time_array['mon'];
$day = $date_time_array['mday'];
$year = $date_time_array['year'];
$timestamp = mktime($hours,$minutes,$seconds,$month,$day -5,$year);
?>
.

В строке

$timestamp = mktime($hours,$minutes,$seconds,$month,$day -5,$year);
, а точнее
$day -5
формируется дата, сколько дней после добавления товара к нему будет "приклеиваться" div с картинкой "новинка", ну, или как вы там напишете.

Затем, в этом же файле, после

<td style="width: 25%;">
добавляем

<?php if (($products[$j]['date_available'] ) > strftime('%Y-%m-%d',$timestamp)){ ?><div id="div_img_new"></div><?php } ?>
Ну а далее в stylesheet.css добавляете

#div_img_new {background: url('../image/имя_картинки_с_надписью_новинка.png') no-repeat;}
. Детально отображение подгоняйте сами в css файле.

Делаю и мне ругаются что нет данных здесь: $hours,$minutes,$seconds,

там только:

$month = $date_time_array['mon'];
$day = $date_time_array['mday'];
$year = $date_time_array['year'];
Надіслати
Поділитися на інших сайтах


  • 4 weeks later...

в пхп я не очень, делал интуитивно, на основе этой темы.

может не оптимально, но главное работает :)

версия магазина ocstore_v0.1.4

Спасибо большое! Все получилось. Только вот на странице товара, на вкладке Рекомендуем не отображается эта иконка :( Еще бы там поставить...
Надіслати
Поділитися на інших сайтах


  • 2 weeks later...

Спасибо за предидущий код, есть вопрос.

Как сделать табличку "Продано" не только в разделах и самом товаре, но и при поиске в магазине, т.е. тут

http://shop.erolife.by/index.php?route=product/search&model=1&description=1&keyword=LC4109-3&category_id=0

Спасибо

Версия OCstore 0.2

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


  • 2 weeks later...

присоединяюсь, для 0.2 кто-то реализовал это? попробовала поставить - показ не корректный.

1)Окрываем файл catalog\view\theme\Имя_темы\template\module\latest_home.tpl (Это для модуля "Последние товары" на главной. Для других модулей аналогично)

2)После строчки

<td style="width: 25%;"><?php if (isset($products[$j])) { ?>
вставляем код:

<?php if ($products[$j]['special']) { ?>
<div class="myspecial"></div>
<?php } ?>
3) в файл catalog\view\theme\Имя_темы\stylesheet\stylesheet.css добавляем строки:

.myspecial {
position:absolute;
z-index:10; 
background:url('../image/best.png') top center no-repeat;
width:70px;
height:70px; 
}
Где width - ширина, height - высота изображения "best.png" в пикселях.

4)Вставляем изображение "best.png" в папку catalog\view\theme\Имя_темы\image

Проверено в Opera, Firefox, Chrome, Safari, Maxthon, IE

Изображение

post-3857-0-03308500-1316349542_thumb.png

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

Есть варианты решения последнего вопроса?

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

Итак, для подсчета скидки в процентах открываем файл catalog\controller\module\latest.php ( в моем примере рассматривается модуль "Последние" для других аналогично, например для каталога это файл catalog\controller\product\category.php)

Находим строку:

$this->data['products'][] = array(

НАД ней вставляем код:

$cl_price = $this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')); // Cena tovara bez formatirovaniya
$cl_special = $this->tax->calculate($this->model_catalog_product->getProductSpecial($result['product_id']), $result['tax_class_id'],$this->config->get('config_tax')); // Cena so skodkoy bez formatirovaniya
$salepercent = round((100*($cl_price-$cl_special))/$cl_price,1); // raschet procenta s okrugleniem do desyatih

ПОД ней вставляем строку

'salepercent'	=> $salepercent,

В соответствующий файл шаблона .TPL (для "Последних" это catalog\view\theme\Имя_темы\template\module\latest_home.tpl)

в нужном месте вставляем текст:

<?php echo $products[$j]['salepercent'] ?>

Если вы вставляли картинку по моему примеру то эту строку нужно вставить меджу тэгами <div class="myspecial"></div>

<div class="myspecial"><?php echo $products[$j]['salepercent'] ?>%</div>
Надіслати
Поділитися на інших сайтах

1)Окрываем файл catalog\view\theme\Имя_темы\template\module\latest_home.tpl (Это для модуля "Последние товары" на главной. Для других модулей аналогично)

2)После строчки

<td style="width: 25%;"><?php if (isset($products[$j])) { ?>
вставляем код:

<?php if ($products[$j]['special']) { ?>
<div class="myspecial"></div>
<?php } ?>
3) в файл catalog\view\theme\Имя_темы\stylesheet\stylesheet.css добавляем строки:

.myspecial {
position:absolute;
z-index:10; 
background:url('../image/best.png') top center no-repeat;
width:70px;
height:70px; 
}
Где width - ширина, height - высота изображения "best.png" в пикселях.

4)Вставляем изображение "best.png" в папку catalog\view\theme\Имя_темы\image

Проверено в Opera, Firefox, Chrome, Safari, Maxthon, IE

Изображение

post-3857-0-03308500-1316349542_thumb.png

.myspecial {

position:absolute;

z-index:10;

background:url('../image/best.png') top center no-repeat;

width:70px;

height:70px;

}[/color]

єто где имено ставить

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


.myspecial {

position:absolute;

z-index:10;

background:url('../image/best.png') top center no-repeat;

width:70px;

height:70px;

}

єто где имено ставить

в конец файла catalog\view\theme\Имя_темы\stylesheet\stylesheet. css

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

  • 2 weeks later...
  • 4 weeks later...
  • 4 weeks later...
  • 3 weeks later...

друзья, а если вот редактировать стандартные раздел "акции", то:

1. как убрать строку "с НДС" (какой править файл)

2. продлить описание товара (обрезает крайне неудачно)

скрин прилагаю:

Изображение

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


  • 4 weeks later...

На версии 0.1.7 все работало идеально, теперь обновилась до версии 0.2.2 и картинки продано стали показываться на каждом товаре... А также выдает ошибку:

Notice: Undefined index: quantity in ***/catalog/view/theme/default/template/product/category.tpl on line 53

смотрим строку 53:

<?php if ($products[$j]['quantity']>0) { ?>

Как же исправить ошибку? Модуль очень нужный... :(

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


Есть вот такое для opencart 1.5.1.3.1post-3023-0-96263300-1325757646_thumb.jpg

В catalog/viev/theme/default/template/module/latest.tpl

ищем <?php foreach ($products as $product) { ?>

<div>

после вставляем

<div class="price">

<?php if (!$product['special']) { ?>

<?php } else { ?>

<div class="specialPercent">

<?php //Get the percentage discount

$normal = strip_tags(str_replace('$','', $product['price']));

$special = strip_tags(str_replace('$','', $product['special']));

$percent = ($normal-$special)/$normal*-100;'%';

echo round($percent) . $this->language->get('text_off');

?>

</div>

<?php } ?>

</div>

в stylesheet/stylesheet.css ищем

.box-product > div {

width: 130px;

display: inline-block;

vertical-align: top;

margin-right: 20px;

margin-bottom: 20px;

}

#column-left + #column-right + #content .box-product > div {

width: 119px;

}

после вставляем

.specialPercent {

position:absolute;

margin-top: 5px;

background:url('../image/sale.png') no-repeat;

width:70px;

height:70px;

text-align:center;

color:#fff;

font-weight:bold;

font-size: 26px;

padding-top:19px;

text-shadow:0 -1px 1px #CE5016;

}

потом в catalog/language/english/module/latest.php ищем

$_['text_reviews'] = 'Based on %s reviews.';

после вставляем

$_['text_off'] ='%';

тоже надо сделать в папке russian

иконку кидаем theme/default/image

post-3023-0-96209600-1325758959_thumb.png

Это когда в админке в акциях добавляете новую цену то она

автоматически переводиться в проценты и отображается на иконке.

Только есть небольшая ошибочка ,когда цена стоит больше 1000 р

то неправильно формируются проценты.

Может кто доработает этот косяк.

Ну а в остальные файлы категории,продукты добавити сами

принцип тот же.

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


Может кто доработает этот косяк.

Доработал. Реализовал для категорий, версия 1.5.

Файл /catalog/controller/product/category.php

if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
	// Значение цены
	$val_price = $this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax') );
	$price = $this->currency->format( $val_price );
} else {
	$val_price = false;
	$price = false;
}

(Изменяем)

т.е. цену товара занёс в переменную $val_price, а $price (была) её переводит её в ныжный форма валюты.

if ((float)$result['special']) {
	// Значение специальной цены
	$val_special = $this->tax->calculate( $result['special'], $result['tax_class_id'], $this->config->get('config_tax') );
	$special = $this->currency->format( $val_special );
} else {
	$val_special = false;
	$special = false;
}	

(Изменяем)

т.е. специальную цену товара занёс в переменную $val_special, а $special (была) её переводит её в ныжный форма валюты.

// Находим скидку
if( $val_special ) {
	$discount = ( $val_price - $val_special ) / $val_price * 100;
	$discount = round( $discount, 1);
	$discount .= '%';
} else {
	$discount = false;
}

(Добавляем)

Тут мы находим скидку в процентах, округляем её до одного знака после запятой и прибавляем в конец знак '%'.

$this->data['products'][] = array(
	'product_id'  => $result['product_id'],
	'thumb'       => $image,
	'name'        => $result['name'],
	'description' => $descr_plaintext,
	'price'       => $price,
	'special'     => $special,
	'discount'    => $discount,
	'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'])
);

(Изменяем)

Тут просто вписываем в массив данных о продукте строку 'discount' => $discount,

Далее в шаблоне /catalog/view/theme/default/template/product/category.tpl, в нужном месте выводим эту скидку, у меня так:

<div class="image">
  <a href="<?php echo $product['href']; ?>"><img src="<?php echo $product['thumb']; ?>" title="<?php echo $product['name']; ?>" alt="<?php echo $product['name']; ?>" /></a>
  <?php if ($product['discount']) { ?><div class="special_price"><?php echo $product['discount']; ?></div><?php } ?>
</div>

т.е. просто вписываем <?php if ($product['discount']) { ?><div class="special_price"><?php echo $product['discount']; ?></div><?php } ?>.

Стили на свой вкус делайте. Всё работает.

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


  • 4 weeks later...

Для новинок я сделал так:

Идем в catalog/controller/product/ и открываем category.php. Ищем там массив

$this->data['products'][] = array(
name'	=> $result['name'],
..еще куча строк..
)
и добавляем туда новую строку -
'date_available' => $result['date_available'],

Затем идём в catalog/view/theme/default/template/product/ и открываем category.tpl. Где-нибудь сверху (я добавил сразу после

<?php echo $column_right; ?>
) добавляем

<?php
$timestamp = time();
$date_time_array = getdate($timestamp);
$month = $date_time_array['mon'];
$day = $date_time_array['mday'];
$year = $date_time_array['year'];
$timestamp = mktime($hours,$minutes,$seconds,$month,$day -5,$year);
?>
.

В строке

$timestamp = mktime($hours,$minutes,$seconds,$month,$day -5,$year);
, а точнее
$day -5
формируется дата, сколько дней после добавления товара к нему будет "приклеиваться" div с картинкой "новинка", ну, или как вы там напишете.

Затем, в этом же файле, после

<td style="width: 25%;">
добавляем

<?php if (($products[$j]['date_available'] ) > strftime('%Y-%m-%d',$timestamp)){ ?><div id="div_img_new"></div><?php } ?>
Ну а далее в stylesheet.css добавляете

#div_img_new {background: url('../image/имя_картинки_с_надписью_новинка.png') no-repeat;}
. Детально отображение подгоняйте сами в css файле.

А как под v1.5.1.3 реализовать?

Вот выдает ошибку:

Notice: Undefined variable: hours in M:homerrrwwwvqmodvqcachevq2-catalog_view_theme_default_template_product_category.tpl on line 8Notice: Undefined variable: minutes in M:homerrrwwwvqmodvqcachevq2-catalog_view_theme_default_template_product_category.tpl on line 8Notice: Undefined variable: seconds in M:homerrrwwwvqmodvqcachevq2-catalog_view_theme_default_template_product_category.tpl on line 8Notice: Undefined variable: j in M:homerrrwwwvqmodvqcachevq2-catalog_view_theme_default_template_product_category.tpl on line 10Notice: Undefined index: in M:homerrrwwwvqmodvqcachevq2-catalog_view_theme_default_template_product_category.tpl on line 10
Надіслати
Поділитися на інших сайтах


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

<?php
$timestamp = time();
$date_time_array = getdate($timestamp);
$hours = $date_time_array['hours'];
$minutes = $date_time_array['minutes'];
$seconds = $date_time_array['seconds'];
$month = $date_time_array['mon'];
$day = $date_time_array['mday'];
$year = $date_time_array['year'];
$timestamp = mktime($hours,$minutes,$seconds,$month,$day -30,$year);
?>
Надіслати
Поділитися на інших сайтах

  • 1 month later...

А есть решение выбора одной из нескольких картинок.Например или best или top или super подцепить както?

я делал для себя - в ручном режиме - можно произвольно прицепить любой gif к любому товару. единственно проблемка вышла с модулем импорта, там в базе данных в таблице продукта новая колонка добавляется, соответственно при импорте она затирается, приходится вручную импортировать csv файлом..
Надіслати
Поділитися на інших сайтах

Подскажите как реализовать метку для товара которая находится в хитах и в рекомендуемых.

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

  • 2 weeks later...

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

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

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

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

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

Вхід

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

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

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

Important Information

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