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

[Решено] Товар -> Связи -> поле Рекомендуем, для чего?!


aincoder

Recommended Posts

Ну представьте что вы продаете сало....

ну а сало вкусно с чем, с хреном и черным хлебом...

вот вы можете добавить в карточку товара предложение покупателю, что мол...

Наше сало - лучше всего есть с суперхреном.. Как бы из подтишка нападаете на его подсознание и говорите ХРЕН ТЕБЕ ХРЕН ТЕБЕ....

И он видя все это истекается слюной, представляя великолепный хреновый вкус сала, и берет сала с хреном еще и своему напарнику и его жене. В итоге пришел за прокладками, а купил пол магазина рыболовных снастей.

  • +1 6
Надіслати
Поділитися на інших сайтах


  • 2 weeks later...

Уважаемое сообщество!

Есть желание продублировать поле Рекомендуемые(Похожие товары) в админке, чтоб выводить в карточке товара и Похожие товары и Аксессуары к товару.

Кручу файлы:

adminviewtemplatecatalogproduct_form.tpl

admincontrollercatalogproduct.php

adminmodelcatalogproduct.php

catalogviewtheme~mytheme~templateproductproduct.tpl

catalogmodelcatalogproduct.php

Начал все клонировать примитивно, добавляя к именам функций и переменных цифру 2, что-то вроде этого:

if (isset($this->request->post['product_related2'])) {
$products = $this->request->post['product_related2'];
} elseif (isset($this->request->get['product_id'])) {
$products = $this->model_catalog_product->getProductRelated2($this->request->get['product_id']);
} else {
$products = array();
}

$this->data['product_related2'] = array();

foreach ($products as $product_id) {
$related_info = $this->model_catalog_product->getProduct($product_id);

if ($related_info) {
$this->data['product_related2'][] = array(
'product_id' => $related_info['product_id'],
'name'	   => $related_info['name']
);
}
}

также скопировал таблицу product_related в phpMyadmin

пока добился только вывода в админке дополнительного поля input и скролбокса для добавления товаров:

Изображение

Подскажите, может где-то еще нужно ковырять или есть какое-то решение? На форуме и с помощью поиска от Google корпорации добра ничего подобного не нашел. Очень хочется доделать такую доработку и поделиться ей.

Заранее спасибо за помощь!

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


Так вы вроде всё что нужно уже поправили. Теперь выводите это в карточку товара и исправляйте ошибки, если появятся, и всё, будет вам счастье.

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


сделал, работает как часы, плюс добавил в настройках магазина на вкладке "Изображения" дополнительный пункт размер изображения аксессуаров, чтобы в разном варианте выводить размер картинок для нового пункта.

Кому нужно подобное решение, могу поделиться)

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


Итак, все по порядку:

Для начала необходимо создать новую таблицу в базе данных MySQL, я просто скопировал уже существующую product_related, сделать это можно в phpMyadmin (выбираем необходимую таблицу -> Операции -> Скопировать таблицу, здесь указываем имя новой таблицы и жмём ОК.

Изображение

дальше переходим к файлу mydomainwwwadminviewtemplatecatalogproduct_form.tpl

Находим блок

<div id="tab-links">
, а внутри него таблицу :

<tr>
              <td><?php echo $entry_related; ?></td>
              <td><input type="text" name="related" value="" /></td>
            </tr>
            <tr>
              <td> </td>
              <td><div id="product-related" class="scrollbox">
                  <?php $class = 'odd'; ?>
                  <?php foreach ($product_related as $product_related) { ?>
                  <?php $class = ($class == 'even' ? 'odd' : 'even'); ?>
                  <div id="product-related<?php echo $product_related['product_id']; ?>" class="<?php echo $class; ?>"> <?php echo $product_related['name']; ?><img src="view/image/delete.png" />
                    <input type="hidden" name="product_related[]" value="<?php echo $product_related['product_id']; ?>" />
                  </div>
                  <?php } ?>
                </div></td>
            </tr>
<tr>
Копируем её и вставляем после этого же кода.

Далее в этом куске кода нужно переименовать все переменные ($entry_related), названия инпутов ("related", "product_related[]") и div' ов (product-related), я велосипед не выдумывал и просто добавлял на конце цифру "2", вы же можете, да и лучше назвать их более понятней по смыслу. Вот мой код:

<tr>
              <td><?php echo $entry_related2; ?></td>
              <td><input type="text" name="related2" value="" /></td>
            </tr>
            <tr>
              <td> </td>
              <td><div id="product-related2" class="scrollbox">
                  <?php $class = 'odd'; ?>
                  <?php foreach ($product_related2 as $product_related2) { ?>
                  <?php $class = ($class == 'even' ? 'odd' : 'even'); ?>
                  <div id="product-related2<?php echo $product_related2['product_id']; ?>" class="<?php echo $class; ?>"> <?php echo $product_related2['name']; ?><img src="view/image/delete.png" />
                    <input type="hidden" name="product_related2[]" value="<?php echo $product_related2['product_id']; ?>" />
                  </div>
                  <?php } ?>
                </div></td>
            </tr>
Дальше в этом же файле необходимо найти javascript отвечающий за добавление из инпута ввода товара, в скроллбокс, этот скрипт почти в самом конце кода. И также переименовать по смылслу все переменные, ниже вся конструкция моего скрипта:

<script type="text/javascript"><!--
$('input[name='related']').autocomplete({
delay: 0,
source: function(request, response) {
$.ajax({
url: 'index.php?route=catalog/product/autocomplete&token=<?php echo $token; ?>&filter_name=' +  encodeURIComponent(request.term),
dataType: 'json',
success: function(json) { 
response($.map(json, function(item) {
return {
label: item.name,
value: item.product_id
}
}));
}
});

}, 
select: function(event, ui) {
$('#product-related' + ui.item.value).remove();

$('#product-related').append('<div id="product-related' + ui.item.value + '">' + ui.item.label + '<img src="view/image/delete.png" /><input type="hidden" name="product_related[]" value="' + ui.item.value + '" /></div>');

$('#product-related div:odd').attr('class', 'odd');
$('#product-related div:even').attr('class', 'even');

return false;
}
});

$('#product-related div img').live('click', function() {
$(this).parent().remove();

$('#product-related div:odd').attr('class', 'odd');
$('#product-related div:even').attr('class', 'even'); 
});
$('input[name='related2']').autocomplete({
delay: 0,
source: function(request, response) {
$.ajax({
url: 'index.php?route=catalog/product/autocomplete&token=<?php echo $token; ?>&filter_name=' +  encodeURIComponent(request.term),
dataType: 'json',
success: function(json) { 
response($.map(json, function(item) {
return {
label: item.name,
value: item.product_id
}
}));
}
});

}, 
select: function(event, ui) {
$('#product-related2' + ui.item.value).remove();

$('#product-related2').append('<div id="product-related2' + ui.item.value + '">' + ui.item.label + '<img src="view/image/delete.png" /><input type="hidden" name="product_related2[]" value="' + ui.item.value + '" /></div>');

$('#product-related2 div:odd').attr('class', 'odd');
$('#product-related2 div:even').attr('class', 'even');

return false;
}
});

$('#product-related2 div img').live('click', function() {
$(this).parent().remove();

$('#product-related2 div:odd').attr('class', 'odd');
$('#product-related2 div:even').attr('class', 'even'); 
});
//--></script>
product_form.tpl теперь можно закрывать и переходим к файлу mydomainwwwadmincontrollercatalogproduct.php

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

$this->data['entry_related'] = $this->language->get('entry_related');

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

$this->data['entry_related2'] = $this->language->get('entry_related2');
Находим:

$this->data['product_related'] = array();
 
  foreach ($products as $product_id) {
   $related_info = $this->model_catalog_product->getProduct($product_id);
  
   if ($related_info) {
    $this->data['product_related'][] = array(
	 'product_id' => $related_info['product_id'],
	 'name'	   => $related_info['name']
    );
   }
  }

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

if (isset($this->request->post['product_related2'])) {
   $products = $this->request->post['product_related2'];
  } elseif (isset($this->request->get['product_id'])) { 
   $products = $this->model_catalog_product->getProductRelated2($this->request->get['product_id']);
  } else {
   $products = array();
  }

  $this->data['product_related2'] = array();
 
  foreach ($products as $product_id) {
   $related_info = $this->model_catalog_product->getProduct($product_id);
  
   if ($related_info) {
    $this->data['product_related2'][] = array(
	 'product_id' => $related_info['product_id'],
	 'name'	   => $related_info['name']
    );
   }
  }

Обратите внимание на запрос getProductRelated2 его мы тоже переименовали, описывать его будем в модели.

Дальше работаем с файлом mydomainwwwadminlanguagerussiancatalogproduct.php

здесь добавляем только одну строчку:

$_['entry_related'] = 'Рекомендуемые:';

$_['entry_related2'] = 'Аксессуары:';

Следующий файл - mydomainwwwadminmodelcatalogproduct.php

Тут больше всего правок, все по тому же принципу, я советую пользоваться Notepad++ в поиск забиваете фразу related, ищете по порядку и клонируете с переименованием по смыслу, желательно нужно клонировать целыми конструкциями и выражениями, в этом файле после всех правок у меня 88 совпадений по запросу related. Пример:

Изображение

После правки этого файла работа над добавлением новой опции в админке закончена.

  • +1 5
Надіслати
Поділитися на інших сайтах


Переходим к фронт-енду...

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

Итак, переходим в файл mydomainwwwcatalogviewthemedefaulttemplateproductproduct.tpl, где default - папка с вашим шаблоном

Находим блок <div id="tabs" class="htabs"> это блок в дефолтном шаблоне с вкладками "Описание", "Характеристики", "Отзывы" и т.д., в других шаблонах это название (id div'a) может быть другим.

Если вы хотите добавить выводимые товары во вкладке, тогда Вам нужно создать якорь-ссылку по типу существующей

<a href="#tab-related2"><?php echo $tab_related2; ?> (<?php echo count($products2); ?>)</a>
,

где <?php echo $tab_related; ?> - это название вкладки, тут вообще вместо этого можно просто написать "Аксессуары" например, а (<?php echo count($products); ?>) - это счетчик количества в скобках, тоже, если это нужно.

И создать(скопировать) блок:

<?php if ($products2) { ?> <!--проверям есть, ли массив товаров и выводим содержимое-->
  <div id="tab-related2" class="tab-content"><!--название блока, как названия якоря-->
    <div class="box-product">
	  <?php foreach ($products2 as $product) { ?>
	  <div>
	    <?php if ($product['thumb']) { ?>
	    <div class="image"><a href="<?php echo $product['href']; ?>"><img src="<?php echo $product['thumb']; ?>" alt="<?php echo $product['name']; ?>" /></a></div>
	    <?php } ?>
	    <div class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></div>
	    <?php if ($product['price']) { ?>
	    <div class="price">
		  <?php if (!$product['special']) { ?>
		  <?php echo $product['price']; ?>
		  <?php } else { ?>
		  <span class="price-old"><?php echo $product['price']; ?></span> <span class="price-new"><?php echo $product['special']; ?></span>
		  <?php } ?>
	    </div>
	    <?php } ?>
	    <a onclick="addToCart('<?php echo $product['product_id']; ?>');" class="button"><?php echo $button_cart; ?></a></div>
	  <?php } ?>
    </div>
  </div>
  <?php } ?>

Если вы не хотите выводить во вкладке, а например нижевыше, то просто вставляем последний блок в нужном месте страницы и не создаем якорей.

Идем дальше в файл mydomainwwwcatalogcontrollerproductproduct.php

Вставляем код обозначения переменной имени вкладки из языкового файла после $this->data['tab_related'] = $this->language->get('tab_related');

$this->data['tab_related2'] = $this->language->get('tab_related2');

Ищем код

$this->data['products'] = array();
копируем его и все остальное до $this->data['tags'] = array(); и вставляем также до $this->data['tags'] = array();

Меняем на наши имена имя массива 'products' я просто опять добавил "2" и getProductRelated на getProductRelated2, ниже мой код:

$this->data['products2'] = array();
  
   $results = $this->model_catalog_product->getProductRelated2($this->request->get['product_id']);
   foreach ($results as $result) {
    if ($result['image']) {
	 $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_related_width'), $this->config->get('config_image_related_height'));
    } else {
	 $image = false;
    }
   
    if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
	 $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));
    } else {
	 $price = false;
    }
	 
    if ((float)$result['special']) {
	 $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')));
    } else {
	 $special = false;
    }
   
    if ($this->config->get('config_review_status')) {
	 $rating = (int)$result['rating'];
    } else {
	 $rating = false;
    }
	  
    $this->data['products2'][] = array(
	 'product_id' => $result['product_id'],
	 'thumb'	 => $image,
	 'name'	  => $result['name'],
	 'price'	 => $price,
	 'special'   => $special,
	 'rating'	 => $rating,
	 'reviews'    => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
	 'href'	  => $this->url->link('product/product', 'product_id=' . $result['product_id']),
    );
   }

Обратите внимание на 'config_image_related_width' и 'config_image_related_height' - это размеры изображения товара из настроек изображений в админке, но к этому мы вернемся позже.

Сразу перейдем к файлу mydomainwwwcataloglanguagerussianproductproduct.php и добавим строчку $_['tab_related2'] = 'Аксессуары';

Далее к файлу mydomainwwwcatalogmodelcatalogproduct.php

Находим код:

public function getProductRelated($product_id) {
  $product_data = array();
  $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_related pr LEFT JOIN " . DB_PREFIX . "product p ON (pr.related_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pr.product_id = '" . (int)$product_id . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");
 
  foreach ($query->rows as $result) {
   $product_data[$result['related_id']] = $this->getProduct($result['related_id']); и 
  }

копируем, вставляем за ним же и меняем в скопированном куске getProductRelated на getProductRelated2 и "product_related pr LEFT JOIN " на "product_related2 pr LEFT JOIN "

Все, теперь у нас все работает!

  • +1 3
Надіслати
Поділитися на інших сайтах


Размер изображения товара берется из настроек админки (Система - Настройки - Изображения):

Изображение

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

Идем в файл mydomainwwwadminviewtemplatesettingstore_form.tpl

Находим блок <div id="tab-image"> а в нём поля таблицы:

<tr>
			  <td><span class="required">*</span> <?php echo $entry_image_related; ?></td>
			  <td><input type="text" name="config_image_related_width" value="<?php echo $config_image_related_width; ?>" size="3" />
			    x
			    <input type="text" name="config_image_related_height" value="<?php echo $config_image_related_height; ?>" size="3" />
			    <?php if ($error_image_related) { ?>
			    <span class="error"><?php echo $error_image_related; ?></span>
			    <?php } ?></td>
		    </tr>
Копируем, вставляем за ним же и меняем <?php echo $entry_image_related; ?> на <?php echo $entry_image_related2; ?>, а также все config_image_related_width и config_image_related_height на config_image_related_width2 и config_image_related_height2

Теперь в файл mydomainwwwadminlanguagerussiansettingsetting.php и добавим строчку

$_['entry_image_related2'] = 'Размер изображения аксессуаров к товару:';

Дальше правим файл mydomainwwwadmincontrollersettingsetting.php

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

$this->data['entry_image_related'] = $this->language->get('entry_image_related');
За ней вставляем:

$this->data['entry_image_related2'] = $this->language->get('entry_image_related2');

Так же ищем

if (isset($this->request->post['config_image_related_width'])) {
   $this->data['config_image_related_width'] = $this->request->post['config_image_related_width'];
  } else {
   $this->data['config_image_related_width'] = $this->config->get('config_image_related_width');
  }
 
  if (isset($this->request->post['config_image_related_height'])) {
   $this->data['config_image_related_height'] = $this->request->post['config_image_related_height'];
  } else {
   $this->data['config_image_related_height'] = $this->config->get('config_image_related_height');
  }

За ним вставляем с добавленными "двоечками"

if (isset($this->request->post['config_image_related_width2'])) {
   $this->data['config_image_related_width2'] = $this->request->post['config_image_related_width2'];
  } else {
   $this->data['config_image_related_width2'] = $this->config->get('config_image_related_width2');
  }
 
  if (isset($this->request->post['config_image_related_height2'])) {
   $this->data['config_image_related_height2'] = $this->request->post['config_image_related_height2'];
  } else {
   $this->data['config_image_related_height2'] = $this->config->get('config_image_related_height2');
  }

Ищем

if (!$this->request->post['config_image_related_width'] || !$this->request->post['config_image_related_height']) {
   $this->error['image_related'] = $this->language->get('error_image_related');
  }

За ним вставляем

if (!$this->request->post['config_image_related_width2'] || !$this->request->post['config_image_related_height2']) {
   $this->error['image_related'] = $this->language->get('error_image_related');
  }

Ну, и наконец возвращаемся к файлу mydomainwwwcatalogcontrollerproductproduct.php

Отыскиваем наш кусок кода и добавляем "2" к config_image_related_width и config_image_related_height

$results = $this->model_catalog_product->getProductRelated2($this->request->get['product_id']);
   foreach ($results as $result) {
    if ($result['image']) {
	 $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_related_width2'), $this->config->get('config_image_related_height2'));
    } else {
	 $image = false;
    }

Все теперь можно идти пить пиво! :-)

P.S. Firebug + TotalCommander + Notepad++ - пользуйтесь и будет вам счастье!

  • +1 8
Надіслати
Поділитися на інших сайтах


  • 2 months later...

Автору спасибо за работу, вот только есть ошибка. в файле mydomainwwwcatalogmodelcatalogproduct.php

не закрыт представленный код.

Нужно внизу добавить:

return $product_data;

}

Еще при копировании таблицы нужно выбирать "Только структуру" или потом чистить её, чтоб товары не дублировались.

И почему то кнопки "Купить "обрезались:

http://profisale.ru/chernila-c5026-100mb.html

В "Похожих" как было, а в "Сопутствующих" только кусочек кнопки видно. Видимо еще какой-то файл подправить надо.

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


Еще нужно редактировать файл:

mydomain\www\admin\view\template\setting\setting.tpl

редактируется аналогично store_form.tpl.

Для ленивых прикрепил исправленные файлы.

И так и не решилась проблема с кнопками

dop-vkladka.zip

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


  • 2 weeks later...

не прояснилась проблема с кнопками? кто-нибудь еще доп.вкладку добавлял?

Проблема абсолютно не в добавлении новой вкладки. Проблема в невнимательности. У тебя во вкладке "Сопутствующие товары" кнопка "Купить" не обернута в тег <span>. Сделай вот так:
<a onclick="addToCart('410');" class="button"><span>Купить</span></a>
и будет тебе счастье;)
Надіслати
Поділитися на інших сайтах


Проблема абсолютно не в добавлении новой вкладки. Проблема в невнимательности. У тебя во вкладке "Сопутствующие товары" кнопка "Купить" не обернута в тег <span>. Сделай вот так:

<a onclick="addToCart('410');" class="button"><span>Купить</span></a>
и будет тебе счастье ;)
ну да, я не глядя приведенные теги копировал)

заменил на этот:

<span><?php echo $button_cart; ?></span>

спасибо за помощь.

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


  • 1 month later...

Перенес на версию на 1.5.4 вместе с БД - работает.

Единственное, не доделали одну вещь:

Открываем Система->Настройки->Изображения. Если в "рекомендуемых" вместо 80 поставить 0, то вылезет сообщение:

Внимательно проверьте форму на ошибки!

И во вкладке "Изображения" будет надпись:

Необходимо установить размер изображения рекомендуемых товаров!

Но тоже самое не работает с новой вкладкой. Т.е. верхнее сообщение появляется, а вот нижнее нет. К тому же в первом случае сообщение "необходимо установить..." появляется и у нового поля, хотя с ним все норм.

Нашел два файла:

mydomainwwwadminlanguagerussiansettingsetting.php

В нем нужно добавить:

$_['error_image_related2'] = 'Необходимо установить размер изображения сопутствующих товаров!';

mydomainwwwadminviewtemplatesettingsetting.tpl

в нем нужно вставить код:

<tr>

<td><span class="required">*</span> <?php echo $entry_image_related2; ?></td>

<td><input type="text" name="config_image_related_width2" value="<?php echo $config_image_related_width2; ?>" size="3" />

x

<input type="text" name="config_image_related_height2" value="<?php echo $config_image_related_height2; ?>" size="3" />

<?php if ($error_image_related2) { ?>

<span class="error"><?php echo $error_image_related2; ?></span>

<?php } ?></td>

</tr>

Но тогда скрипт ругается на значение "$error_image_related2".

Т.е. есть еще какой-то файл, который нужно подправить. Тогда процесс будет завершен полностью)

___________________________________________________________

Разобрался. Открываем все 4 файла, вбиваем в поиск "image_related" и добавляем "двойки".

Все, теперь проблема решена полностью)

Змінено користувачем ProfiSale
Надіслати
Поділитися на інших сайтах


  • 3 weeks later...

Наконец-то добавил доп.вкладку для сборки MaxyStore 1.5.4 (3 дня копался).

Редактируется файл mydomainwwwadminviewtemplatecatalogproduct_form.tpl

строка 384:

<table class="form">
			<tr>
			  <td><?php echo $entry_related2; ?></td>
			  <td>
   <table>
				  <tr>
					<td style="padding: 0;" colspan="3"><select id="category" style="margin-bottom: 5px;" onchange="getProducts2();">
					  <?php foreach ($categories as $category) { ?>
					  <option value="<?php echo $category['category_id']; ?>"><?php echo $category['name']; ?></option>
					  <?php } ?>
					</select></td>
				  </tr>
				  <tr>
					<td style="padding: 0;"><select multiple="multiple" id="product2" size="10" style="width: 350px;">
					  </select></td>
					<td style="vertical-align: middle;"><input type="button" value=">>" onclick="addRelated2();" />
					  <br />
					  <input type="button" value="<<" onclick="removeRelated2();" /></td>
					<td style="padding: 0;"><select multiple="multiple" id="related2" size="10" style="width: 350px;">
					  </select></td>
<td> <?php echo $info_related2; ?></td>
				  </tr>
				</table>
				<div id="product_related2">
	 <?php if($product_related2){?>
<?php foreach ($product_related2 as $related_id) { ?>
<input type="hidden" name="product_related2[]" value="<?php echo $related_id; ?>" />
<?php } ?>
<?php }else{ ?>
   <?php echo $info_related_no2; ?>
<?php } ?>
				</div>
</td>
			</tr>
		  </table>

ищем "<script type="text/javascript"><!--"
здесь и старый и новый код, просто замените:

<script type="text/javascript"><!--
$('input[name='related']').autocomplete({
delay: 0,
source: function(request, response) {
$.ajax({
url: 'index.php?route=catalog/product/autocomplete&token=<?php echo $token; ?>&filter_name=' +  encodeURIComponent(request.term),
dataType: 'json',
success: function(json) {
response($.map(json, function(item) {
return {
label: item.name,
value: item.product_id
}
}));
}
});

},
select: function(event, ui) {
$('#product-related' + ui.item.value).remove();

$('#product-related').append('<div id="product-related' + ui.item.value + '">' + ui.item.label + '<img src="view/image/delete.png" /><input type="hidden" name="product_related[]" value="' + ui.item.value + '" /></div>');

$('#product-related div:odd').attr('class', 'odd');
$('#product-related div:even').attr('class', 'even');

return false;
},
focus: function(event, ui) {
	  return false;
}
});

$('#product-related div img').live('click', function() {
$(this).parent().remove();

$('#product-related div:odd').attr('class', 'odd');
$('#product-related div:even').attr('class', 'even');
});
$('input[name='related2']').autocomplete({
delay: 0,
source: function(request, response) {
$.ajax({
url: 'index.php?route=catalog/product/autocomplete&token=<?php echo $token; ?>&filter_name=' +  encodeURIComponent(request.term),
dataType: 'json',
success: function(json) {
response($.map(json, function(item) {
return {
label: item.name,
value: item.product_id
}
}));
}
});

},
select: function(event, ui) {
$('#product-related2' + ui.item.value).remove();

$('#product-related2').append('<div id="product-related2' + ui.item.value + '">' + ui.item.label + '<img src="view/image/delete.png" /><input type="hidden" name="product_related2[]" value="' + ui.item.value + '" /></div>');

$('#product-related2 div:odd').attr('class', 'odd');
$('#product-related2 div:even').attr('class', 'even');

return false;
},
focus: function(event, ui) {
	  return false;
}
});

$('#product-related2 div img').live('click', function() {
$(this).parent().remove();

$('#product-related2 div:odd').attr('class', 'odd');
$('#product-related2 div:even').attr('class', 'even');
});
//--></script>
<script type="text/javascript"><!--
var attribute_row = <?php echo $attribute_row; ?>;

function addRelated() {
$('#product :selected').each(function() {
$(this).remove();

$('#related option[value='' + $(this).attr('value') + '']').remove();

$('#related').append('<option value="' + $(this).attr('value') + '">' + $(this).text() + '</option>');

$('#product_related input[value='' + $(this).attr('value') + '']').remove();

$('#product_related').append('<input type="hidden" name="product_related[]" value="' + $(this).attr('value') + '" />');
});
}

function addRelated2() {
$('#product2 :selected').each(function() {
$(this).remove();

$('#related2 option[value='' + $(this).attr('value') + '']').remove();

$('#related2').append('<option value="' + $(this).attr('value') + '">' + $(this).text() + '</option>');

$('#product_related2 input[value='' + $(this).attr('value') + '']').remove();

$('#product_related2').append('<input type="hidden" name="product_related2[]" value="' + $(this).attr('value') + '" />');
});
}

function removeRelated() {
$('#related :selected').each(function() {
$(this).remove();

$('#product_related input[value='' + $(this).attr('value') + '']').remove();
});
}

function removeRelated2() {
$('#related2 :selected').each(function() {
$(this).remove();

$('#product_related2 input[value='' + $(this).attr('value') + '']').remove();
});
}

function getProducts() {
$('#product option').remove();

$.ajax({
url: 'index.php?route=catalog/product/category&token=<?php echo $token; ?>&category_id=' + $('#category').attr('value'),
dataType: 'json',
success: function(data) {
for (i = 0; i < data.length; i++) {
$('#product').append('<option value="' + data[i]['product_id'] + '">' + data[i]['name'] + ' (' + data[i]['model'] + ') </option>');
}
}
});
}

function getProducts2() {
$('#product2 option').remove();

$.ajax({
url: 'index.php?route=catalog/product/category&token=<?php echo $token; ?>&category_id=' + $('#category').attr('value'),
dataType: 'json',
success: function(data) {
for (i = 0; i < data.length; i++) {
$('#product2').append('<option value="' + data[i]['product_id'] + '">' + data[i]['name'] + ' (' + data[i]['model'] + ') </option>');
}
}
});
}

function getRelated() {
$('#related option').remove();

$.ajax({
url: 'index.php?route=catalog/product/related&token=<?php echo $token; ?>',
type: 'POST',
dataType: 'json',
data: $('#product_related input'),
success: function(data) {
$('#product_related input').remove();

for (i = 0; i < data.length; i++) {
$('#related').append('<option value="' + data[i]['product_id'] + '">' + data[i]['name'] + ' (' + data[i]['model'] + ') </option>');

$('#product_related').append('<input type="hidden" name="product_related[]" value="' + data[i]['product_id'] + '" />');
}
}
});
}

function getRelated2() {
$('#related2 option').remove();

$.ajax({
url: 'index.php?route=catalog/product/related2&token=<?php echo $token; ?>',
type: 'POST',
dataType: 'json',
data: $('#product_related2 input'),
success: function(data) {
$('#product_related2 input').remove();

for (i = 0; i < data.length; i++) {
$('#related2').append('<option value="' + data[i]['product_id'] + '">' + data[i]['name'] + ' (' + data[i]['model'] + ') </option>');

$('#product_related2').append('<input type="hidden" name="product_related2[]" value="' + data[i]['product_id'] + '" />');
}
}
});
}

getProducts();
getProducts2();
getRelated();
getRelated2();

В указанной сборке коды в остальных файлах не много отличается от OS. Поэтому не копируйте коды из этой темы. Копируйте в самих в файлах и добавляйте "двойки".

ЗЫ: не знаю как вставить коды красиво, как в первых постах.

Змінено користувачем AlexFisher
: теперь знаете
Надіслати
Поділитися на інших сайтах


  • 2 weeks later...

Нде, решение конечно прикольное, но немного замороченное. А существует ли какой-нибудь модуль, типа как основной "рекомендуем", только для каждого товара отдельно. Ну что бы не вкладкой отображалось, и выводилось отдельным блоком?

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


  • 2 months later...

Нде, решение конечно прикольное, но немного замороченное. А существует ли какой-нибудь модуль, типа как основной "рекомендуем", только для каждого товара отдельно. Ну что бы не вкладкой отображалось, и выводилось отдельным блоком?

Тоже интересно, нашел кто нибудь?

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


т.е. вы хотите выводить "связанные товары" (которые задаются при редактировании товара) не во вкладке, а в дополнительном блоке, типа модуля?

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

  • 2 weeks later...

мне кажется, простой дубль поля "рекомендуемые" в админке (непонятно, почему оно так названо - отображается как "похожие") для вывода сопутки не подходит

если к товару А рекомендуем Б, то на странице товара Б автоматом рекомендуется А, то есть они запариваются

это негибко и приведет к смеху

к Холодильнику мы предлагаем сопутку - Удлинитель, и получится, что к Удлинителю мо предложим автоматом сопутку - Холодильник и еще много чего, почти всю технику

но ведь вкладку "С этим товаром покупают также" всем очень надо, неужели нет готового решения, платного допустим?

подскажите, если кто нашел

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


Гість
Ця тема закрита для публікації повідомлень.
×
×
  • Створити...

Important Information

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