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

[Доработка] Добавление блока "атрибуты" на др. страницу ???


Recommended Posts

  • 2 weeks later...

Это код отвечающий за визуализацию блока "Аттрибуты" и "Добавить в корзину" в браузере :

<?php if ($display_price) { ?>            <form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="product">              <?php if ($options) { ?>              [b]<?php echo $text_options; ?>[/b]              <div style="background: #FFFFCC; border: 1px solid #FFCC33; padding: 10px; margin-top: 2px; margin-bottom: 15px;">                <table style="width: 100%;">                  <?php foreach ($options as $option) { ?>                  <tr>                    <td><?php echo $option['name']; ?>:                      <select name="option[<?php echo $option['option_id']; ?>]">                        <?php foreach ($option['option_value'] as $option_value) { ?>                        <option value="<?php echo $option_value['option_value_id']; ?>"><?php echo $option_value['name']; ?>                        <?php if ($option_value['price']) { ?>                        <?php echo $option_value['prefix']; ?><?php echo $option_value['price']; ?>                        <?php } ?>                        </option>                        <?php } ?>                      </select></td>                  </tr>                  <?php } ?>                </table>              </div>              <?php } ?>              <?php if ($display_price) { ?>              <?php if ($discounts) { ?>              [b]<?php echo $text_discount; ?>[/b]              <div style="background: #F7F7F7; border: 1px solid #DDDDDD; padding: 10px; margin-top: 2px; margin-bottom: 15px;">                <table style="width: 100%;">                  <tr>                    <td style="text-align: right;">[b]<?php echo $text_order_quantity; ?>[/b]</td>                    <td style="text-align: right;">[b]<?php echo $text_price_per_item; ?>[/b]</td>                  </tr>                  <?php foreach ($discounts as $discount) { ?>                  <tr>                    <td style="text-align: right;"><?php echo $discount['quantity']; ?></td>                    <td style="text-align: right;"><?php echo $discount['price']; ?></td>                  </tr>                  <?php } ?>                </table>              </div>              <?php } ?>              <?php } ?>              <div style="background: #F8F0C2; border: 1px solid #AEADAC; padding: 10px 5px 10px 10px;"><?php echo $text_qty; ?>                <input type="text" name="quantity" size="3" value="1" />                <a onclick="$('#product').submit();" id="add_to_cart" class="button"><span><?php echo $button_add_to_cart; ?></span></a></div>              <input type="hidden" name="product_id" value="<?php echo $product_id; ?>" />              <input type="hidden" name="redirect" value="<?php echo $redirect; ?>" />            </form>            <?php } ?>
Впринципе его можно разделить на отдельные функциональные части - "Аттрибуты" и "Добавить в корзину" и добавить в необходимые места.

Осталось только вытащить логику для этих вещей из controller-a и правильно добавить в соответствующий файл , в который производится добавление этих блоков.

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


для 1.4.0

в ..catalogcontrollerproductcategory.php

блок

foreach ($results as $result) {.....}
меняем на

foreach ($results as $result) {					if ($result['image']) {						$image = $result['image'];					} else {						$image = 'no_image.jpg';					}					//					$options_arr = array();										$options = $this->model_catalog_product->getProductOptions($result['product_id']);					echo $result['product_id'].' - '; 					foreach ($options as $option) { 									$option_value_data = array();						foreach ($option['option_value'] as $option_value) {							$option_value_data[] = array(								'option_value_id' => $option_value['product_option_value_id'],								'name'            => $option_value['name'],								'price'           => (float)$option_value['price'],								'prefix'          => $option_value['prefix']							);						}										$options_arr[] = array(							'option_id'    => $option['product_option_id'],							'name'         => $option['name'],							'option_value' => $option_value_data						);						unset($option_value_data);					}										//					$rating = $this->model_catalog_review->getAverageRating($result['product_id']);	 										$special = FALSE;										$discount = $this->model_catalog_product->getProductDiscount($result['product_id']); 										if ($discount) {						$price = $this->currency->format($this->tax->calculate($discount, $result['tax_class_id'], $this->config->get('config_tax')));					} else {						$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));											$special = $this->model_catalog_product->getProductSpecial($result['product_id']);											if ($special) {							$special = $this->currency->format($this->tax->calculate($special, $result['tax_class_id'], $this->config->get('config_tax')));						}										}					$this->data['products'][] = array(						'id'	  => $result['product_id'],            			'name'    => $result['name'],						'model'   => $result['model'],            			'rating'  => $rating,						'stars'   => sprintf($this->language->get('text_stars'), $rating),						'thumb'   => image_resize($image, $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height')),            			'price'   => $price,						'special' => $special,						'options_arr'  => $options_arr, //						'href'    => $this->model_tool_seo_url->rewrite($this->url->http('product/product&path=' . $this->request->get['path'] . '&product_id=' . $result['product_id']))          			);					unset ($options_arr); //        		}

в ..catalogviewthemedefaulttemplateproductcategory.tpl

блок

<td width="25%"><?php if (isset($products[$j])) { ?>.....<?php } ?></td>
меняем на

<td width="25%"><?php if (isset($products[$j])) { ?>		 <form action="" method="post" enctype="multipart/form-data" id="formproduct_<? echo $products[$j]['id']; ?>">          <a href="<?php echo $products[$j]['href']; ?>"><img src="<?php echo $products[$j]['thumb']; ?>" title="<?php echo $products[$j]['name']; ?>" id="image<? echo $products[$j]['id']; ?>" alt="<?php echo $products[$j]['name']; ?>" /></a>          <a href="<?php echo $products[$j]['href']; ?>"><?php echo $products[$j]['name']; ?></a>          [color= #999; font-size: 11px;]<?php echo $products[$j]['model']; ?>[/color]          <?php if ($display_price) { ?>          <?php if (!$products[$j]['special']) { ?>          [color= #900; font-weight: bold;]<?php echo $products[$j]['price']; ?>[/color]          <?php } else { ?>          [color= #900; font-weight: bold; text-decoration: line-through;]<?php echo $products[$j]['price']; ?>[/color] [color= #F00;]<?php echo $products[$j]['special']; ?>[/color]          <?php } ?>          <?php } ?>          <?php if ($products[$j]['rating']) { ?>          <img src="catalog/view/theme/default/image/stars_<?php echo $products[$j]['rating'] . '.png'; ?>" alt="<?php echo $products[$j]['stars']; ?>" />          <?php } ?>		  <?php if ($products[$j]['options_arr']) { ?>			<?php foreach ($products[$j]['options_arr'] as $option) { ?>				<?php echo $option['name']; ?>:					<select name="option[<?php echo $option['option_id']; ?>]">						<?php foreach ($option['option_value'] as $option_value) { ?>						<option value="<?php echo $option_value['option_value_id']; ?>"><?php echo $option_value['name']; ?>						<?php if ($option_value['price']) { ?>						<?php echo $option_value['prefix']; ?><?php echo $option_value['price']; ?>						<?php } ?>						</option>									<?php } ?>				</select>			<?php } ?>		  <?php } ?>		  <input type="text" name="quantity" />		  <input type="hidden" name="product_id" value="<? echo $products[$j]['id']; ?>" />		  [url="#"]);return false;" class="button"><span>В корзину</span>[/url]		  </form>          <?php } ?></td>

в ..catalogviewthemedefaulttemplatemodulecart.tpl снизу добавить по смыслу:

function buyProduct(id){        $.ajax({            type: 'post',            url: 'index.php?route=module/cart/callback',            dataType: 'html',            data: $('#formproduct_'+id+' :input'),            success: function (html) {                $('#module_cart .middle').html(html);            },                            complete: function () {                var image = $('#image'+id).offset();                var cart  = $('#module_cart').offset();                    $('#image'+id).before('<img src="' + $('#image'+id).attr('src') + '" id="temp" style="position: absolute; top: ' + image.top + 'px; left: ' + image.left + 'px;" />');                    params = {                    top : cart.top + 'px',                    left : cart.left + 'px',                    opacity : 0.0,                    width : $('#module_cart').width(),                      heigth : $('#module_cart').height()                };                            $('#temp').animate(params, 'slow', false, function () {                    $('#temp').remove();                });                    }                    });                    }

вроде ничего не забыл)

единственный недочет который заметил, если не ввести количество то в корзину товар не добавится, исправить легко (либо в контроллере прописать если нету значения то количество 1, либо тупо прописать в поле input стартовое значение 1), но чет я устал на 10дюймовом мониторе что либо делать, так что допиливайте сами)

ну и при желании для остальных страничек делаем аналогично)

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


чё-то некатит !!!в ..catalogcontrollerproductcategory.php заменяем второй foreach ($results as $result) ???Такая Х на весь сайт:[attachment=0]атрибуты.JPG[/attachment]Это значит что какой-то косяк в Controller ?

Файл после редактирования в какой кодировке сохранили? смотрите что у вас в базе лежит и какая там кодировка установлена
Надіслати
Поділитися на інших сайтах


Файл после редактирования в какой кодировке сохранили? смотрите что у вас в базе лежит и какая там кодировка установлена

Что интересно , пересохранял файлы в UTF-8 . Всё равно текст на этих страницах в иероглифах , а все остальные страницы сайта отображаются нормально . :) Я буду рад если проблема только в этом.
Надіслати
Поділитися на інших сайтах


Кто нибудь шарит в теме кодировок ???

Сохраняю эти 2 файла (которые редактировал) с кодировкой UTF-8 ,с такой же хренью и без бума - НО НИЧЕГО НЕ ПОЛУЧАЕТСЯ . Все равно страница с уродскими буквами и только при выборе кодировки через браузер всё исправляется . Уже разные редакторы перепробовал и нотепад++ и тп.

На этапе добавления доработки в файл controller-а , после возникает такая проблема . Как только убираю добавленный кусок кода - отображение нормальное , но то что нужно уже не работает. :?

..... сколько нервов и времени ещё здесь оставить ??? Я скоро на свой аватар стану похож !!! :)

Кто знает как быть ???

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


  • 2 weeks later...

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

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

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

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

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

Вхід

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

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

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

Important Information

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