Mail z potwierdzeniem: zawarcie kategorii, w kt?rej kupiono.

Miejsce na wszelkie dyskusje odnośnie problemów technicznych i ewentualnych pytań z rozbudowaniem systemu w plikach i skryptach Opencart, a które nie dotyczą instalacji.

Mail z potwierdzeniem: zawarcie kategorii, w której kupiono.

Postprzez Saiti » 16 lut 2013, o 13:19

Temat w skrócie.
W moim sklepie wiele produktów nie różni się nazwą - różnice wynikają zależnie od kategorii, z której jest on kupowany. Stwarza to problem z identyfikacją zamówienia odczytanego z maila. Mianowicie nie jest tam zawarte, z jakiej kategorii zakupiono produkt. Dodanie tej funkcji pozwoli mi zrobić duży krok do przodu. I pytanie: czy jest możliwość zawarcia nazwy kategorii, z której produkt kupiono? Produkt kupowany zawarty jest tylko w jednej kategorii (nie jest przypisany do wielu - tylko do jednej). Jaka formułka mogłaby tutaj pomóc, żeby ją wkleić do do szablonu maila?
Saiti
 
Posty: 10
Dołączył(a): 10 lut 2013, o 22:38

Re: Mail z potwierdzeniem: zawarcie kategorii, w której kupi

Postprzez schematx.pl » 16 lut 2013, o 20:06

Standardowo w systemie nie ma takiej funkcji która by wyświetlała taką informację i trzeba by taką funkcję napisać lub poszukać jakieś rozszerzenia.

hmmmm.... można się pokusić o dopisanie do pliku catalog/controller/product/product.php linijki
Kod: Zaznacz cały
$categories = $this->model_catalog_product->getCategories($product_id);

if ($categories)
   $categories_info = $this->model_catalog_category->getCategory($categories[0]['category_id']);

$this->data['category_title'] = $categories_info['name'];


zapisz. przejdź do pliku odpowiedzialnego za zawartość maila zamówienia: catalog/viwe/theme/TwójSzablon/template/mail/order.tpl i w linijce odpowiedzialnej za wyświetlanie produktów np:
Kod: Zaznacz cały
<?php foreach ($products as $product) { ?>
      <tr>
        <td style="font-size: 12px;   border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;"><?php echo $product['name']; ?>
          <?php foreach ($product['option'] as $option) { ?>
          <br />
          &nbsp;<small> - <?php echo $option['name']; ?>: <?php echo $option['value']; ?></small>
          <?php } ?></td>
        <td style="font-size: 12px;   border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;"><?php echo $product['model']; ?></td>
        <td style="font-size: 12px;   border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;"><?php echo $product['quantity']; ?></td>
        <td style="font-size: 12px;   border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;"><?php echo $product['price']; ?></td>
        <td style="font-size: 12px;   border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;"><?php echo $product['total']; ?></td>
      </tr>
      <?php } ?>


wstawić w odpowiednim miejscu <?php echo $category_title;?> np:
Kod: Zaznacz cały
<?php foreach ($products as $product) { ?>
      <tr>
        <td style="font-size: 12px;   border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;"><?php echo $product['name']; ?>
          <?php echo $category_title;?>
          <?php foreach ($product['option'] as $option) { ?>
          <br />
          &nbsp;<small> - <?php echo $option['name']; ?>: <?php echo $option['value']; ?></small>
          <?php } ?></td>
        <td style="font-size: 12px;   border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;"><?php echo $product['model']; ?></td>
        <td style="font-size: 12px;   border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;"><?php echo $product['quantity']; ?></td>
        <td style="font-size: 12px;   border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;"><?php echo $product['price']; ?></td>
        <td style="font-size: 12px;   border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: right; padding: 7px;"><?php echo $product['total']; ?></td>
      </tr>
      <?php } ?>


taki pomysł na szybko i nie sprawdzony, ale może zadziała.
schematx.pl
 
Posty: 300
Dołączył(a): 21 sty 2013, o 20:11

Re: Mail z potwierdzeniem: zawarcie kategorii, w której kupi

Postprzez Saiti » 17 lut 2013, o 23:26

W wyniku niestety otrzymuję taki zwrot:

Kod: Zaznacz cały
Fatal error: Call to a member function getCategories() on a non-object in /final/catalog/controller/product/product.php on line 43
Saiti
 
Posty: 10
Dołączył(a): 10 lut 2013, o 22:38

Re: Mail z potwierdzeniem: zawarcie kategorii, w której kupi

Postprzez schematx.pl » 18 lut 2013, o 00:28

hmmm aaa możesz jeszcze spróbowac kodem podanym poniżej bo są różne wersje OC i inaczej nazywają się operatory, aha i chyba zaponiałem o najważniejszym w pliku catalog/controller/product/product.php wklejasz kod:

Kod: Zaznacz cały
$categories = $this->model_catalog_product->getCategories($product_info['product_id']);
if ($categories){
$categories_info = $this->model_catalog_category->getCategory($categories[0]['category_id']);

$this->data['category_id'] = $categories_info['category_id']; }


pod linijką
Kod: Zaznacz cały
$product_info = $this->model_catalog_product->getProduct($product_id);


w moim przypadku linijka 94.

powinien wyglądać więc po modyfikacji mniej więcej tak:
Kod: Zaznacz cały
$this->load->model('catalog/product');

$product_info = $this->model_catalog_product->getProduct($product_id);
 
$categories = $this->model_catalog_product->getCategories($product_info['product_id']);
     if ($categories) {
          $categories_info = $this->model_catalog_category->getCategory($categories[0]['category_id']);
          $this->data['category_id'] = $categories_info['category_id'];
     }
     if ($product_info) {
     $url = '';
------------------------------- i reszta kodu ---------------------------


no i w tym przypadku do maila dodajesz:
Kod: Zaznacz cały
<?php echo $category_id ?>



------------------------------
tu masz odnośnik do podobnego tematu na oficjalnym forum OC
Kod: Zaznacz cały
http://forum.opencart.com/viewtopic.php?f=20&t=83788
schematx.pl
 
Posty: 300
Dołączył(a): 21 sty 2013, o 20:11

Re: Mail z potwierdzeniem: zawarcie kategorii, w której kupi

Postprzez Saiti » 18 lut 2013, o 14:22

Chyba jesteśmy bliżej niż dalej:

Kod: Zaznacz cały
Notice: Undefined variable: category_id in /final/catalog/view/theme/ModernStore/template/mail/order.tpl on line 77


Czyli nie wykrywa zmiennej category_id w moim rozumowaniu - da się z tym coś prostego jeszcze zrobić? Gdyby podało sam numer kategorii nawet - zadowalające w pełni. Cokolwiek :(
Saiti
 
Posty: 10
Dołączył(a): 10 lut 2013, o 22:38


Powrót do Pomoc techniczna przy Opencart

Kto przegląda forum

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

cron