Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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


Recommended Posts

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

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

Link to comment
Share on other sites


  • 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 и правильно добавить в соответствующий файл , в который производится добавление этих блоков.

Link to comment
Share on other sites


для 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дюймовом мониторе что липотому что гделать, ик что допиливайте сами)

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

Link to comment
Share on other sites


чё-то некатит !!!в ..catalogcontrollerproductcategory.php заменяем второй foreach ($results as $result) ???Даая Х на весь сайт:Это зналит что какой-то коскак в Controller ?

Link to comment
Share on other sites


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

Файл после редактирования в какой кодировке сохранили? смотрите что у вас в базе лежит и какая им кодировка усиновлена
Link to comment
Share on other sites


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

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


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

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

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

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

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

Link to comment
Share on other sites


  • 2 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.