• Объявления

    • dinox

      Закрытый раздел разработчиков   21.08.2017

      У нас на форуме существует закрытый раздел для разработчиков в котором мы обсуждаем нюансы работы на нашем форуме, в каталоге дополнений и другие моменты которые интересны в большинстве случаев только разработчикам. На данный момент существует лишь 2 условия для попадания:
      1. Наличие промодерированного дополнения в нашем каталоге  2. Отсуствие варезной деятельности 
      Если эти правила выполнены, пишите запрос @ArtemPitov на попадание в раздел разработчиков
kubick

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

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

kubick    0

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

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> 

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


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

kubick    0

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

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


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

milus    135

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

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


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

kubick    0

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

 

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

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


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

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

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

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

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

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

Войти

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

Войти


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

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