ZenCart instalace našich zákazníků začaly hromadně rozesílat spam z kontaktního a registračního formuláře. Jsou sice k dispozici různá rozšíření Captcha, ale starší verze ZenCart už nepodporují nebo jsou zastaralé a spam roboti je překonávají.
Pokud chcete rozesílání spamu zabránit tak je pro ZenCart k dispozici modul Math CAPTCHA a to od verze 1.3.8a. K dispozici je na stránkách vývojáře ke stažení zdarma:
Výsledek pak může vypadat třeba takto:
Oprava rozšířeného vyhledávání – advanced search – 1054 Unknown column
Při zadání cenového rozmezí při rozšířeném hledání se objeví chyba:
1 2 3 4 5 6 7 8 9 |
1054 Unknown column 'p.products_tax_class_id' in 'on clause' in: [select count(distinct p.products_id) as total FROM products p LEFT JOIN manufacturers m USING(manufacturers_id), products_description pd, categories c, products_to_categories p2c LEFT JOIN meta_tags_products_description mtpd ON mtpd.products_id= p2c.products_id AND mtpd.language_id = 2 LEFT JOIN tax_rates tr ON p.products_tax_class_id = tr.tax_class_id LEFT JOIN zones_to_geo_zones gz ON tr.tax_zone_id = gz.geo_zone_id AND (gz.zone_country_id IS null OR gz.zone_country_id = 0 OR gz.zone_country_id = 56) AND (gz.zone_id IS null OR gz.zone_id = 0 OR gz.zone_id = 191) WHERE (p.products_status = 1 AND p.products_id = pd.products_id AND pd.language_id = 2 AND p.products_id = p2c.products_id AND p2c.categories_id = c.categories_id ) AND (p.products_price_sorter * IF(gz.geo_zone_id IS null, 1, 1 + (tr.tax_rate / 100)) >= 10) AND (p.products_price_sorter * IF(gz.geo_zone_id IS null, 1, 1 + (tr.tax_rate / 100)) <= 100)] |
ZenCart verze 1.3.5
upravit soubor includes/modules/pages/advanced_search_result/header_php.php
Na řádku 215 změňte
1 2 3 4 5 6 |
$from_str = "FROM " . TABLE_PRODUCTS . " p LEFT JOIN " . TABLE_MANUFACTURERS . " m USING(manufacturers_id), " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_CATEGORIES . " c, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c LEFT JOIN " . TABLE_META_TAGS_PRODUCTS_DESCRIPTION . " mtpd ON mtpd.products_id= p2c.products_id AND mtpd.language_id = :languagesID"; |
na
1 2 3 4 5 6 |
$from_str = "FROM (" . TABLE_PRODUCTS . " p LEFT JOIN " . TABLE_MANUFACTURERS . " m USING(manufacturers_id), " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_CATEGORIES . " c, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c LEFT JOIN " . TABLE_META_TAGS_PRODUCTS_DESCRIPTION . " mtpd ON mtpd.products_id= p2c.products_id AND mtpd.language_id = :languagesID)"; |
ZenCart verze 1.3.0.2
upravit soubor includes/modules/pages/advanced_search_result/header_php.php
změnit: (řádek 216)
1 2 3 4 5 6 |
$from_str = "FROM". TABLE_PRODUCTS. "p LEFT JOIN ". TABLE_MANUFACTURERS. "m USING(manufacturers_id), ". TABLE_PRODUCTS_DESCRIPTION. "pd,". TABLE_CATEGORIES. "c,". TABLE_PRODUCTS_TO_CATEGORIES. "p2c LEFT JOIN ". TABLE_META_TAGS_PRODUCTS_DESCRIPTION. "mtpd ON mtpd.products_id = p2c.products_id AND mtpd.language_id =:languagesID "; |
na:
1 2 3 4 5 6 |
$from_str = "FROM (" . TABLE_PRODUCTS . " p) LEFT JOIN ". TABLE_MANUFACTURERS. " m ON (p.manufacturers_id = m.manufacturers_id) LEFT JOIN ". TABLE_PRODUCTS_DESCRIPTION. " pd ON (p.products_id = pd.products_id) LEFT JOIN ". TABLE_PRODUCTS_TO_CATEGORIES. " p2c ON (p.products_id = p2c.products_id) LEFT JOIN ". TABLE_CATEGORIES. " c ON (c.categories_id = p2c.categories_id) LEFT JOIN ". TABLE_META_TAGS_PRODUCTS_DESCRIPTION. " mtpd ON (mtpd.products_id = p2c.products_id AND mtpd.language_id =:languagesID)"; |
a: (řádek 251)
1 2 3 4 5 |
$where_str = "WHERE p.products_status = 1 AND p.products_id = pd.products_id AND pd.language_id =:languagesID AND p.products_id = p2c.products_id AND p2c.categories_id = c.categories_id "; |
na:
1 2 3 |
$where_str = "WHERE p.products_status = 1 AND pd.language_id =:languagesID "; |
v souboru includes/languages/czech/classic/header.php na řádku 22
upravíme:
1 |
define('HEADER_SALES_TEXT', '<h1>Prodejní slogan apod.</h1>'); |
na požadovaný text nebo pro úplné vymazání na:
1 |
define('HEADER_SALES_TEXT', ''); |
V souboru includes/languages/czech/meta_tags.php
změnit řádky:
1 2 3 4 5 |
// page title define('TITLE', 'Zen Cart!'); // Site Tagline define('SITE_TAGLINE', 'The Art of E-commerce'); |
na požadovaný text
Povolte box v administraci:
Nástroje => Správce rozvržení boxů => sideboxes/quick_contact.php
V souboru includes/languages/czech/extra_definitions/quick_contact.php změnit přednastavené hodnoty podle vlastních požadavků. Přímo v souboru je česká nápověda.
Poznámka: Pokud chcete úplně zrušit některý údaj tak pouze vymažte text v apostrofech. Zakomentování řádku výpis chybové hlášky.
Úprava názvu odkazů:
v souboru includes/languages/czech.php najdeme řádky
1 2 3 4 |
define('BOX_HEADING_MORE_INFORMATION', '.::Více informací'); define('BOX_INFORMATION_PAGE_2', 'Strana 2'); define('BOX_INFORMATION_PAGE_3', 'Strana 3'); define('BOX_INFORMATION_PAGE_4', 'Strana 4'); |
a upravíme názvy podle požadavků
Počet odkazů
Odstranění odkazu
upravit soubor includes/modules/sideboxes/more_information.php
1 2 3 4 5 6 7 8 9 |
if (DEFINE_PAGE_2_STATUS <= 1) { $more_information[] = '<a href="' . zen_href_link(FILENAME_PAGE_2) . '">' . BOX_INFORMATION_PAGE_2 . '</a>'; } if (DEFINE_PAGE_3_STATUS <= 1) { $more_information[] = '<a href="' . zen_href_link(FILENAME_PAGE_3) . '">' . BOX_INFORMATION_PAGE_3 . '</a>'; } if (DEFINE_PAGE_4_STATUS <= 1) { $more_information[] = '<a href="' . zen_href_link(FILENAME_PAGE_4) . '">' . BOX_INFORMATION_PAGE_4 . '</a>'; } |
první tři řádky znamenají první odkaz (PAGE 2 = Strana 2), další tři druhý odkaz atd. Pokud chceme odstranit například druhý odkaz pak stačí zakomentovat tři řádky, které mu přísluší takto:
1 2 3 4 5 6 7 8 9 |
if (DEFINE_PAGE_2_STATUS <= 1) { $more_information[] = '<a href="' . zen_href_link(FILENAME_PAGE_2) . '">' . BOX_INFORMATION_PAGE_2 . '</a>'; } // if (DEFINE_PAGE_3_STATUS <= 1) { // $more_information[] = '<a href="' . zen_href_link(FILENAME_PAGE_3) . '">' . BOX_INFORMATION_PAGE_3 . '</a>'; // } if (DEFINE_PAGE_4_STATUS <= 1) { $more_information[] = '<a href="' . zen_href_link(FILENAME_PAGE_4) . '">' . BOX_INFORMATION_PAGE_4 . '</a>'; } |
Přidání odkazu
Přidat další odkaz na „Strana 5“ lze přídáním dalších tří řádků pro stranu 5:
1 2 3 |
if (DEFINE_PAGE_5_STATUS <= 1) { $more_information[] = '<a href="' . zen_href_link(FILENAME_PAGE_5) . '">' . BOX_INFORMATION_PAGE_5 . '</a>'; } |
Dále je nutné vytvořit nový soubor includes/languages/czech/page_5.php a do includes/languages/czech.php přidat řádek
1 |
define('BOX_INFORMATION_PAGE_5', 'Strana 5'); |
Nástroj Easy Populate je určen k rychlému exportu a importu zboží. Lze ho take použít k pravidelným aktualizacím cen, popisů zboží a podobně. Následující postup je popsán na Easy Populate verze 1.2.5.4 a Libre Office Calc (možno stáhnout zdarma). Libre Office Calc má lepší podporu kódování UTF-8 a jeho použitím se můžete vyvarovat některým problémům. Použití MS Excel je také možné, ale je nutné dávat dobrý pozor na kódování.
Tento návod je pouze ukázkou základního postupu při importu a exportu a nepopisuje všechny možnosti Easy Populate.
Před prvním exportem je dobré vytvořit si alespoň jednu kategorii a produkt. Díky tomu se budete v exportu lépe orientovat.
Pro správnou funkci Easy Populate je nutné mít u každého produktu unikátní kód zboží.
Upozornění: Chybnou editací či uložením editovaného souboru může dojít k chybnému vložení produktů, zmnožení produktů či kategorií a podobně. Proto je dobré před jeho použitím zálohovat databázi buď přes administraci webhostingu nebo pomocí phpMyAdmin.
Postup při exportu a otevření souboru:
- V administraci ZenCart přejdeme do
Nástroje => Easy Populate – Import/Export - Stáhneme kompletní export kliknutím na odkaz
Download Complete tab-delimited .txt file to edit (Attributes Not Included) - Soubor otevřeme v Libre Office Calc. Jedná se o textový soubor, takže se může stát, že se bude otevírat v Libre Office Writer. V tom případě změňte příponu souboru z txt na csv.
- Při otevírání se objeví vstupní filtr ve kterém provedeme následující nastavení:
- kódování – Unicode – UTF8
- oddělovač sloupců – TAB
- oddělovač textu – nic (odstranit přednastavené uvozovky)
Soubor máte otevřený a můžete jej editovat. Stačí okopírovat poslední řádek a ten poté upravit dle potřeby. Zachovávejte stejný formát řádků. Neodstraňujte sloupce i když nic neobsahují.
Postup při importu
- Soubor uložte a v případě dotazu na zachování formátu souboru formát zachovejte.
- V administraci ZenCart přejdeme do
Nástroje => Easy Populate – Import/Export - Soubor načtěte pomocí prvního pole Upload EP File a poté klikněte na Insert into db. Tím spustíte vlastní import. Easy Populate následně vypíše počet nově importovaných a aktualizovaných produktů, případně počet nevložených produktů.
Nejčastější problémy:
- Chybné kódování souboru
- Tabelátory navíc
- Chybně upravený export
- Chybějící kód zboží
Do stejné složky ve které je umístěný obrázek zboží, ke kterému chceme přidat další obrázky vložíme tyto obrázky se stejným názvem pouze s koncovkou _01 (2,3…) za jménem (ale před tečku a příponu).
Příklad:
Ke zboží s nazvem ZBOZI vložíme obrázek obrazek-ZBOZI.jpg do složky image. Pak přes FTP vložíme do složky image obrázky s názvy obrazek-ZBOZI_01.jpg, obrazek-ZBOZI_02.jpg a obrazek-ZBOZI_03.jpg. Tyto obrázky se automaticky objeví u popisu ZBOZI.
Pokud jste se rozhodli používat HTTPS na ZenCartu tak je k tomu kromě SSL certifikátu potřeba provést potřebné úpravy v konfiguračních souborech. Zde je stručný návod jak provést základní nastavení pro změnu HTTP na HTTPS.
UPOZORNĚNÍ: je třeba rozumět všem prováděným krokům. Doporučujeme problematiku přechodu na HTTPS důkladně prostudovat. Chybné nebo neúplné nastavení může způsobit nefunkčnost stránek nebo problémy s indexací v internetových vyhledávačích.
UPOZORNĚNÍ: u všech upravovaných souborů si nejprve vytvořte zálohu
Zprovoznění SSL certifikátu
Návod na instalaci certifikátu najdete v naší nápovědě ve článku Nastavení HTTPS šifrování.
Ověření funkčnosti SSL certifikátu
Funkčnost certifikátu si můžete ověřit tak, že v adresním řádku přidáte „s“ za http. Například u domény http://www.zserver.cz změníte adresu na https://www.zserver.cz. Prohlížeč by neměl zobrazit žádné chybové hlášení. Dále existují různé online nástroje na otestování správného nastaveni SSL certifikátu. Jeden z kvalitních nástrojů je SSL Server Test od Qualsys.
Změna konfiguračních souborů
Změnu je třeba provést ve dvou konfiguračních souborech. HTTPS lze pro zákaznické rozhraní zapnout pouze pro přihlášení zákazníka a pokladnu a nebo globálně pro celé stránky.
Zákaznické rozhraní – soubor includes/configure.php
1 2 3 4 5 |
define('HTTP_SERVER', 'http://www.vasedomena.cz'); define('HTTPS_SERVER', 'https://www.vasedomena.cz'); // Use secure webserver for checkout procedure? define('ENABLE_SSL', 'true'); |
1 2 3 4 5 |
define('HTTP_SERVER', 'https://www.vasedomena.cz'); define('HTTPS_SERVER', 'https://www.vasedomena.cz'); // Use secure webserver for checkout procedure? define('ENABLE_SSL', 'false'); |
Administrační rozhraní – soubor ADRESAR_ADMINISTRACE/includes/configure.php
1 2 3 4 5 6 7 8 |
define('HTTP_SERVER', 'https://www.vasedomena.cz'); define('HTTPS_SERVER', 'https://www.vasedomena.cz'); define('HTTP_CATALOG_SERVER', 'https://www.vasedomena.cz'); define('HTTPS_CATALOG_SERVER', 'https://www.vasedomena.cz'); // Use secure webserver for catalog module and/or admin areas? define('ENABLE_SSL_CATALOG', 'true'); define('ENABLE_SSL_ADMIN', 'true'); |
Změna .htaccess souboru
Pro automatické přesměrování z HTTP na HTTPS verzi stránek je třeba v souboru .htaccess v kořenovém adresáři nastavit:
1 2 3 4 5 6 7 8 9 |
#Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^domena.cz$ [NC] RewriteRule ^(.*)$ https://www.domena.cz/$1 [R=301,L] RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L] |
Toto nastavení přesměrování je dočasné (Redirect 302 – Moved Temporary) a je tak vhodné pro otestování funkčnosti. Jakmile si ověříte, že vše funguje korektně tak můžete přidat příznak pro trvalé přesměrování (Redirect 301 – Moved Permanently) takto:
1 2 3 4 5 6 7 8 9 |
#Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^domena.cz$ [NC] RewriteRule ^(.*)$ https://www.domena.cz/$1 [R=301,L] RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] |
Trvalé přesměrování můžete nastavit i bez editace .htaccess souboru přímo v administraci webhostingu dle návodu na přesměrování HTTP na HTTPS.
Změna interních odkazů
Pokud se někde na stránkách odkazujete na své stránky (například v textu EZ Stránky odkazujete na kategorii nebo produkt) absolutním odkazem tedy takovým, který obsahuje i http (například http://www.vasedomena.cz/shippinginfo.html) tak je třeba tento odkaz přepsat na https. Pokud používáte relativní odkazy (například /shippinginfo.html) tak tato změna není třeba.
Přegenerování a kontrola xml feedů pro vyhledávače zboží
Pokud používáte předinstalovaný XML generátor tak stačí pouze přegenerovat xml feed. Pokud používáte jiný modul tak konzultujte tuto část s dodavatelem modulu.
Kontrola vložených scriptů
Typicky se jedná o vložené scripty Facebooku či Google. Pokud budou obsahovat HTTP tak může prohlížeč zobrazit informaci že je část stránky nezabezpečená.
Změna odkazů směrujících na vaše stránky
Změňte veškeré odkazy na vaše stránky, ke kterým máte přístup.
Průběžná kontrola statistik přístupů
Po úspěšném převodu pečlivě sledujte statistiky přístupů kvůli případným problémům. Může nastat dočasný mírný pokles návštěvnosti, ale vše by se mělo brzy vrátit na původní hodnoty.
Pokud používáte internetový obchod ZenCart a zároveň srovnávač zboží na zbozi.cz tak jste pravděpodobně zaznamenali nový formát XML feedu pro zbozi.cz. Podpora starého formátu končí 31.7.2016 a do té doby je třeba upravit XML generátor tak aby generoval feed v novém formátu. Seznam uvolnil specifikaci nového XML feedu a také zpřístupnil validátor nového formátu XML feedu, kde si můžete zkontrolovat správnost formátu vašeho feedu pro zbozi.cz. Zveřejňujeme zde proto návod na základní změnu xml generátoru, který používáme v našich instalacích ZenCart.
Tato úprava nezahrnuje všechny možnosti, které nový XML formát nabízí, ale stačí k tomu aby XML feed odpovídal požadavkům nového formátu. Pokud požadujete kompletní podporu všech funkcí zbozi.cz pak doporučujeme zvážit přechod na PrestaShop. V naší nabídce najdete i migraci dat ze ZenCart na PrestaShop.
Postup úpravy XML generátoru pro ZenCart
Veškeré úpravy se provádějí v souboru rss.php, který je umístěn v adresáři administrace ZenCart. Soubor rss.php si stáhnete pomocí FTP klienta (například FileZilla) a upravíte v textovém editoru. Jako textový editor doporučujeme použít takový, který zvládá znakovou sadu UTF-8. Například PSPad.
Nejprve najdeme začátek a konec sekce, pro generování xml feedu pro ZenCart. Veškeré úpravy budeme provádět mezi těmito místy:
1 2 3 4 5 |
<?php case ('seznam'): $text= '<?xml version="1.0" encoding="' . CHARSET . '"?> '; ?> |
1 2 3 |
$zipfile = new zipfile(); $filedata = $text; $zipfile -> add_file($filedata, "seznam.xml"); |
Mezi výše uvedenými místy najdeme následující kód:
1 2 3 |
$products = $db->Execute($sql_products); $text.= "\n<SHOP>\n"; while(!$products->EOF) |
a přidáme definici verze xml feedu takto:
1 2 3 |
$products = $db->Execute($sql_products); $text.= "\n" . '<SHOP xmlns="http://www.zbozi.cz/ns/offer/1.0">' . "\n"; while(!$products->EOF) |
Dále přidáme tag ITEM_ID tak, že přidáme za tag SHOPITEM kód s ITEM_ID:
1 2 |
$text.= " <SHOPITEM>\n"; $text.= " <ITEM_ID>" . $product_id . "</ITEM_ID>\n"; |
Následně změníme tag PRODUCT na nový PRODUCTNAME:
1 |
$text.= " <PRODUCT>" . clean($products->fields['products_name']) . "</PRODUCT>\n"; |
změníme na nový:
1 |
$text.= " <PRODUCTNAME>" . clean($products->fields['products_name']) . "</PRODUCTNAME>\n"; |
Nakonec upravíme tag ceny. V nové verzi je podporován pouze tag PRICE_VAT, takže odstraníme původní kód:
1 2 |
$text.= " <PRICE>". $price . "</PRICE>\n"; $text.= " <VAT>".($tax_rate/100) . "</VAT>\n"; |
a místo něj vložíme následující kód:
1 |
$text.= " <PRICE_VAT>" . ((($price)*($tax_rate+100))/100) . "</PRICE_VAT>\n"; |
Pokud úpravy provedete správně pak by, po přegenerování xml feedu, měl nový feed odpovídat požadavkům zbozi.cz a měl by vypadat takto:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
<?php case ('seznam'): $text= '<?xml version="1.0" encoding="' . CHARSET . '"?>'; ?> <?php $counts = $db->Execute("SELECT count(*) as number_active FROM " . TABLE_PRODUCTS . " WHERE products_status='1'"); $sql_products .= "select p.products_id, pd.products_name, pd.products_description, p.products_price, p.products_tax_class_id, p.products_image, m.manufacturers_name "; $sql_products .= "from " . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on (p.manufacturers_id = m.manufacturers_id), "; $sql_products .= TABLE_PRODUCTS_DESCRIPTION . " pd "; $sql_products .= "where p.products_id = pd.products_id "; $sql_products .= "and p.products_status = 1 and pd.language_id = '" . $_SESSION['languages_id']. "'"; $products = $db->Execute($sql_products); $text.= "\n" . '<SHOP xmlns="http://www.zbozi.cz/ns/offer/1.0">' . "\n"; while(!$products->EOF) { $product_id = $products->fields['products_id']; $products_description = strip_tags($products->fields['products_description']); if (strlen($products_description) > 500){ $products_description = substr($products_description, 0, strrpos(substr($products_description, 0, 500), ' ')) . '...'; } $specials = $db->Execute("select specials_new_products_price from " . TABLE_SPECIALS . " where products_id = '" . (int)$product_id . "' and status='1'"); if ($specials->RecordCount() > 0) { $price = $specials->fields['specials_new_products_price']; } else { $price = $products->fields['products_price']; } $tax_rate=zen_get_tax_rate_value($products->fields['products_tax_class_id']); $plink = zen_seo_href_link(zen_get_info_page($products->fields['products_id']), 'products_id=' . $products->fields['products_id'], 'NONSSL', false); $text.= " <SHOPITEM>\n"; $text.= " <ITEM_ID>" . $product_id . "</ITEM_ID>\n"; $text.= " <MANUFACTURER>" . clean($products->fields['manufacturers_name']) . "</MANUFACTURER>\n"; $text.= " <PRODUCTNAME>" . clean($products->fields['products_name']) . "</PRODUCTNAME>\n"; $text.= " <DESCRIPTION>" . clean($products_description) . "</DESCRIPTION>\n"; $text.= " <URL>" . $plink . "</URL>\n"; $text.= " <IMGURL>".HTTP_SERVER.DIR_WS_CATALOG.DIR_WS_IMAGES. $products->fields['products_image'] . "</IMGURL>\n"; $text.= " <PRICE_VAT>" . ((($price)*($tax_rate+100))/100) . "</PRICE_VAT>\n"; $text.= " </SHOPITEM>\n"; $products->MoveNext(); } $text.= "</SHOP>"; $zipfile = new zipfile(); $filedata = $text; $zipfile -> add_file($filedata, "seznam.xml"); $filename = "../rss/seznam.zip"; $fd = fopen ($filename, "wb"); $out = fwrite ($fd, $zipfile -> file()); fclose ($fd); echo '<br><b>XML SEZNAM a JYXO vytvořeno!</b><br>Celkem: ' . $counts->fields['number_active'] . ' produktů.<br>'; break; |
Ověřit si to můžete pomocí validátoru xml feedu.
V případě, že u nás máte webhosting ZenCartu a na uvedenou úpravu si netroufáte pak nás kontaktujte a provedeme úpravu za vás.
Ve výchozím nastavení se produkty v kategoriích ZenCartu řadí podle názvu. Toto řazení lze ovlivnit několika způsoby:
Nastavení řazení na kartě jednotlivých produktů v ZenCart
u každého produktu v kategorii je třeba nastavit pořadí
Změna nastavení výchozího řazení v ZenCart
v administraci ZenCartu v sekci:
Konfigurace => Product Listing => Display Product Listing Default Sort Order
lze nastavit hodnotu ve formátu číslo+písmeno. Číslo odpovídá hodnotě uvedené u některé ze zobrazených informací o produktu. Písmeno a nebo d pak znamená řazení vzestupně (ascending) nebo sestupně (descending). Pokud je tedy například v nastavení:
Konfigurace => Product Listing => Display Product Model
nastavena hodnota 2, pak nastavením volby 2d docílíme sestupného řazení dle kódu produktu.
Úprava na řazení dle libovolného parametru v ZenCart
jako příklad je uvedeno řazení dle data přidání produktu. V souboru includes/index_filters/default_filter.php najdeme následující část:
98 99 100 101 102 103 104 |
} else { // sort by products_sort_order when PRODUCT_LISTING_DEFAULT_SORT_ORDER ia left blank // for reverse, descending order use: // $listing_sql .= " order by p.products_sort_order desc, pd.products_name"; $listing_sql .= " order by p.products_sort_order, pd.products_name"; break; } |
a přidáme podmínku, která způsobí řazení produktů podle data přidání v případě, že v konfiguraci:
Konfigurace => Product Listing => Display Product Listing Default Sort Order
nastavíme číslo 55 (lze samozřejmě nastavit libovolné jiné číslo). Přidáme řádky 102 – 104 a 106:
98 99 100 101 102 103 104 105 106 107 108 |
} else { // sort by products_sort_order when PRODUCT_LISTING_DEFAULT_SORT_ORDER ia left blank // for reverse, descending order use: // $listing_sql .= " order by p.products_sort_order desc, pd.products_name"; if (PRODUCT_LISTING_DEFAULT_SORT_ORDER == 55) { $listing_sql .= " order by p.products_date_added desc"; } else { $listing_sql .= " order by p.products_sort_order, pd.products_name"; } break; } |
Nyní je třeba změnit nastavení v:
Konfigurace => Product Listing => Display Product Listing Default Sort Order
na číslo 55 a produkty se budou řadit podle data přidání sestupně. Pokud bychom chtěli vzestupné řazení tak vynecháme „desc“ na konci řádku 103.