MarcinPaul.pl

Archiwum z miesiąca Marzec 2011

Istnieją dwa sposoby aby zmienić lub usunąć kolor białego tła, które wypełnia obszar obok zdjęcia produktu.

W pierwszym, aby zmienić kolor tła edytujemy plik app/code/core/Mage/Catalog/Model/Product/Image.php. Odnajdujemy linie (ok. 45 linia):

protected $_backgroundColor  = array(255, 255, 255);

i zamieniamy ósemkowy kolor biały na jakikolwiek inny (w zależności od stylu szablony lub własnego widzi mi się) np. na czarny:

protected $_backgroundColor  = array(000, 000, 000);

Jeśli chcemy usunąć tło konieczna jest zmiana w dwóch liniach kodu. Odnajdujemy linie (linia ok. 41 oraz 43):

protected $_keepFrame        = true;
protected $_constrainOnly    = false;

i zamieniamy je na:

protected $_keepFrame        = false;
protected $_constrainOnly    = true;

keepFrame(bool $flag) – obraz przyjmie rozmiary z funkcji resize(szerokość, wysokość), domyślna wartość true, stosujemy przed samą funkcją resize.
constrainOnly(bool $flag) – obraz nie będzie większy niż był, domyślna wartość false, stosujemy przed samą funkcją resize.
Funkcja resize w plikach frontend’u powinna wyglądać w ten sposób: ->resize(135,135). Dla zdjęć nie podajemy atrybutów width oraz height:

<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($_product->getName()) ?>"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(135,135) ?>" alt="<?php echo $this->htmlEscape($_product->getName()) ?>" /></a>

Rozwiązanie dobre, ale nieoptymalne. Dlaczego? Po pierwsze, edytujemy plik w Core Mageno i powinniśmy utworzyć jego kopię w app/code/local/Mage/Catalog/Model/Product/. Po drugie, rozwiązanie zostanie zastosowane dla wszystkich zdjęć produktów na wszystkich stronach i podstronach danego projektu, co w większości przypadków nie jest konieczne.

 

Stosując drugi sposób w ogóle nie ingerujemy w pliki Core Magento.

Dla przykładu, chcemy zmienić białe tło na czarne tylko dla widoku listy/siatki. Edytujemy plik app/design/frontend/base/default/template/catalog/product/list.phtml. Odnajdujemy linie (ok. 50 lina):

<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(135); ?>" width="135" height="135" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" /></a>

i zamieniamy ją na:

<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->backgroundColor(array(000,000,000))->resize(135); ?>" width="135" height="135" alt="<?php echo $this->stripTags($this->getImageLabel($_product, 'small_image'), null, true) ?>" /></a>

Zmiana polega na dodaniu przed funkcję resize() kodu:

->backgroundColor(array(000,000,000))

Aby usunąć tło, konieczne jest dodanie w plikach frontend’u przed funkcję resize() kodu:

->constrainOnly(TRUE)->keepFrame(FALSE)

Funkcja resize w plikach powinna wyglądać w ten sposób: ->resize(135,135). Dla zdjęć nie podajemy atrybutów width oraz height:

<a href="<?php echo $_product->getProductUrl() ?>" title="<?php echo $this->htmlEscape($this->getImageLabel($_product, 'small_image')) ?>" class="product-image"><img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->constrainOnly(TRUE)->keepFrame(FALSE)->resize(170, 170); ?>" alt="<?php echo $this->htmlEscape($this->getImageLabel($_product, 'small_image')) ?>" /></a>

Podając atrybuty width oraz height zdjęcie zostanie automatycznie doskalowane do podanych ich wartości.

Rozwiązanie testowane i działa na wersjach Magento: 1.3.x, 1.4.x oraz 1.5.x.

· ·

Mar/11

3

Porównywarka w TopLinks

Poniżej przedstawiam szybki i prosty sposób na umieszczenie w TopLink’sach odsyłacza do porównywarki produktów.
Otwieramy plik app/design/frontend/default/default/layout/catalog.xml i na samym początku sekcji default umieszczamy kod:

<reference name="top.links">
<action method="addLink" translate="label title"><label>Compare</label><url>catalog/product_compare/index/</url>
<title>Compare</title><prepare>true</prepare><urlParams/><position>100</position></action></reference>

W zależności na jakim miejscu ma się pojawić link musimy dobrać odpowiednią wartość w paragrafie position.

Rozwiązanie testowane i działa na wersjach Magento: 1.3.x, 1.4.x oraz 1.5.x.

·

Mar/11

3

Porównywarka Magento

Wykonując nowe projekty sklepów internetowych coraz częściej rezygnujemy z Popup’owej porównywarki produktów. Zastępujemy ją zwykłą porównywarka w ramach strony sklepu.
Jak to zrobić?
1. Otwieramy plik: app/design/frontend/default/default/layout/catalog.xml, odnajdujemy linię (ok. 170 linia):

<action method="setTemplate"><template>page/popup.phtml</template></action>

i zamieniamy ją na:

<action method="setTemplate"><template>page/1column.phtml</template></action>

Możemy oczywiście wybrać inny układ strony niż jednokolumnowy (dwukolumnowy z lewą belką, dwukolumnowy z prawą belką). Najczęściej będzie to jednak układ zaprezentowany powyżej.

2. Następnie musimy zmienić przycisk wywołujący popup z porównywanymi produktami na zwykły link. Przechodzimy do pliku: app/design/frontend/default/default/template/catalog/product/compare/sidebar.phtml, odnajdujemy linię (ok. 50 linia):

<button type="button" title="<?php echo $this->__('Compare') ?>" onclick="popWin('<?php echo $this->helper('catalog/product_compare')->getListUrl() ?>', 'compare', 'top:0, left:0, width=820, height=600, resizable=yes, scrollbars=yes')"><span><span><?php echo $this->__('Compare') ?></span></span></button>

i zamieniamy ją na:

<a title="<?php echo $this->__('Compare') ?>" href="<?php echo $this->helper('catalog/product_compare')->getListUrl() ?>"><?php echo $this->__('Compare') ?></a>

Ostatnią rzeczą jaką należy wykonać, to zmiana linkowania (m.in. do koszyk, do schowka) na stronie z porównywanymi produktami. Przechodzimy do pliku: app/design/frontend/default/default/template/catalog/product/compare/list.phtml i zmieniamy wszystkie linki:

onclick="setPLocation..."

na:

onclick="setLocation..."

 

Mając wybrane produkty do porównania i klikając na powyższy link przejdziemy na jednokolumnową stronę z porównywanymi produktami.
Cechy wg. których mają być porównywane produkty wybieramy w panelu administracyjnym w Zarządzaniu cechamiPorównywalne w sklepie -> Tak.

Rozwiązanie testowane i działa na wersjach Magento: 1.3.x, 1.4.x oraz 1.5.x.

· ·