Jump to content

Работа напильником. Единицы измерения характеристик


Recommended Posts

Всем привет!

Обычно начинаю топики вопросами, но вот решил поделиться своим дилетантским опытом работы напильником при решении простой задачи.

Итак, при добавлении характеристик продукта (feature) возникает вопрос где же указывать единицу измерения характеристики. Если сделать это в наименовании характеристики, то на фронт-энде это выглядит некрасиво, если добавить это в значение фильтра, то это криво выглядит при фильтрации по характеристикам.

Для себя решил, что было бы удобно наименование характеристики хранить отдельно и отображать следом за значением характеристики.

Берем в руки напильник и приступаем.

В базе данных ищем таблицу ps_feature_lang (префикс ps_ может быть и другим, если при инсталляции Вы это указали) и добавляем колонку ext_unit

ALTER TABLE `ps_feature_lang` ADD COLUMN `ext_unit` VARCHAR(16) NULL DEFAULT NULL  AFTER `name` ;

Далее открываем файл themes\default\product.tpl и немного меняем формат вывода.

Исходный код:

<!-- product's features -->
<ul id="idTab2" class="bullet">
{foreach from=$features item=feature}
{if isset($feature.value)}
<li><span>{$feature.name|escape:'htmlall':'UTF-8'}</span> {$feature.value|escape:'htmlall':'UTF-8'}</li>
{/if}
{/foreach}
</ul>

 

Меняем на:

<!-- product's features -->
<ul id="idTab2" class="bullet">
{foreach from=$features item=feature}
{if isset($feature.value)}
<li><span>{$feature.name|escape:'htmlall':'UTF-8'}</span> {$feature.value|escape:'htmlall':'UTF-8'} {$feature.value_unit|escape:'htmlall':'UTF-8'}</li>
{/if}
{/foreach}
</ul>

 

По сути в шаблон мы добавили вывод еще одного поля $feature.value_unit

 

Для того, что бы значение этого поля передалось в шаблон необходимо внести небольшие изменения в файл classes\product.php

В этом файле есть две функции cacheFrontFeatures и getFrontFeaturesStatic.

В каждой из них меняем строку

SELECT id_product, name, value, pf.id_feature

на

SELECT id_product, name, value, ext_unit value_unit, pf.id_feature

 

Фактически мы передаем в шаблон значение нашего нового атрибута.

 

Собственно все работает.

Но!

1. Вносить изменения пока можно только через редактирование таблицы. Как Вы заметили в админке я не вносил изменения. В моей ситуации создание и редактирование характеристик процедура редкая и я решил не тратить на это время. Возможно кто то решиться дописать процедуру допиливания админки.

2. Еще есть необходимость в доработке шаблона отображения сравнений и модуля фильтраций, но это уже сделать будет не сложно.

 

Не судите строго за такой подход, просто решил поделиться сегодняшним своим достижением B)

  • Like 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...