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

Дополнительное поле в категории.


Recommended Posts

Добрый день! Очень хочу добавить поле "цвета серии" в админку/категории, что бы впоследствии эти цвета серии отображались на странице категории.  Но, к сожалению, после добавления фотографии в менеджере изображения, ничего не происходит! Фотографии не добавляются.  Делал по аналогии со вкладкой изображения у Товара. Подскажите, пожалуйста где ошибка!
 

1. Создал таблицу в mysql:

CREATE TABLE IF NOT EXISTS `oc_categ_colour` (
  `categ_colour_id` int(11) NOT NULL AUTO_INCREMENT,
  `category_id` int(11) NOT NULL,
  `image` varchar(255) DEFAULT NULL,
  `sort_order` int(3) NOT NULL DEFAULT '0',
  PRIMARY KEY (`categ_image_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8
; 

2. Добавил запросы в admin\model\catalog\category.php

    if (isset($data['categ_colour'])) {
        foreach ($data['categ_colour'] as $categ_colour) {
            $this->db->query("INSERT INTO " . DB_PREFIX . "categ_colour SET category_id = '" . (int)$category_id . "', image = '" . $this->db->escape(html_entity_decode($categ_colour['image'], ENT_QUOTES, 'UTF-8')) . "', sort_order = '" . (int)$categ_colour['sort_order'] . "'");
}
}
$this->db->query("DELETE FROM " . DB_PREFIX . "categ_colour WHERE category_id = '" . (int)$category_id . "'");

     if (isset($data['categ_colour'])) {
         foreach ($data['categ_colour'] as $categ_colour) {
             $this->db->query("INSERT INTO " . DB_PREFIX . "categ_colour SET category_id = '" . (int)$category_id . "', image = '" . $this->db->escape(html_entity_decode($categ_colour['image'], ENT_QUOTES, 'UTF-8')) . "', sort_order = '" . (int)$categ_colour['sort_order'] . "'");
}
}
$this->db->query("DELETE FROM " . DB_PREFIX . "categ_colour WHERE category_id = '" . (int)$category_id . "'");
public function getCategoryColours($category_id) {
	$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "categ_colour WHERE category_id = '" . (int)$category_id . "'");
	       return $query->rows;
	}

3. Внёс изменения в admin\controller\catalog\category.php

$this->data['entry_image'] = 'Рисунок';
	$this->data['text_image_manager'] = 'Менеджер изображений';
	$this->data['text_browse'] = 'Обзор';
	$this->data['text_clear'] = 'Очистить';
	$this->data['button_add_image'] = $this->language->get('button_add_image');
	$this->data['button_remove'] = $this->language->get('button_remove');
	$this->data['tab_image'] = $this->language->get('tab_image');		
	$this->data['tab_colours'] = 'Цвета серии';
 $this->load->model('tool/image');
	if (isset($this->request->post['categ_colour'])) {
	      $categ_colours = $this->request->post['categ_colour'];
      } elseif (isset($this->request->get['category_id'])) {
		$categ_colours = $this->model_catalog_category->getCategoryColours($this->request->get['category_id']);
       } else {
	$categ_colours = array();
	} $this->data['categ_colours'] = array();
	foreach ($categ_colours as $categ_colour) {
        if ($categ_colour['image'] && file_exists(DIR_IMAGE . $categ_colour['image'])) {
	$image = $categ_colour['image'];
	} else {
	$image = 'no_image.jpg';
	}
			
	$this->data['categ_colours'][] = array(
	'image'      => $image,
	'thumb'      => $this->model_tool_image->resize($image, 100, 100),
	'sort_order' => $categ_colour['sort_order']);
	}
$this->data['no_image'] = $this->model_tool_image->resize('no_image.jpg', 100, 100);

4. Добавил таб в admin\view\template\category\category-form.tpl

id="tabs" class="htabs"><a href="#tab-general"><?php echo $tab_general; ?></a><a href="#tab-data"><?php echo $tab_data; ?></a><a href="#tab-design"><?php echo $tab_design; ?></a><a href="#tab-colours"><?php echo $tab_colours; ?></a></div>
<div id="tab-colours">
      <table id="images" class="list">
        <thead>
          <tr>
            <td class="left"><?php echo $entry_image; ?></td>
            <td class="right"><?php echo $entry_sort_order; ?></td>
            <td></td>
           </tr>
          </thead>
 <?php $image_row = 0; ?>
    <?php foreach ($categ_colours as $categ_colour) { ?>
       <tbody id="image-row<?php echo $image_row; ?>">
          <tr>
             <td class="left"><div class="image"><img src="<?php echo $categ_colour['thumb']; ?>" alt="" id="thumb<?php echo $image_row; ?>" />
              <input type="hidden" name="categ_colour[<?php echo $image_row; ?>][image]" value="<?php echo $categ_colour['image']; ?>" id="image<?php echo $image_row; ?>" />
           <br />
              <a onclick="image_upload('image<?php echo $image_row; ?>', 'thumb<?php echo $image_row; ?>');"><?php echo $text_browse; ?></a>  |  <a onclick="$('#thumb<?php echo $image_row; ?>').attr('src', '<?php echo $no_image; ?>'); $('#image<?php echo $image_row; ?>').attr('value', '');"><?php echo $text_clear; ?></a></div></td>
             <td class="right"><input type="text" name="categ_colour[<?php echo $image_row; ?>][sort_order]" value="<?php echo $categ_colour['sort_order']; ?>" size="2" /></td>
              <td class="left"><a onclick="$('#image-row<?php echo $image_row; ?>').remove();" class="button"><?php echo $button_remove; ?></a></td>
            </tr>
           </tbody>
            <?php $image_row++; ?>
            <?php } ?>
           <tfoot>
          <tr>
           <td colspan="2"></td>
           <td class="left"><a onclick="addColour();" class="button"><?php echo $button_add_image; ?></a></td>
          </tr>
         </tfoot>
        </table>
       </div

<script type="text/javascript"><!--
var image_row = <?php echo $image_row; ?>;

function addColour() {
    html  = '<tbody id="image-row' + image_row + '">';
	html += '  <tr>';
	html += '    <td class="left"><div class="image"><img src="<?php echo $no_image; ?>" alt="" id="thumb' + image_row + '" /><input type="hidden" name="categ_colour[' + image_row + '][image]" value="" id="image' + image_row + '" /><br /><a onclick="image_upload(\'image' + image_row + '\', \'thumb' + image_row + '\');"><?php echo $text_browse; ?></a>  |  <a onclick="$(\'#thumb' + image_row + '\').attr(\'src\', \'<?php echo $no_image; ?>\'); $(\'#image' + image_row + '\').attr(\'value\', \'\');"><?php echo $text_clear; ?></a></div></td>';
	html += '    <td class="right"><input type="text" name="categ_colour[' + image_row + '][sort_order]" value="" size="2" /></td>';
	html += '    <td class="left"><a onclick="$(\'#image-row' + image_row  + '\').remove();" class="button"><?php echo $button_remove; ?></a></td>';
	html += '  </tr>';
	html += '</tbody>';
	
	$('#images tfoot').before(html);
	
	image_row++;
}

//--></script> 
Надіслати
Поділитися на інших сайтах


Уважаемые форумчане, помогите, пожалуйста! За последние полгода целеноправленно начал изучать HTML, CSS, PHP. К сожалению, пока не на всех этапах чётко понимаю код, в связи с этим возникают такие проблемы.   Есть много тем, как добавить то или иное поле в продукт, но там они почему то либо не используют запросы к базе данных, либо добавляются в уже существующие таблицы. А данный пример, может стать прекрасным кейсом, как добавить поле в категории. Обязуюсь после нахождения ошибки, дописать вывод в пользовательскую часть, что бы пример был полным!  

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


Почему бы вам не сделать это обычным кодом в описании категории?

 

Примерно 100 категорий предполагается, если делать вручную, администратор сайт будет постоянно зависеть от меня. Да и вручную делать это для 100 категорий, если учесть, что в среднем примерно 4 разных цвета идёт на каждую категорию, примерно 400 разных ссылок на цвета. Не очень удобно. Вообще этот код аналогичен, уже добавленному коду в админку, который позволяет дополнительно добавлять фотографии, к категории. И как я понимаю проблема в javasript где то, потому что как только я добавляю данный код, несмотря на то переменные все разные и разные запросы к бд, перестает работать и загрузка изображений. для дополнительных фотографий категорий. Начал читать учебник по javasript, но пока только в самом начале.   

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


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

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

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

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

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

Вхід

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

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

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

Important Information

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