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

Модификатор, что я делаю не так?!


odorlega

Recommended Posts

Здравствуйте. 

Попытался оформить свои правки Модификатором, а не напрямую в файлы.

Структура.

папка upload - пустая, но без нее при установке ругается что она не найдена 

install.sql 

Спойлер

/* Добавляем новый столбец для хранения пути до иконки */
ALTER TABLE `oc_category` ADD `iconImage` VARCHAR(255) NOT NULL AFTER `image`;

 

install.xml

Спойлер

<?xml version="1.0" encoding="utf-8"?>
<modification>
	<name>Иконки для категорий товаров</name>
	<code>icon-image-category</code>
	<version>1.0</version>
	<author>Oleg Odoresko</author>
	<link></link>

	<file path="admin/controller/catalog/category.php">
		<operation>
			<search><![CDATA[
			$this->load->model('setting/store');
			]]></search>
			<add position="after"><![CDATA[
			if (isset($this->request->post['iconImage'])) {
				$data['iconImage'] = $this->request->post['iconImage'];
			} elseif (!empty($category_info)) {
				$data['iconImage'] = $category_info['iconImage'];
			} else {
				$data['iconImage'] = '';
			}
			]]></add>
		</operation>
		<operation>
			<search><![CDATA[[
			$this->load->model('tool/image');
			]]></search>
			<add position="after"><![CDATA[
			if (isset($this->request->post['iconImage']) && is_file(DIR_IMAGE . $this->request->post['iconImage'])) {
				$data['thumbIcon'] = $this->model_tool_image->resize($this->request->post['iconImage'], 33, 33);
			} elseif (!empty($category_info) && is_file(DIR_IMAGE . $category_info['iconImage'])) {
				$data['thumbIcon'] = $this->model_tool_image->resize($category_info['iconImage'], 33, 33);
			} else {
				$data['thumbIcon'] = $this->model_tool_image->resize('no_image.png', 33, 33);
			}
			$data['placeholderIcon'] = $this->model_tool_image->resize('no_image.png', 33, 33);
			]]></add>
		</operation>
		<operation>
			<search><![CDATA[
			$data['entry_image'] = $this->language->get('entry_image');
			]]></search>
			<add position="after"><![CDATA[
			$data['entry_iconImage'] = $this->language->get('entry_iconImage');
			]]></add>
		</operation>
	</file>

	<file path="admin/model/catalog/category.php">
		<operation>
			<search><![CDATA[
			public function editCategory($category_id, $data) {
			]]></search>
			<add position="after"><![CDATA[
			if (isset($data['iconImage'])) {
				$this->db->query("UPDATE " . DB_PREFIX . "category SET iconImage = '" . $this->db->escape($data['iconImage']) . "' WHERE category_id = '" . (int)$category_id . "'");
			}
			]]></add>
		</operation>
		<operation>
			<search><![CDATA[
			$category_id = $this->db->getLastId();
			]]></search>
			<add position="after"><![CDATA[
			if (isset($data['iconImage'])) {
				$this->db->query("UPDATE " . DB_PREFIX . "category SET iconImage = '" . $this->db->escape($data['iconImage']) . "' WHERE category_id = '" . (int)$category_id . "'");
			}
			]]></add>
		</operation>
	</file>

	<file path="admin/view/template/catalog/category_form.tpl">
		<operation>
			<search><![CDATA[
			<div class="form-group">
                <label class="col-sm-2 control-label"><?php echo $entry_image; ?></label>
                <div class="col-sm-10"><a href="" id="thumb-image" data-toggle="image" class="img-thumbnail"><img src="<?php echo $thumb; ?>" alt="" title="" data-placeholder="<?php echo $placeholder; ?>" /></a>
                	<input type="hidden" name="image" value="<?php echo $image; ?>" id="input-image" />
                </div>
            </div>
			]]></search>
			<add position="after"><![CDATA[
			<div class="form-group">
                <label class="col-sm-2 control-label"><?php echo $entry_iconImage; ?></label>
                <div class="col-sm-10"><a href="" id="thumb-iconImage" data-toggle="iconImage" class="img-thumbnail"><img src="<?php echo $thumbIcon; ?>" alt="" title="" data-placeholder="<?php echo $placeholderIcon; ?>" /></a>
                	<input type="hidden" name="iconImage" value="<?php echo $iconImage; ?>" id="input-iconImage" />
                </div>
            </div>
			]]></add>
		</operation>
	</file>
</modification>

 

 

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

5 минут назад, mpn2005 сказал:

Хотя уже не надо.

Я понял суть проблемы.

 

Модификатор не ложите в корень как install.xml

А в папку upload/system/icon_image_category.ocmod.xml

 

А install.xml уберите из корня.

Сделал так)) 

Проблема та же) 

Только теперь еще и в списке модификаторов нет его. 

Раньше он там числился. 

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

3 минуты назад, mpn2005 сказал:

Или как вариант хоть языковой файл какой-то в upload сделать.

По другому, по идее, не прокатит.

прокатит, папка запросто пустой может быть

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

9 минут назад, mpn2005 сказал:

Или как вариант хоть языковой файл какой-то в upload сделать.

По другому, по идее, не прокатит.

Прокатит - пустая upload

upload
install.xml
при повторной установке удалить sql



 

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

Вместо install.sql лучше использовать install.php с проверкой , не было ли поле или таблица создано ранее. Там же можно добавить сразу права , что бы не заморачиватся с ними потом в админке.

То есть создаёте файл install.php с таким содержимым ( в вашем случае)

Пример:
 

<?php
$sql = "CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "category` (
  `iconImage` text CHARACTER SET utf8 NOT NULL
)";

$this->db->query($sql);

Пример с выдачей прав пользователей
 

$this->load->model('user/user_group');
$this->model_user_user_group->addPermission($this->user->getGroupId(), 'access', 'module/foo');
$this->model_user_user_group->addPermission($this->user->getGroupId(), 'modify', 'module/foo');

Пример добавления чпу

$seourl = array(
	'module_foo' 		    => 'foo'
);

foreach ($seourl as $query => $keyword) {
$qu = $this->db->query("SELECT `query` FROM " . DB_PREFIX ."url_alias WHERE `query`='" . $query. "' ");
	if ($qu->num_rows == 0) {
		$this->db->query("INSERT INTO " . DB_PREFIX ."url_alias (query, keyword) VALUES ('" . $query. "', '" . $keyword . "')");
	}
}
	

Папка upload может быть и пустой , но она обязательна, в случае если это архив ocmod (мой_архив.ocmod.zip), рядом с файлами install.xml (sql,php) , могут находится текстовые файлы , с инструкцией например.

 

Для работы с файлами ocmod в админке  рекомендую


 

Змінено користувачем Tom
  • +1 1
Надіслати
Поділитися на інших сайтах

@Tom, у меня проблема с базой. 

Почему не работает 

ALTER TABLE `oc_category` ADD COLUMN IF EXISTS `iconImage` VARCHAR(255) DEFAULT NULL AFTER `image`; ?!

И работает 

ALTER TABLE `oc_category` ADD COLUMN `iconImage` VARCHAR(255) DEFAULT NULL AFTER `image`; ?!

 

 

Я как-то не так применяю IF EXISTS ?!

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

Готовый модификатор. Делал как то по просьбе. В нём всё в одном файле. 

 

Иконки-для-категорий.ocmod.xml

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

19 минут назад, Tom сказал:

Готовый модификатор. Делал как то по просьбе. В нём всё в одном файле. 

 

Иконки-для-категорий.ocmod.xml 6 \u043a\u0411 · 1 download

Спасибо. Подсмотрю. 

Но вся суть сделать самому... вот вскрываю свои нарывы незнания и не понимания. 

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

46 минут назад, odorlega сказал:

@Tom, у меня проблема с базой. 

Почему не работает 

ALTER TABLE `oc_category` ADD COLUMN IF EXISTS `iconImage` VARCHAR(255) DEFAULT NULL AFTER `image`; ?!

 

 

Я как-то не так применяю IF EXISTS ?!

Где вы нашли такую конструкцию?

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

Вроде бы все сделал и все работает!))) 

 

Только вот...

<file path="admin/language/ru-ru/catalog/category.php">
      <operation>
          <search trim="true" index="0"><![CDATA[['entry_layout']]></search>
          <add position="after">
              <![CDATA[[
              $_['entry_iconImage']        = 'Иконка категории';
              ]]>
          </add>
      </operation>
  </file>

Из-за вот этого куска - ложатся категории. 

Причем никакого лога ошибок не ведется нигде и никак. 

Просто не открывается категория и все тут. 

Змінено користувачем odorlega
Надіслати
Поділитися на інших сайтах

<file path="admin/language/ru-ru/catalog/category.php">
      <operation>
          <search><![CDATA[[// Entry]></search>
          <add position="after">
              <![CDATA[[
              $_['entry_iconImage']        = 'Иконка категории';
              ]]>
          </add>
      </operation>
  </file>
  • +1 1
Надіслати
Поділитися на інших сайтах

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

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

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

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

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

Вхід

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

Вхід зараз
×
×
  • Створити...

Important Information

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