Перейти к содержанию
cashfile

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

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

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

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

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


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

Вот такой вариант !post-70-1293741785,2608_thumb.jpg

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


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

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

<?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) ???Такая Х на весь сайт:post-70-1293741785,3167_thumb.jpgЭто значит что какой-то косяк в Controller ?

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


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

скинь свой category.php и category.tpl

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


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

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

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

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


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

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

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

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


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

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

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

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

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

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

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


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

попробуй добавить такую строку

AddDefaultCharset UTF-8
в .htaccess

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


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

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

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

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

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

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

Войти

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

Войти

  • Последние посетители   0 пользователей онлайн

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

×

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

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