Jump to content
Sign in to follow this  
kubick

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

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> 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.