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„.
Zawartość artykułu
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