MarcinPaul.pl

Kategoria Magento

Szybka, prosta metoda na włącznie podpowiedzi bloków oraz szablonów w panelu administracyjnym Magento, bez dodawanie jakichkolwiek dodatkowych wpisów do bazy.

Wystarczy dodać kilka linijek kodu do pliku config.xml w katalogu app/etc/ np. przez zamykającym znacznikiem </config>

<stores>
    <admin>
        <dev>
            <debug>
                <template_hints>1</template_hints>
                <template_hints_blocks>1</template_hints_blocks>
            </debug>
        </dev>
    </admin>
</stores>

·

Aby szybko i beż grzebanie w plikach corowych Magento usunąć niepotrzebne metody sortowania produktów (np. position, relevance) wystarczy edytować plik szablonu toolbar.phtml w katalogu app/design/frontend/…/…/template/catalog/product/list/ dopisując odpowiedni kod w polu select sort-by:

$this->removeOrderFromAvailableOrders('position');
$this->removeOrderFromAvailableOrders('relevance');

Całość może wyglądać tak:

<select onchange="setLocation(this.value)">
 <?php $this->removeOrderFromAvailableOrders('position'); ?>
 <?php $this->removeOrderFromAvailableOrders('relevance'); ?>
 <?php foreach($this->getAvailableOrders() as $_key=>$_order): ?>
 <option value="<?php echo $this->getOrderUrl($_key, 'asc') ?>"<?php if($this->isOrderCurrent($_key)): ?> selected="selected"<?php endif; ?>>
 <?php echo $this->__($_order) ?>
 </option>
 <?php endforeach; ?>
</select>

W podobny sposób możemy usunąć każdy inny atrubut.

· ·

Powyższy błąd najczęściej pojawia się po upgrade Magento do nowszej wersji.

Zazwyczaj blokuje on edycje klienta oraz składanie zamówień w panelu administracyjnym.

Związane jest to z błędnym modelem źródłowym zapisanym w bazie w tabeli eav_attribute dla atrybutu country_id.

Rozwiązanie jest proste, wystarczy najlepiej z poziomy dowolnego pliku PHTML szablonu wykonać poniższy kawałek kodu PHP, który zmieni w/w model na poprawny dla nowszej wersji Magento.

$connection = Mage::getSingleton('core/resource')->getConnection('core_write');
$connection->beginTransaction();
$fields = array();
$fields['source_model'] = 'customer/entity_address_attribute_source_country';
$where = $connection->quoteInto('source_model like ?', 'customer_entity/address_attribute_source_country');
$connection->update('eav_attribute', $fields, $where);
$connection->commit();

·

Często istnieje potrzeba dynamicznego pobierania informacji o sklepie (np. nazwa, tytuł, telefon, adres, e-mail), jego konfiguracji (np. ilość produktów na siatce/liście, od jakiej kwoty dostępna jest darmowa dostawa, ) w szablonach lub stronach/blokach CMS. Szczególnie przydaje się to gdy na jednej instalacji Magento mamy postawionych kilka sklepów.

Można to wykonać w bardzo prosty sposób.

echo Mage::getStoreConfig('sectionName/groupName/fieldName');

sectionNamegroupName oraz fieldName są zawarte w pliku etc/system.xml swojego modułu. Nazwę danego pola możemy sprawdzić prosto za FireBug’a.

Dla przykładu chcemy pobrać nazwę sklepu. Znajduje się ona w System -> Configuration -> General -> Store Information –> Store Name i kod za pomocą którego ją pobierzemy będzie wyglądał tak:

echo Mage::getStoreConfig('general/store_information/name');

Drugi przykład, pobieramy adres e-mail, na który będą wysyłane wiadomości z formularza kontaktowego. Znajduje się on w System -> Configuration -> Contacts -> Email –> Send Emails To i kod jakim go pobierzemy będzie wyglądał tak:

echo Mage::getStoreConfig('contacts/email/recipient_email');

Podobnie można pobrać każda inną informację.

Kilka przykładów:

echo Mage::getStoreConfig('general/store_information/name');
//nazwa sklepu
echo Mage::getStoreConfig('design/head/default_title');
//domyslny tytuł
echo Mage::getStoreConfig('catalog/frontend/grid_per_page');
//produktów na siatce na stronę
echo Mage::getStoreConfig('carriers/freeshipping/free_shipping_subtotal');
//darmowa dostawa od jakiej kwoty
echo Mage::getStoreConfig('contacts/email/recipient_email');
//adres e-mail, na który będą wysyłanie wiadomosci z formularza kontaktowego
echo Mage::getStoreConfig('general/store_information/phone');
//nr telefonu sklepu
echo Mage::getStoreConfig('general/store_information/address');
//adres sklepu
echo Mage::getStoreConfig('trans_email/ident_general/name');
echo Mage::getStoreConfig('trans_email/ident_general/email');
//nazwa nadawcy oraz e-mail dla ogólnego kontaktu
echo Mage::getStoreConfig('trans_email/ident_sales/name');
echo Mage::getStoreConfig('trans_email/ident_sales/email');
//nazwa nadawcy oraz e-mail dla przedstawiciela handlowego
echo Mage::getStoreConfig('trans_email/ident_support/name');
echo Mage::getStoreConfig('trans_email/ident_support/email');
//nazwa nadawcy oraz e-mail dla wsparcia klienta
echo Mage::getStoreConfig('trans_email/ident_custom1/name');
echo Mage::getStoreConfig('trans_email/ident_custom1/email');
//nazwa nadawcy oraz e-mail dla custom kontakt 1
echo Mage::getStoreConfig('trans_email/ident_custom2/name');
echo Mage::getStoreConfig('trans_email/ident_custom2/email');
//nazwa nadawcy oraz e-mail dla custom kontakt 2

W bardzo podobny i prosty sposób można tych wszystkich informacji używać w blokach oraz stronach CMS. Kod powinien wyglądać mniej więcej tak:

{{config path="general/store_information/name"}}
{{config path="design/head/default_title"}}
{{config path="catalog/frontend/grid_per_page"}}
{{config path="carriers/freeshipping/free_shipping_subtotal"}}
{{config path="contacts/email/recipient_email"}}
{{config path="general/store_information/phone"}}
{{config path="general/store_information/address"}}
{{config path="trans_email/ident_general/name"}}
{{config path="trans_email/ident_general/email"}}
{{config path="trans_email/ident_sales/name"}}
{{config path="trans_email/ident_sales/email"}}
{{config path="trans_email/ident_support/name"}}
{{config path="trans_email/ident_support/email"}}
{{config path="trans_email/ident_custom1/name"}}
{{config path="trans_email/ident_custom1/email"}}
{{config path="trans_email/ident_custom2/name"}}
{{config path="trans_email/ident_custom2/email"}}

· ·

Dodawanie walidacji JavaScript do formularzy jest bardzo proste. Trzeba utworzyć obiekt FORM do reprezentowania formularza:

<script type="text/javascript">
//< ![CDATA[
 var myForm= new VarienForm('formId', true);
//]]>
</script>

Pierwszy parametr to identyfikator (ID) formularza. Drugi ustawiony na TRUE powoduje automatyczne ustawienie kursora w pierwszym polu formularza. Ustawiony na FALSE nie ustawia kursowa.

Następnie tworzymy formularz z odpowiednimi regułami sprawdzającymi poprawność danych pól.

<label for="name">URL Address *</label>
<input type="text" id="url" name="url" value="" class="required-entry validate-url"/>
<label for="email">Email Address *</label>
<input type="text" id="email" name="email" value="" class="required-entry validate-email"/>

Istnieje cała masa gotowych klas, które wystarczy przypisać do odpowiednich pól formularza.

validate-select
Wybierz opcję

required-entry
To pole jest wymagane

validate-number
Proszę podać prawidłowy numer

validate-digits
Proszę używać tylko cyfr. Należy unikać spacji lub innych znaków, takich jak kropki lub przecinki

validate-alpha
Tylko litery (a-z lub A-Z).

validate-code
Tylko litery (a-z), cyfry (0-9) lub znak podkreślenia (_), pierwszy znak powinien być literą.

validate-alphanum
Tylko litery (a-z lub A-Z) lub cyfry (0-9). Spacje i inne znaki są niedozwolone

validate-street
Tylko litery (a-z lub A-Z) lub cyfry (0-9) lub spacje i #.

validate-phoneStrict
Proszę podać prawidłowy nr telefonu. Np. (123) 456-7890 lub 123-456-7890.

validate-phoneLax
Proszę podać prawidłowy nr telefonu. Np. (123) 456-7890 lub 123-456-7890.

validate-fax
Proszę podać prawidłowy nr faxu. Np. (123) 456-7890 lub 123-456-7890.

validate-date
Proszę podać prawidłową datę

validate-email
Proszę podać prawidłowy adres e-mail. Np. johndoe@domain.com.

validate-emailSender
Tylko litery (a-z lub A-Z), cyfry (0-9) , znak podkreślenia (_) lub spacje.

validate-password
Proszę wpisać 6 lub więcej znaków. Wiodące lub końcowe spacje są ignorowane.

validate-admin-password
Proszę podać 7 lub więcej znaków. Hasło powinno zawierać znaki numeryczne i alfabetyczne

validate-cpassword
Proszę upewnić się, że hasła są poprawne

validate-url
Prawidłowy adres URL. http:// jest wymagany

validate-clean-url
Proszę podać prawidłowy adres URL. Np. http://www.example.com lub www.example.com

validate-identifier
Proszę podać poprawny identyfikator. Np. example-page, example-page.html lub anotherlevel/example-page

validate-xml-identifier
Wpisz poprawny identyfikator XML. Np. something_1, block5, id-4

validate-ssn
Proszę podać poprawny numer ubezpieczenia społecznego. Na przykład 123-45-6789

validate-zip
Proszę podać kod pocztowy. Np. 90602 lub ​​90602-1234

validate-zip-international
Proszę podać prawidłowy kod pocztowy

validate-date-au
Proszę użyć tego formatu daty: dd / mm / rrrr. Np. 17/03/2006 dla 17 marca 2006

validate-currency-dollar
Proszę podać prawidłową kwotę $. Np. $100,00

validate-one-required
Proszę wybrać jedną z powyższych opcji.

validate-one-required-by-name
Proszę wybrać jedną z opcji.

validate-not-negative-number
Proszę podać poprawny numer

validate-state
Proszę wybrać State/Province

validate-new-password
Proszę wpisać 6 lub więcej znaków. Wiodące lub końcowe spacje są ignorowane

validate-greater-than-zero
Proszę podać cyfrę większą od 0

validate-zero-or-greater
Proszę podać cyfrę 0 lub większą

validate-cc-number
Proszę podać prawidłowy numer karty kredytowej.

validate-cc-type
Numer karty kredytowej nie zgadza się typ karty kredytowej

validate-cc-type-select
Typ karty nie zgadza się numer karty kredytowej

validate-cc-exp
Nieprawidłowa data ważności karty kredytowej

validate-cc-cvn
Proszę podać prawidłowy numer weryfikacyjny karty kredytowej.

validate-data
Tylko litery (a-z lub A-Z), cyfry (0-9) lub znak podkreślenia (_), pierwszy znak powinien być literą.

validate-css-length
Proszę podać prawidłową długość CSS. Np. 100px lub 77pt lub 20em lub .5ex lub 50%

validate-length
Maksymalna długość

· ·

Older posts >>