gyula21 Posted March 20, 2013 Share Posted March 20, 2013 Sziasztok Egy olyan modult keresek, ami a termékeim közül random megjelenít 8-at a főoldalon. Tudom, hogy van a PS-be beépítve egy "kiemelt termékek a főoldalon" modul, de én olyat keresek, amely az összes termék közül randomba megjelenít x darabot (mondjuk 8-at) és nem csak a home kategóriához hozzáadottakat A válaszokat előre is köszönöm Link to comment Share on other sites More sharing options...
pattila01 Posted March 21, 2013 Share Posted March 21, 2013 Próbáld meg azt amit csatoltam. homefeaturez.zip Link to comment Share on other sites More sharing options...
gyula21 Posted March 21, 2013 Author Share Posted March 21, 2013 Jó ötlet, csak sajnos nem mutatja a képeket illetve csak egy kategóriát enged kiemelni és az alkategóriát nem engedi :/ (pl.: ha kiemelem a "szórakoztató elektronika" kategóriát, akkor csak azokat mutatja amik abban vannak benne, de az alkategóriáit, mint pl.: TV-k, Házimozi rendszerek, stb-ket nem mutatja) Link to comment Share on other sites More sharing options...
pattila01 Posted March 21, 2013 Share Posted March 21, 2013 (edited) akkor próbáld meg ezt: /modules/homefeatured/homefeatured.php fájlt nyisd meg keresd ki ezt a részt: $products = $category->getProducts((int)($params['cookie']->id_lang), 1, ($nb ? $nb : 10)); 99. sor körül van, majd utána szúrd be ezt: if ($products) { shuffle($products); array_splice($products, ($nb ? $nb : 10)); } és nézzük meg mit mutat! Edited March 21, 2013 by pattila01 (see edit history) Link to comment Share on other sites More sharing options...
gyula21 Posted March 21, 2013 Author Share Posted March 21, 2013 csak az első 8-at shuffle-olja a home kategóriából Link to comment Share on other sites More sharing options...
pattila01 Posted March 21, 2013 Share Posted March 21, 2013 (edited) 8 darab is van beállítva vagy több? készítsünk egy új változót 20-as értékkel: $nb1 = 20; ezt szúrd be a $products = $category->getProducts((int)($params['cookie']->id_lang), 1, ($nb ? $nb : 10)); sor elé, majd írjuk át hogy ezt is használja: $products = $category->getProducts((int)($params['cookie']->id_lang), 1, ($nb1 ? $nb1 : 10)); Tehát összességében így: $nb1 = 20; $products = $category->getProducts((int)($params['cookie']->id_lang), 1, ($nb1 ? $nb1 : 10)); Edited March 21, 2013 by pattila01 (see edit history) Link to comment Share on other sites More sharing options...
gyula21 Posted March 21, 2013 Author Share Posted March 21, 2013 8 db van beállítva így ezzel most 20at mutat shuffle nélkül Link to comment Share on other sites More sharing options...
pattila01 Posted March 21, 2013 Share Posted March 21, 2013 Hányas a shop...? Link to comment Share on other sites More sharing options...
gyula21 Posted March 21, 2013 Author Share Posted March 21, 2013 1.5.3.1 Link to comment Share on other sites More sharing options...
pattila01 Posted March 21, 2013 Share Posted March 21, 2013 Én 1.4.x-re írtam a fentieket. Akkor 1.5.3.1-en kell tesztelnem. Kis időt kérek. Link to comment Share on other sites More sharing options...
gyula21 Posted March 21, 2013 Author Share Posted March 21, 2013 Rendben Link to comment Share on other sites More sharing options...
pattila01 Posted March 22, 2013 Share Posted March 22, 2013 (edited) hát nem volt egyszerű de talán sikerült. Ki kell próbálnod hogy lássuk tényleg működik-e. modules/homefeatured/homefeatured.php-t kell szerkeszteni. Ez után a sor után: $nb = (int)(Configuration::get('HOME_FEATURED_NBR')); (valahol a 105. sor környékén) törölj ki mindent (természetesen mentés legyen az eredeti fájlról) és illeszd be az alábbi kódot egészen a végéig: $products = HomeFeatured::getHProducts(intval($params['cookie']->id_lang), ($nb ? $nb : 100)); if ($products) { shuffle($products); array_splice($products, ($nb ? $nb : 100)); } $this->smarty->assign(array( 'products' => $products, 'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'), 'homeSize' => Image::getSize(ImageType::getFormatedName('home')), )); return $this->display(__FILE__, 'homefeatured.tpl'); } /**********************************************************************/ public static function getHProducts($id_lang, $nb) { $seed = intval(date('ndH')); $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' SELECT p.*, pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, p.`ean13`, p.`upc`, i.`id_image`, il.`legend`, t.`rate`, m.`name` AS manufacturer_name, DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new, (p.`price` * ((100 + (t.`rate`))/100)) AS orderprice, pa.id_product_attribute FROM `'._DB_PREFIX_.'product` p LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)($id_lang).') LEFT OUTER JOIN `'._DB_PREFIX_.'product_attribute` pa ON (p.`id_product` = pa.`id_product` AND `default_on` = 1) LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)($id_lang).') LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (p.`id_tax_rules_group` = tr.`id_tax_rules_group` AND tr.`id_country` = '.(int)Country::getDefaultCountryId().' AND tr.`id_state` = 0) LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.`id_tax` = tr.`id_tax`) LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON (m.`id_manufacturer` = p.`id_manufacturer`) WHERE p.`active` = 1 ORDER BY RAND('.$seed.') LIMIT '.$nb); if (!$result) return false; $productsIds = array(); foreach ($result as $row) $productsIds[] = $row['id_product']; // Thus you can avoid one query per product, because there will be only one query for all the products of the cart Product::cacheFrontFeatures($productsIds, $id_lang); return Product::getProductsProperties((int)$id_lang, $result); } } Természetesen mellékelem az én fájlomat is, ha gondolod akkor csak cseréld ki. Nézzük meg! Nekem most 8 termék van beállítva mutatásra a modul beállításaiban, és 8 termék is van a shopban (alapból ugye), ebből 4-nél kiszedtem a pipát azért hogy ne legyenek benne a home kategóriában (így imitálva hogy minden kategóriából szedjen termékeket) és random mutassa őket. Nekem működik, 8 terméket mutat, minden frissítéskor másokat/más sorrendben. Az eredeti kóddal, az eredeti beállításokkal 4-et mutatna sorrendben. Attila homefeatured.php Edited March 22, 2013 by pattila01 (see edit history) Link to comment Share on other sites More sharing options...
gyula21 Posted March 22, 2013 Author Share Posted March 22, 2013 Így most random kiválasztott 8-at, és azokat shuffle-olja oldalfrissítésenként (mindíg ugyanaz a 8) Link to comment Share on other sites More sharing options...
pattila01 Posted March 22, 2013 Share Posted March 22, 2013 aha, én ezt azért nem vettem észre mert csak 8 termékem van a tesztshopban. Próbálkozom akkor tovább. Link to comment Share on other sites More sharing options...
pattila01 Posted March 22, 2013 Share Posted March 22, 2013 (edited) Csak próbaképpen csináld meg: az utolsó sql lekérdezés-részt (141.sor körül) töröld ki, tehát ez helyett: ...WHERE p.`active` = 1 ORDER BY RAND('.$seed.') LIMIT '.$nb); ez legyen csak: WHERE p.`active` = 1'); Edited March 22, 2013 by pattila01 (see edit history) 1 Link to comment Share on other sites More sharing options...
gyula21 Posted March 23, 2013 Author Share Posted March 23, 2013 Úgy néz ki, hogy működik Köszönöm Link to comment Share on other sites More sharing options...
pattila01 Posted March 23, 2013 Share Posted March 23, 2013 Örülök hogy végre sikerült. Link to comment Share on other sites More sharing options...
gyula21 Posted March 25, 2013 Author Share Posted March 25, 2013 Chromeban tökéletesen fut, firefoxnál meg kapok egy ilyen hibaüzenetet az oldal tetején: Warning: Function getDefaultCountryId() is deprecated in /wwwroot/modules/homefeatured/homefeatured.php on line 136 in /wwwroot/classes/Tools.php on line 1777 Mitől van ez? Link to comment Share on other sites More sharing options...
pattila01 Posted March 25, 2013 Share Posted March 25, 2013 Aha. Ha más nem este válaszolok, addig utánanézek mi okozza a problémát! Link to comment Share on other sites More sharing options...
gyula21 Posted March 25, 2013 Author Share Posted March 25, 2013 megvan mi volt a gond: nem működött a catalog price rules és azt olvastam vhol, hogy ilyenkor a defines.inc.php-ban kell egy értéket módosítani, hogy kiírja, hogy mi a hiba de miután megoldottam a catalog price rulesnél a hibát elfelejtettem visszaállítani az értéket Link to comment Share on other sites More sharing options...
pattila01 Posted March 25, 2013 Share Posted March 25, 2013 Igen, akkor most minden okés? A hiba ettől még fennáll, csak épp nem látszik De nem gond, mert ha minden működik akkor nem fontos a hiba. 1 Link to comment Share on other sites More sharing options...
gyula21 Posted March 25, 2013 Author Share Posted March 25, 2013 úgy tűnik nincs vele semmi gond Link to comment Share on other sites More sharing options...
leonardoatis Posted February 6, 2014 Share Posted February 6, 2014 Haliho! pattila01: letöltöttem amit felraktál file-ot ez önmagában működik is, mint ahogy gyula21 is írta állandóan ugyanazt a 8-at randomolja. Próbáltam beírni a módosítást (amatőr vagyok, tuti én cseszek el valamit), de az után nem jelenik meg a webshop, hiba nélkül üres képernyő marad. Presta 1.5.4 és van theme rajt. ötlet? előre is köszönöm! Link to comment Share on other sites More sharing options...
pattila01 Posted February 6, 2014 Share Posted February 6, 2014 válaszoltam a leveledre ezzel kapcsolatban Link to comment Share on other sites More sharing options...
dudikpal Posted February 9, 2014 Share Posted February 9, 2014 Csak próbaképpen csináld meg: az utolsó sql lekérdezés-részt (141.sor körül) töröld ki, tehát ez helyett: ...WHERE p.`active` = 1 ORDER BY RAND('.$seed.') LIMIT '.$nb); ez legyen csak: WHERE p.`active` = 1'); Felmásoltam a phpdat, úgy működik, csak nekem is ugyanazokat kevergeti, viszont ha ezt a sort kitörlöm, akkor fehér oldal, error_on-ra sem ír semmi hibát. Presta 1.5.6.1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now