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

картинка артибута


Recommended Posts

Здравствуйте, вопрос: Как сделать картинку для атрибута?

Наприер:

Есть атрибут возраст, надо его сделать картинкой, а значение текстом.

Знаю что у каждого атрибута есть свой id, может можно в карточке товара прописать( но я не знаю как) if значение атрибута такое, высветить картинку.

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

Я для этого дорабатывал админку и контроллеры

магазина

 

1. Для атрибута создается создается доп. поле для изображений ( может создаваться в двух местах, в таблице  oc_attribute или oc_attribute_description (если для разных языков нужны разные картинки)

изменения в  модели, контроллере, шаблоне, языковых файлах - не совсем сложные

2. В магазине, в контроллере товара - получить изображение и и в шаблоне его вывести, возможно, не помню, и в модели нужно что-то изменить.

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

модуль хороший, но делает наоборот: значение картинкой а название как было так и осталось, это не подойдет(

Это ищите? https://opencartforum.com/files/file/2163-%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81%D1%8B-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%B0-pro-%D0%B0%D0%B2%D1%82%D0%BE%D1%81%D1%82%D0%B0%D1%82%D1%83%D1%81%D1%8B-%D1%81%D1%82%D0%B8%D0%BA%D0%B5%D1%80%D1%8B/

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

Я для этого дорабатывал админку и контроллеры

магазина

 

1. Для атрибута создается создается доп. поле для изображений ( может создаваться в двух местах, в таблице  oc_attribute или oc_attribute_description (если для разных языков нужны разные картинки)

изменения в  модели, контроллере, шаблоне, языковых файлах - не совсем сложные

2. В магазине, в контроллере товара - получить изображение и и в шаблоне его вывести, возможно, не помню, и в модели нужно что-то изменить.

Спасибо Chukcha, это то что я изначально хотел узнать :eek:

 

Спасибо Ingenerks, это то что я теперь хочу :-D

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

  • 2 years later...

Доброго времени суток, уважаемые форумчане. Собственно интересует та же задача. Пытаюсь справиться своими силами.

Исходные данные: движок ocstore 2.3.0.2.1, шаблон - дефолт

Что сделано

1. в таблицу oc_attribute добавлена графа icon

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

2. изменен файл admin/model/catalog/attribute.php следующим образом

2.1 в функцию addAttribute() добавлены строки

if (isset($data['icon'])) {
    $this->db->query("UPDATE " . DB_PREFIX . "attribute SET icon = '" . $this->db->escape($data['icon']) . "' WHERE attribute_id = '" . (int)$attribute_id . "'");
}

2.2 в функцию editAttribute() добавлены строки

if (isset($data['icon'])) {
   $this->db->query("UPDATE " . DB_PREFIX . "attribute SET icon = '" . $this->db->escape($data['icon']) . "' WHERE attribute_id = '" . (int)$attribute_id . "'");
}

3. в файл /admin/view/template/catalog/attribute_form.tpl добавлена конструкция

<div class="form-group">
  <label class="col-sm-2 control-label" for="input-sort-order"><?php echo $entry_icon; ?></label>
  <div class="col-sm-10">
    <a href="" id="thumb-image" data-toggle="image" class="img-thumbnail"><img src="<?php echo $thumb_icon; ?>" alt="" title="" data-placeholder="<?php echo $placeholder_icon; ?>" /></a><input type="hidden" name="icon" value="<?php echo $icon; ?>" id="input-image" />
  </div>
</div>

4. в файле /admin/controller/catalog/attribute.php в функцию getForm() добавлены строки

if (isset($this->request->post['icon'])) {
	$data['icon'] = $this->request->post['icon'];
	} elseif (!empty($attribute_info)) {
		$data['icon'] = $attribute_info['icon'];
	} else {
	$data['icon'] = '';
}

$this->load->model('tool/icon');

if (isset($this->request->post['icon']) && is_file(DIR_IMAGE . $this->request->post['icon'])) {
	$data['thumb_icon'] = $this->model_tool_icon->resize($this->request->post['icon'], 100, 100);
} elseif (!empty($attribute_info) && is_file(DIR_IMAGE . $attribute_info['icon'])) {
	$data['thumb_icon'] = $this->model_tool_icon->resize($attribute_info['icon'], 100, 100);
} else {
	$data['thumb_icon'] = $this->model_tool_icon->resize('no_image.png', 100, 100);
}

$data['placeholder_icon'] = $this->model_tool_icon->resize('no_image.png', 100, 100);

Эти мероприятия привели к тому, что в графу icon таблицы oc_attribute прописывается путь к изображению. Однако обратной связи нет. В карточке атрибута это изображение не отображается (попытка считать содержимое $thumb_icon приводит к "Notice: Undefined variable: thumb_icon in ...\admin\view\template\catalog\attribute_form.tpl on line 69" ).

Точно так же себя ведет попытка вывести $attribute['icon'] в карточку товара – Undefined index: icon.

Складывается впечатление, что в $attribute_info значение графы icon не попадает.

Подскажите, пожалуйста, в какую сторону копать дальше? И в каком месте данные переменные объявляются?

Подскажите, в какую сторону копать, и где мне их

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


с первой частью разобрался. перенес код из п.4 своего предыдущего поста выше по функции getForm() - теперь картинка к атрибуту прикрепляется

теперь пытаюсь вывести картинки в карточку товара. в ...\catalog\view\theme\default\template\product\product.tpl это делается так:

<div class="tab-pane" id="tab-specification">
  <table class="table table-bordered">
    <?php foreach ($attribute_groups as $attribute_group) { ?>
    <thead>
      <tr>
        <td colspan="2"><strong><?php echo $attribute_group['name']; ?></strong></td>
      </tr>
    </thead>
    <tbody>
      <?php foreach ($attribute_group['attribute'] as $attribute) { ?>
      <tr>
        <td><?php echo $attribute['name']; ?></td>
        <td><?php echo $attribute['icon']; ?></td> <!-- добавлена строка -->
        <td><?php echo $attribute['text']; ?></td>
      </tr>
      <?php } ?>
    </tbody>
    <?php } ?>
  </table>
</div>

насколько я понимаю, обработкой шаблона ...\catalog\view\theme\default\template\product\product.tpl занимается ...\catalog\controller\product\product.php Меня интересует строка

$data['attribute_groups'] = $this->model_catalog_product->getProductAttributes($this->request->get['product_id']);

функция getProductAttributes в ...\catalog\model\catalog\product.php выглядит так

public function getProductAttributes($product_id) {
	$product_attribute_group_data = array();

	$product_attribute_group_query = $this->db->query("SELECT ag.attribute_group_id, agd.name FROM " . DB_PREFIX . "product_attribute pa LEFT JOIN " . DB_PREFIX . "attribute a ON (pa.attribute_id = a.attribute_id) LEFT JOIN " . DB_PREFIX . "attribute_group ag ON (a.attribute_group_id = ag.attribute_group_id) LEFT JOIN " . DB_PREFIX . "attribute_group_description agd ON (ag.attribute_group_id = agd.attribute_group_id) WHERE pa.product_id = '" . (int)$product_id . "' AND agd.language_id = '" . (int)$this->config->get('config_language_id') . "' GROUP BY ag.attribute_group_id ORDER BY ag.sort_order, agd.name");

	foreach ($product_attribute_group_query->rows as $product_attribute_group) {
		$product_attribute_data = array();

		$product_attribute_query = $this->db->query("SELECT a.attribute_id, ad.name, pa.text FROM " . DB_PREFIX . "product_attribute pa LEFT JOIN " . DB_PREFIX . "attribute a ON (pa.attribute_id = a.attribute_id) LEFT JOIN " . DB_PREFIX . "attribute_description ad ON (a.attribute_id = ad.attribute_id) WHERE pa.product_id = '" . (int)$product_id . "' AND a.attribute_group_id = '" . (int)$product_attribute_group['attribute_group_id'] . "' AND ad.language_id = '" . (int)$this->config->get('config_language_id') . "' AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY a.sort_order, ad.name");

		foreach ($product_attribute_query->rows as $product_attribute) {
			$product_attribute_data[] = array(
				'attribute_id' => $product_attribute['attribute_id'],
				'name'         => $product_attribute['name'],
				'icon'	       => $product_attribute['icon'], // добавлена строка
				'text'         => $product_attribute['text']
			);
		}

		$product_attribute_group_data[] = array(
			'attribute_group_id' => $product_attribute_group['attribute_group_id'],
			'name'               => $product_attribute_group['name'],
			'attribute'          => $product_attribute_data
		);
	}

	return $product_attribute_group_data;
}

в таком виде карточка товара приводит к ошибке Notice: Undefined index: icon in ...\catalog\model\catalog\product.php on line 324.

Не могу понять в чем причина, ведь в oc_attribute графа icon присутствует и должна выгружаться в $product_attribute_query

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


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

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

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

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

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

Вхід

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

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

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

Important Information

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