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

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

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

Наприер:

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

Знаю что у каждого атрибута есть свой 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

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


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

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

Исходные данные: движок 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

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


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

разобрался.

в sql-запрос $product_attribute_query добавил a.icon и все заработало.

Всем спасибо за внимание.

Изменено пользователем OrganiZzZm

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

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

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