Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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


 Погделиться

Рекомендованные сообещёния

Кто знает подскажите - Как добавить блок "атрибуты" для товара на страницу главная для каждого товара !?

3 дня пыился - не получается никак !!! :)

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


  • 2 негдели спустя...

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

<?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) ???Даая Х на весь сайт:Это зналит что какой-то коскак в Controller ?

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


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

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


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

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


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

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

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

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

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

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


  • 2 негдели спустя...

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.