PrestaWarrior Posted January 27, 2014 Share Posted January 27, 2014 (edited) Witam, mam stworzony moduł do wyświetlania galerii zdjęć z URL z dodaną funkcją do produktu o nazwie getImagesFromUrl(), która pobiera z bazy URL-e zdjęć dla danego produktu. Problem polega na tym, że chciałbym ją wykorzystać w szablonach innych modułów (tych z themes/nazwatheme/modules). Niestety dostaję błąd. Kod funkcji z imagesfromurl/override/classes/Product.php: <?php class Product extends ProductCore { public function getImagesFromUrl() { $result = Db::getInstance()->ExecuteS('SELECT * FROM `'._DB_PREFIX_.'product_image_from_url` WHERE id_product = ' . (int)$this->id . ' ORDER BY `position`'); if (!$result) { return ''; } return $result; } } Wykorzystanie w product.tpl: {assign var='imagesFromUrl' value=$product->getImagesFromUrl()} // ... {else if count($imagesFromUrl) > 0} <span id="view_full_size"> <img src="{$imagesFromUrl[0]['image_url']|escape:'html'}" id="bigpic" alt="testowy obrazek"> <span class="span_link">{l s='Maximize'}</span> </span> {else} Natomiast jeśli próbuję wykorzystać tę funkcję w blocknewproducts/blocknewproducts.tpl: {assign var='imagesFromUrl' value=$product->getImagesFromUrl()} {if count($imagesFromUrl) > 0} <img src="{$imagesFromUrl[0]['image_url']|escape:'html'}" alt="{$product.legend|escape:html:'UTF-8'}" /> {else} I dostaję wtedy błąd: ( ! ) Fatal error: Call to a member function getImagesFromUrl() on a non-object in /home/prestashop/public_html/cache/smarty/compile/dd/91/73/dd9173d435e5e6ba921d3a6f9f47ee3fc1ef360c.file.blocknewproducts.tpl.php on line 55 Co z tym zrobić? Edited January 27, 2014 by PrestaWarrior (see edit history) Link to comment Share on other sites More sharing options...
vekia Posted January 27, 2014 Share Posted January 27, 2014 a masz zmienną $product z obiektem (produkt) przekazaną do tablicy smarty ? wygląda na to, że nie Link to comment Share on other sites More sharing options...
PrestaWarrior Posted January 27, 2014 Author Share Posted January 27, 2014 a masz zmienną $product z obiektem (produkt) przekazaną do tablicy smarty ? wygląda na to, że nie W kodzie modułu (blocknewproducts.php) mam coś takiego: $newProducts = false; if (Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) $newProducts = Product::getNewProducts((int) $params['cookie']->id_lang, 0, (int)Configuration::get('NEW_PRODUCTS_NBR')); if (!$newProducts && !Configuration::get('PS_BLOCK_NEWPRODUCTS_DISPLAY')) return; $this->smarty->assign(array( 'new_products' => $newProducts, 'mediumSize' => Image::getSize(ImageType::getFormatedName('medium')), )); Z tego co widzę metoda getNewProducts korzysta z metody getProductsProperties, która zwraca tablicę produktów. Co muszę zrobić, żeby otrzymać wszystkie nowe produkty jako obiekty? Link to comment Share on other sites More sharing options...
vekia Posted January 27, 2014 Share Posted January 27, 2014 utworzyć tablicę z obiektami i dodać ją do smarty, ale szczerze mówiąc... nie warto to co bym zrobił ja to zmienił funkcję o której mówisz, albo jeszcze lepiej - utworzył dodatkową. public static function getImagesFromUrlbyID($id) { $result = Db::getInstance()->ExecuteS('SELECT * FROM `'._DB_PREFIX_.'product_image_from_url` WHERE id_product = ' . (int)$id . ' ORDER BY `position`'); if (!$result) { return ''; } return $result; } wtedy w pliku tpl możesz korzystać z {Product::getImagesFromUrlbyID(12)} zamiast 12 podstawiasz id produktu. Link to comment Share on other sites More sharing options...
Recommended Posts