Jump to content
Sign in to follow this  
Slava

[Решено] Убрать поле "Модель"

Recommended Posts

День добрый.Специфика товара у меня в магазине такова, что поле "модель" там ну совсем не нужно и даже мешает. Как снять с него требование на обязательное заполнение? И в описании заказа оно, если не ошибаюсь, тоже отображается, оттуда его тоже бы хорошо убрать. Как всё это провернуть?Версия 1.4.8Спасибо

  • +1 1

Share this post


Link to post
Share on other sites

Меня тоже интересует вопрос как удалить поле "модель". По ссылке которую дал Vetroff совсем другой пост.

У меня ocstore v0.1.7

Share this post


Link to post
Share on other sites

Пишу для версии 0.2.0

Чтобы совсем удалить поле model

admin/controller/catalog/product.php - найти: (1119-я строка)

if ((strlen(utf8_decode($this->request->post['model'])) < 1) || (strlen(utf8_decode($this->request->post['model'])) > 64)) {
      		$this->error['model'] = $this->language->get('error_model');
    	}
Удалить или закомментировать

Убираем model со страницы редактирования товара в админке

admin/view/template/catalog/product_form.tpl - найти: (61-я строка)

<tr>
            <td><span class="required">*</span> <?php echo $entry_model; ?></td>
            <td><input type="text" name="model" value="<?php echo $model; ?>" />
              <?php if ($error_model) { ?>
              <span class="error"><?php echo $error_model; ?></span>
              <?php } ?></td>
          </tr>
Удалить

Убираем вывод модели со страницы продукта

catalog/view/theme/ВАША ТЕМА/template/product/product.tpl - найти (31-я строка в стандартном шаблоне)

<tr>
                <td><b><?php echo $text_model; ?></b></td>
                <td><?php echo $model; ?></td>
              </tr>
Удалить

Убираем вывод модели со страницы категории

catalog/view/theme/ВАША ТЕМА/template/product/category.tpl - найти (53-я строка в стандартном шаблоне)

<span style="color: #999; font-size: 11px;"><?php echo $products[$j]['model']; ?></span><br />
Удалить

Убираем model со страницы корзины

catalog/view/theme/ВАША ТЕМА/template/checkout/cart.tpl - найти (25-я строка и 47-ая в стандартном шаблоне)

<th align="left"><?php echo $column_model; ?></th>
<td align="left" valign="top"><?php echo $product['model']; ?></td>
Удалить

Убираем model со страницы подтверждения заказа

catalog/view/theme/ВАША ТЕМА/template/checkout/confirm.tpl - найти (44-я строка и 56-ая в стандартном шаблоне)

<th align="left"><?php echo $column_model; ?></th>
<td align="left" valign="top"><?php echo $product['model']; ?></td>
Удалить

Убираем model со страницы в истории заказов пользователя

catalog/view/theme/ВАША ТЕМА/template/account/invoice.tpl - найти (54-я строка и 66-ая в стандартном шаблоне)

<th align="left"><?php echo $text_model; ?></th>
<td align="left" valign="top"><?php echo $product['model']; ?></td>
Удалить

Убираем model с письма, которое приходит пользователю после заказа

catalog/view/theme/ВАША ТЕМА/template/mail/order_confirm.tpl - найти (60-я строка и 72-ая в стандартном шаблоне)

<th align="left" style="width: 15%; padding: 0.3em; color: #FFFFFF;"><?php echo $column_model; ?></th>
<td align="left"><?php echo $product['model']; ?></td>
Удалить

Возможно, еще где-то model придется удалить - я написал те места, о которых вспомнил

Чтобы сделать поле model не обязательным к заполнению

admin/controller/catalog/product.php - найти: (1119-я строка)

if ((strlen(utf8_decode($this->request->post['model'])) < 1) || (strlen(utf8_decode($this->request->post['model'])) > 64)) {
      		$this->error['model'] = $this->language->get('error_model');
    	}
Заменить на
if (strlen(utf8_decode($this->request->post['model']) > 64) {
      		$this->error['model'] = $this->language->get('error_model');
    	}
Но тогда, если model вы не заполните, то и выводится на страницы товара и категории будет пусто значение. Придется или вводить условие на вывод или убирать вывод. Короче, проще удалить поле совсем :)
  • +1 4

Share this post


Link to post
Share on other sites

Возможно, еще где-то model придется удалить - я написал те места, о которых вспомнил

Ещё тут:

catalog/view/theme/ваша_тема/template/common/success.tpl

Share this post


Link to post
Share on other sites

или просто в карточке товара сделать

style="display:none;"
у модели.

Чтоб не сильно заморачиваться ;)

UPD: ну да, и в админовском контроллере убрать в валидации проверку поля. Чтоб совсем не заморачиваться.

Share this post


Link to post
Share on other sites

Ещё тут:

catalog/view/theme/ваша_тема/template/common/success.tpl

Не нашёл в стандартной теме упоминания про модель в этом файле.

Сделал всё, как описано в 4 посте, но всё равно в описании продукта была "модель":

http://dettovary.ru/index.php?route=product/product&product_id=49

Убрал ещё строки 32,33 и 175 в файле ...тема\template\product\product.php

Осталась опция в расширенном поиске "Поиск по модели". Где бы убрать?

Share this post


Link to post
Share on other sites

А как убрать с yml model?

вот yml

<?php
class ControllerExportYml extends Controller {
	public function index() {
		if ($this->config->get('yandex_market_status')) {
			$eof = "n";
			$output  = '<?xml version="1.0" encoding="utf-8" ?>' . $eof;
			$output .= '<!DOCTYPE yml_catalog SYSTEM "shops.dtd">' . $eof;
			$output .= '<yml_catalog date="' . date("Y-m-d H:i") . '">' . $eof;
			$output .= '<shop>' . $eof;
			$output .= '<name>' . $this->textPrepare($this->config->get('config_name')) . '</name>' . $eof;
			$output .= '<company>' . $this->textPrepare($this->config->get('yandex_market_company')) . '</company>' . $eof;
			$output .= '<url>' . HTTP_SERVER . '</url>' . $eof;
			$output .= '<phone>' . $this->textPrepare($this->config->get('config_telephone')) . '</phone>' . $eof;

			// Перечесляем валюты магазина
			// TODO: Добавить возможность настраивать проценты.
			$offers_currency = $this->config->get('yandex_market_currency');

			if (! $this->currency->has($offers_currency)) exit();

			$shop_currency = $this->config->get('config_currency');

			$output .= '<currencies>' . $eof;
			$output .= '<currency id="' . $offers_currency . '" rate="1"/>' . $eof;

			$this->load->model('localisation/currency');
			$supported_currencies = array_flip(array('RUR', 'RUB', 'USD', 'BYR', 'KZT', 'EUR', 'UAH'));
			$currencies = array_intersect_key($this->model_localisation_currency->getCurrencies(), $supported_currencies);
			foreach ($currencies as $currency) {
				if ($currency['code'] != $offers_currency && $currency['status'] == 1) {
					$output .= '<currency id="' . $currency['code'] . '" rate="' . number_format($this->currency->convert($currency['value'], $offers_currency, $shop_currency), 4, '.', '') . '"/>' . $eof;
				}
			}
			$output .= '</currencies>' . $eof;

			// Категории товаров
			$this->load->model('catalog/category');
			$output .= '<categories>' . $eof;
			$output .= $this->getCat();
			$output .= '</categories>' . $eof;

			$this->load->model('tool/seo_url');

			// Товарные позиции
			$this->load->model('catalog/product');
			$this->load->model('tool/image');
			$output .= '<offers>' . $eof;

			$products = $this->model_catalog_product->getProducts();
			foreach ($products as $product) {
				$output .= '<offer id="' . $product['product_id'] . '" available="true">' . $eof;
				$output .= '<url>' . $this->textPrepare($this->model_tool_seo_url->rewrite(HTTP_SERVER . 'index.php?route=product/product&product_id=' . $product['product_id'])) . '</url>' . $eof;
				$output .= '<price>' . number_format($this->currency->convert($this->tax->calculate($product['price'], $product['tax_class_id']), $shop_currency, $offers_currency), 2, '.', '') . '</price>' . $eof;
				$output .= '<currencyId>' . $offers_currency . '</currencyId>' . $eof;

				// Определяем категорию для товара
				$categories = $this->model_catalog_product->getCategories($product['product_id']);
				$output .= '<categoryId>' . $categories[0]['category_id'] . '</categoryId>' . $eof;

				// Определеяме изображение
				if ($product['image']) {
					$output .= '<picture>' . $this->model_tool_image->resize($product['image'], 500, 500) . '</picture>' . $eof;
				} else {
					$output .= '<picture>' . $this->model_tool_image->resize('no_image.jpg', 500, 500) . '</picture>' . $eof;
				}

				$output .= '<delivery> true </delivery>' . $eof;
				$output .= '<local_delivery_cost>300</local_delivery_cost>' . $eof;
				$output .= '<name>' . $this->textPrepare($product['name']) . '</name>' . $eof;
//				$output .= '<typePrefix>  </typePrefix>' . $eof;
//				$output .= '<vendorCode>  </vendorCode>' . $eof;
				$output .= '<model>' . $this->textPrepare($product['model']) . '</model>' . $eof;
				$output .= '<description>' . $this->textPrepare($product['description']) . '</description>' . $eof;
				$output .= '<manufacturer_warranty>true</manufacturer_warranty>' . $eof;
				$output .= '<country_of_origin>' . $this->textPrepare($product['sku']) . '</country_of_origin>' . $eof;
				$output .= '</offer>' . $eof;
			}

			$output .= '</offers>' . $eof;
			$output .= '</shop>' . $eof;
			$output .= '</yml_catalog>';
			$this->response->addHeader('Content-Type: application/xml');
			$this->response->setOutput($output);
		}
	}

	// Возвращает массив категорий
	protected function getCat($parent_id = 0) {
		$categories = $this->model_catalog_category->getCategories($parent_id);
		$out = '';

		foreach ($categories as $category) {
			$out .= '<category id="' . $category['category_id'] . '"';
			if($parent_id != 0) $out .= ' parentId="' . $parent_id . '"';
			$out .= '>' . $this->textPrepare($category['name']) . "</category>n";
			if($e =  $this->getCat($category['category_id'])) $out .= $e;
		}
		return $out;
	}

	/**
	 * Подготовка текста в соответствии с требованиями Яндекса
	 * Запрещены любые html-тэги. Стандарт XML не допускает использования в текстовых данных
	 * непечатаемых символов с ASCII-кодами в диапазоне значений от 0 до 31 (за исключением
	 * символов с кодами 9, 10, 13 - табуляция, перевод строки, возврат каретки). Также этот
	 * стандарт требует обязательной замены некоторых символов на эквивалентные им символьные
	 * примитивы.
	 * @param string $text
	 * @return string
	 */
	protected function textPrepare($text) {
		$text = htmlspecialchars_decode(trim($text));
		$text = strip_tags($text);
		$search = array('"', '&', '>', '<', ''');
		$replace = array('"', '&', '>', '<', ''');
		$text = str_replace($search, $replace, $text);
		$text = preg_replace('![x00-x08x0B-x0Cx0E-x1F]+!is', ' ', $text);
		$text = preg_replace('!s+!', ' ', $text);

		return trim($text);
	}
}
?>
Edited by AlexFisher
code, spoiler

Share this post


Link to post
Share on other sites

А я поле модель убрал и вместо него сделал сортировку товаров в админке по категориям

Share this post


Link to post
Share on other sites

"UPD: ну да, и в админовском контроллере убрать в валидации проверку поля. Чтоб совсем не заморачиваться. "

Знающие люди, подскажите, пожалуйста, чайнику, где в админовском контроллере убрать в валидации проверку поля, отвечающего за модель? версия 1.5.3.1.

Share this post


Link to post
Share on other sites

"UPD: ну да, и в админовском контроллере убрать в валидации проверку поля. Чтоб совсем не заморачиваться. "

Знающие люди, подскажите, пожалуйста, чайнику, где в админовском контроллере убрать в валидации проверку поля, отвечающего за модель? версия 1.5.3.1.

если просто это поле сделать необязательным в админке то:

В файле по адресу /admin/controller/catalog/product.php найти строку вида:

private function validateForm() {
		if (!$this->user->hasPermission('modify', 'catalog/product')) {
				$this->error['warning'] = $this->language->get('error_permission');
		}
		foreach ($this->request->post['product_description'] as $language_id => $value) {
				if ((utf8_strlen($value['name']) < 1) || (utf8_strlen($value['name']) > 255)) {
						$this->error['name'][$language_id] = $this->language->get('error_name');
				}
		}
			  
		if ((utf8_strlen($this->request->post['model']) < 1) || (utf8_strlen($this->request->post['model']) > 64)) {
				$this->error['model'] = $this->language->get('error_model');
		}
			  
				if ($this->error && !isset($this->error['warning'])) {
						$this->error['warning'] = $this->language->get('error_warning');
				}

и заменить на:

private function validateForm() {
		if (!$this->user->hasPermission('modify', 'catalog/product')) {
				$this->error['warning'] = $this->language->get('error_permission');
		}
		foreach ($this->request->post['product_description'] as $language_id => $value) {
				if ((utf8_strlen($value['name']) < 1) || (utf8_strlen($value['name']) > 255)) {
						$this->error['name'][$language_id] = $this->language->get('error_name');
				}
		}
			  
		/*if ((utf8_strlen($this->request->post['model']) < 1) || (utf8_strlen($this->request->post['model']) > 64)) {
				$this->error['model'] = $this->language->get('error_model');
		}*/
			  
				if ($this->error && !isset($this->error['warning'])) {
						$this->error['warning'] = $this->language->get('error_warning');
				}
А если убрать вообще чтобы слово модель не отображалось то:

Итак, для Version 1.5.3.1 что б убрать обязательную валидацию в админке, нужно открыть файл по адресу: (спасибо говорим автору этого совета Baco)

admincontrollercatalogproduct.php

найти код:

private function validateForm() {
		if (!$this->user->hasPermission('modify', 'catalog/product')) {
				$this->error['warning'] = $this->language->get('error_permission');
		}
		foreach ($this->request->post['product_description'] as $language_id => $value) {
				if ((utf8_strlen($value['name']) < 1) || (utf8_strlen($value['name']) > 255)) {
						$this->error['name'][$language_id] = $this->language->get('error_name');
				}
		}
			  
		if ((utf8_strlen($this->request->post['model']) < 1) || (utf8_strlen($this->request->post['model']) > 64)) {
				$this->error['model'] = $this->language->get('error_model');
		}
			  
				if ($this->error && !isset($this->error['warning'])) {
						$this->error['warning'] = $this->language->get('error_warning');
				}
									  
		if (!$this->error) {
						return true;
		} else {
				return false;
		}
		}

и заменить на:

private function validateForm() {
		if (!$this->user->hasPermission('modify', 'catalog/product')) {
				$this->error['warning'] = $this->language->get('error_permission');
		}
		foreach ($this->request->post['product_description'] as $language_id => $value) {
				if ((utf8_strlen($value['name']) < 1) || (utf8_strlen($value['name']) > 255)) {
						$this->error['name'][$language_id] = $this->language->get('error_name');
				}
		}
			  
		/*if ((utf8_strlen($this->request->post['model']) < 1) || (utf8_strlen($this->request->post['model']) > 64)) {
				$this->error['model'] = $this->language->get('error_model');
		}*/
			  
				if ($this->error && !isset($this->error['warning'])) {
						$this->error['warning'] = $this->language->get('error_warning');
				}
									  
		if (!$this->error) {
						return true;
		} else {
				return false;
		}
		}

Share this post


Link to post
Share on other sites

Marianna

Во втором случаи тоже самое что ив первом, просто становится не обязательным, но не пропадает из описания товара! Как убрать из описания???

Share this post


Link to post
Share on other sites

научите еще, как убрать модель из фильтра/сортировки в категории?

Share this post


Link to post
Share on other sites

Marianna

Во втором случаи тоже самое что ив первом, просто становится не обязательным, но не пропадает из описания товара! Как убрать из описания???

в файле вашатемаtemplateproductproduct.tpl удалить строчки со словом "model"

в этой же папке в других файлах тоже можно грохнуть строки со словом "model"

только в сортировке не могу убрать(

Share this post


Link to post
Share on other sites

Блин, в корзине убрал вывод модели, все сместилось, не могу поправить.

Изображение

добавляю новые колонки, все наперекосяк идет(((

Вечно гемор у меня с таблицами.

Share this post


Link to post
Share on other sites

А я просто поменял "Модель" на "Название". Редактируется там же в файле "\catalog\view\theme\default\template\product\product.tpl".

На 29 строчке вместо

<span><?php echo $text_model; ?></span> <?php echo $model; ?><br />

написал

<span><?php echo 'Название:'; ?></span> <?php echo $model; ?><br />

Так намного проще) Да и лишний раз повторение названия хуже не будет - особенно для продвижения.

Я еще поменял местами производителя и получившееся поле "Название" (в том же файле).

И не забудьте перекодировать в UTF-8 без bom (ну у меня покрайней мере все в уникоде, не знаю как должно быть по стандарту)

Share this post


Link to post
Share on other sites

Помогите! У меня opencart 1.5.4.1 русской сборки, это поле "Модель" уже вес мозг проело, в интернете по этой теме инфы практически не найти, а то что здесь написано, не помогает, выдает ошибку (

Share this post


Link to post
Share on other sites

Помогите! У меня opencart русской сборки, это поле "Модель" уже вес мозг проело, в интернете по этой теме инфы практически не найти, а то что здесь написано, не помогает, выдает ошибку (

Привет. Я у себя 1.5.4.1 скрывал с помощью

style="display:none;"

. Везде где оно отображается пользователю и все.

Блин, в корзине убрал вывод модели, все сместилось, не могу поправить.

55555.jpg

добавляю новые колонки, все наперекосяк идет(((

Вечно гемор у меня с таблицами.

Попробуй добавить стиль <td class="model"></td> в \catalog\view\theme\default\template\checkout\cart.tpl

пример моей корзины


	  <tr>
		<td class="image"></td>
		<td class="name"><?php echo $vouchers['description']; ?></td>
		<td class="model"></td>
		<td class="quantity"><input type="text" name="" value="1" size="1" disabled="disabled" />
		   <a href="<?php echo $vouchers['remove']; ?>"><img src="catalog/view/theme/default/image/remove.png" alt="<?php echo $button_remove; ?>" title="<?php echo $button_remove; ?>" /></a></td>
		<td class="price"><?php echo $vouchers['amount']; ?></td>
		<td class="total"><?php echo $vouchers['amount']; ?></td>
	  </tr>

Share this post


Link to post
Share on other sites

Разобрался?

Share this post


Link to post
Share on other sites

Я абсолютный новичок, у меня тоже версия 1.5.4.1, и тоже надо убрать строку модель, если не трудно напишите подробней как это сделать

Share this post


Link to post
Share on other sites

Я абсолютный новичок, у меня тоже версия 1.5.4.1, и тоже надо убрать строку модель, если не трудно напишите подробней как это сделать

Я сделал так:

В файле: admin/controller/catalog/product.php (строка 881 по 883) найди:

if ((strlen(utf8_decode($this->request->post['model'])) < 3) || (strlen(utf8_decode($this->request->post['model'])) > 24)) {
  $this->error['model'] = $this->language->get('error_model');
}

закомментировать

потом, admin/view/template/catalog/product_form.tpl (строка 38 по 42)

   <td><input type="text" name="model" value="<?php echo $model; ?>" />
  <br />
  <?php if ($error_model) { ?>
  <span class="error"><?php echo $error_model; ?></span>
  <?php } ?></td>

заменить на

<td><input type="text" name="model" value="<?php echo $model; ?>" /></td>

после чего, catalog/view/theme/Ваша_тема/template/product/product.tp удалить код (линия 25 по 28)

<tr>
 <td><b><?php echo $text_model; ?></b></td>
 <td><?php echo $model; ?></td>
</tr>

Можно еще поискать и закомментировать следующею строку

<span style="color: #999; font-size: 11px;"><?php echo $products[$j]['model']; ?></span><br />

в файлах

catalog/view/theme/Ваша_тема/template/common/home.tpl

catalog/view/theme/Ваша_тема/template/product/category.tpl

catalog/view/theme/Ваша_тема/template/product/manufacturer.tpl

catalog/view/theme/Ваша_тема/template/product/search.tpl

catalog/view/theme/Ваша_тема/template/product/special.tpl

Но перед изменением или удалением, лучше сделать бэкап всех файлов, на всякий случай.

  • +1 1

Share this post


Link to post
Share on other sites

Подскажите новичку: в чем вообще смысл поля модель и за что оно отвечает? тоесть как его можно использовать и в каком случае оно может пригодиться? Это артикул или разновидность товара? В чем отличие от поля "название"?

Share this post


Link to post
Share on other sites

а как сделать чтобы модель товара была равна его id?

Share this post


Link to post
Share on other sites

а как сделать чтобы модель товара была равна его id?

 

Хорошая идея. Кто подскажет изящное решение?

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.