Podmiana layout-u produktu

Wszelkie dyskusje odnośnie wyglądu Opencart. Pomoc przy szablonach (templates, themes) czy rozmieszczeniu grafiki.

Podmiana layout-u produktu

Postprzez paqu » 31 sty 2012, o 13:09

Witam,
Koledzy zastanawiam się czy jest możliwe podmienienie szablonu produktu dla konkretnych produktów. Tzn. chciałbym korzystać np z pliku product/product2 a nie product/product. Dorzuciłem kontroler product2.php i tam ustawiłem aby korzystał z pliku product/product2.tpl jednak po kliknięciu w produkt w adresie url wyskakuje route=product/product , jak zmienię z palaca na route=product/product2 to jest ok. Czy jest jakaś możliwość aby z panelu admina tak ustawiać sobie z jakiego templata ma korzystać produkt. Dodam że zmiany w zakłądce "wygląd" nic nie dają.
paqu
 
Posty: 1
Dołączył(a): 31 sty 2012, o 13:03

Re: Podmiana layout-u produktu

Postprzez adikon.oc » 1 lut 2012, o 12:12

pisane z palca - nie testowane

poprzez phpmyadmin wykonaj na bazie sklepu zapytanie (nie zapomnij dodać prefix tabeli gdy masz taki ustawiony):
alter table `product` add column `szablon` varchar(30) NOT NULL

w catalog/controller/product/product.php zamień
Kod: Zaznacz cały
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/product.tpl')) {
    $this->template = $this->config->get('config_template') . '/template/product/product.tpl';
} else {
    $this->template = 'default/template/product/product.tpl';
}
na
Kod: Zaznacz cały
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/' . $product_info['szablon'])) {
    $this->template = $this->config->get('config_template') . '/template/product/' . $product_info['szablon'];
} elseif (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/product.tpl')) {
    $this->template = $this->config->get('config_template') . '/template/product/product.tpl';
} else {
    $this->template = 'default/template/product/product.tpl';
}


później w admin/view/template/catalog/product_form.tpl dodaj (tu poszedłem na łatwizne bo już nie chce mi się sprawdzać warunków ani mieszać w language) znajdz
Kod: Zaznacz cały
<div id="tab-data">
<table class="form">

i po tym dodaj
Kod: Zaznacz cały
<tr>
    <td>Szablon</td>
    <td><input type="text" name="szablon" value="<?php echo $szablon; ?>" />
    Wpisujesz tutaj nazwę szablony, z którego chcesz aby sklep skorzytał podczas wyświetlania tego produktu, np. product_2.tpl lub product_maszynka.tpl itp.<br />Maksymalna długość wpisu może zawierać 30 znaków!</td>
</tr>

nastepnie edytuj admin/controller/catalog/product.php i znajdz
Kod: Zaznacz cały
if (isset($this->request->post['model'])) {
    $this->data['model'] = $this->request->post['model'];
} elseif (!empty($product_info)) {
    $this->data['model'] = $product_info['model'];
} else {
    $this->data['model'] = '';
}
po tym dodaj
Kod: Zaznacz cały
if (isset($this->request->post['szablon'])) {
    $this->data['szablon'] = $this->request->post['szablon'];
} elseif (!empty($product_info)) {
    $this->data['szablon'] = $product_info['szablon'];
} else {
    $this->data['szablon'] = '';
}

edytuj admin/model/catalog/product.php i znajdz (okolice 4 linijki)
Kod: Zaznacz cały
$this->db->query("INSERT INTO " . DB_PREFIX . "product SET model = '" . $this->db->escape($data['model']) . "',

i zamień na
Kod: Zaznacz cały
$this->db->query("INSERT INTO " . DB_PREFIX . "product SET szablon = '" . $this->db->escape($data['szablon']) . "', model = '" . $this->db->escape($data['model']) . "',
oraz znajdz
Kod: Zaznacz cały
$this->db->query("UPDATE " . DB_PREFIX . "product SET model = '" . $this->db->escape($data['model']) . "',
i zamień na
Kod: Zaznacz cały
$this->db->query("UPDATE " . DB_PREFIX . "product SET szablon = '" . $this->db->escape($data['szablon']) . "', model = '" . $this->db->escape($data['model']) . "',

ważne by w catalog/view/theme/MOJ SZABLON/template/product/ potworzyć szablony produktów i póżniej jedną z nazw wpisać w panelu admina podczas edycji/dodawania produkty w pole "Szablon". Gdy zostawisz puste pole to system powienien skorzytać z domyślnego szablonu produktu.

pozdrawiam
adikon.oc
 
Posty: 603
Dołączył(a): 28 gru 2010, o 22:56


Powrót do Opencart Templates Pomoc przy szablonach

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości