Podczas wprowadzania lub edycji produktu możemy określić cechę „Stan” produtku.

Domyślnie jest ona wyświetlana na karcie produktu w tym miejscu:

Natomiast w Adminie określa się ją tutaj:

Wartości do wyboru dla tej cechy to:

  • Nowy
  • Używane
  • Odnowione

Niestety nie możemy modyfikować tego elementu. W sensie dodawać tam dodatkowych wartości. Np. „Na zamówienie” albo innego.

Poniżej instrukcja jak to zrobić. Wykonamy to na przykładzie wartości „Na zamówienie„.

Połączenie i kopia bazy danych

Na początek nawiązujemy połączenie z bazą danych. Jak uzyskać parametry policzenia i zalogować się do PhpMyAdmin – opisaliśmy w innym naszym artykule.

Przed manipulowaniem w SQL warto także zrobić kopię bezpieczeństwa. Jak to wykonać opisane jest m.in. tutaj.

Modyfikacja bazy danych

Możliwe wartości są zdeklarowane w bazie danych. Co ciekawe nie w osobnej tabeli, a w kolumnie tabeli ps_product.

Musimy ją zmodyfikować.

Nową wartością którą tutaj dodamy będzie onorderonly:


ALTER TABLE `ps_product_shop` CHANGE `condition` `condition` ENUM( 'new', 'used', 'refurbished', 'onorderonly' ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'new';
ALTER TABLE `ps_product` CHANGE `condition` `condition` ENUM( 'new', 'used', 'refurbished', 'onorderonly' ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'new';

Modyfikacja kontrolera PHP

Otwieramy plik:


classes/Product.php

Znajdujemy linię (okolice 300 linii):


'condition' =>                    array('type' => self::TYPE_STRING, 'shop' => true, 'validate' => 'isGenericName', 'values' => array('new', 'used', 'refurbished'), 'default' => 'new'),

Zamieniamy ją na:


'condition' =>                    array('type' => self::TYPE_STRING, 'shop' => true, 'validate' => 'isGenericName', 'values' => array('new', 'used', 'refurbished', 'onorderonly'), 'default' => 'new'),

Zmiana szablonu karty produktu

Otwieramy plik:


themes/{NAZWA-NASZEGO-SZABLONU}/product.tpl

W okolicach linii 170 znajdujemy kod:


{capture name=condition}
{if $product->condition == 'new'}
{l s='New'}
{elseif $product->condition == 'used'}
{l s='Used'}
{elseif $product->condition == 'refurbished'}
{l s='Refurbished'}
{/if}
{/capture}

Dodajemy kolejną wartość w tych warunkach Smarty:


{capture name=condition}
{if $product->condition == 'new'}
{l s='New'}
{elseif $product->condition == 'used'}
{l s='Used'}
{elseif $product->condition == 'refurbished'}
{l s='Refurbished'}
{elseif $product->condition == 'onorderonly'}
{l s='On order only'}
{/if}
{/capture}

Modyfikacja formularza w adminie

Finalnie musimy umożliwić deklarowanie takiej wartości podczas edycji / dodawania produktu.

Edytujemy plik (folder admin zastępujemy nazwą folderu naszego admina):


admin/themes/default/template/controllers/products/informations.tpl

W okolicach linii 317 zmieniamy kod:


<select name="condition" id="condition">
<option value="new" {if $product->condition == 'new'}selected="selected"{/if} >{l s='New'}</option>
<option value="used" {if $product->condition == 'used'}selected="selected"{/if} >{l s='Used'}</option>
<option value="refurbished" {if $product->condition == 'refurbished'}selected="selected"{/if}>{l s='Refurbished'}</option>
</select>

na:


<select name="condition" id="condition">
<option value="new" {if $product->condition == 'new'}selected="selected"{/if} >{l s='New'}</option>
<option value="used" {if $product->condition == 'used'}selected="selected"{/if} >{l s='Used'}</option>
<option value="refurbished" {if $product->condition == 'refurbished'}selected="selected"{/if}>{l s='Refurbished'}</option>
<option value="onorderonly" {if $product->condition == 'onorderonly'}selected="selected"{/if}>{l s='On order only'}</option>
</select>

Tłumaczenia

W zasadzie mechanizm juz działa. Aby dokończyć modyfikację należy jeszcze przetłumaczyć angielskie nazwy użyte w wartościach nowego stanu. Wykonujemy to w dziale:

Lokalizacja » Tłumaczenia » Modyfikuj Tłumaczenia » Tłumaczenie stron sklepu » Wybrać szablon » Wybrać język

Share This:

Zostaw komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *