gmarcin Posted February 12, 2014 Share Posted February 12, 2014 Witam, Chciałbym pobrać dane z bazy Mam coś takiego. $obj = (object)'Product'; $baza = Db::getInstance()->executeS('SELECT id_product, recommend FROM ps_product'); $products = array(); foreach ($baza as $pi) { $obj->id_product = (int)$pi['id_product']; $obj->recommend = (int)$pi['recommend']; //$products[] = (int)$pi['id_product']; $products[] = $obj; } $this->smarty->assign(array( 'productsViewed' => $products));a to kod z tpl {foreach from=$productsViewed item=viewedProduct name=myLoop} <p>{$vievedProduct->id_product|escape:'html'}</p> {/foreach}wynikiem tego kodu jest dobra ilość pustych znaczników <p>w związku z tym mam pytanie jak wyświetlić dane z bazy?pozdrawiam Link to comment Share on other sites More sharing options...
0 vekia Posted February 12, 2014 Share Posted February 12, 2014 definiujesz item=viewedProduct a później wykorzystujesz {$vievedProduct->id_product|escape:'html'} widzisz różnicę w nazwie zmiennej? Link to comment Share on other sites More sharing options...
0 gmarcin Posted February 12, 2014 Author Share Posted February 12, 2014 (edited) Tak, widzę . Dziękuje Mam jeszcze dwa pytania. Jak ustawić moduł aby wyświetlał się tylko, gdy użytkownik jest w widoku produktu? Jak pobrać id categorii w której jest wyświetlony produktu?Teraz pobieram ostatni rekordTak jakby nie dodawał odrazu do listy Edited February 12, 2014 by gmarcin (see edit history) Link to comment Share on other sites More sharing options...
0 vekia Posted February 12, 2014 Share Posted February 12, 2014 można to zrobić dwojako, za pośrednictwem back office ustawić tzw. exceptions, czyli wyjątki. wyjątki to strony, na których moduł ma się nie wyświetlać. moduły > pozycje - odszukaj modułu na liście hooka, gdzie jest podpięty i edytuj go. wybierz wszystkie strony z wyjątkiem "product" drugi sposób to modyfikacja modułu, jego pliku tpl dokładniej mówiąc. wystarczy kod modułu w tym pliku ująć w ten warunek if: {if $page_name=="product"} KOD PLIKU TPL TUTAJ {/if} Link to comment Share on other sites More sharing options...
0 gmarcin Posted February 12, 2014 Author Share Posted February 12, 2014 Dziękuje To jeszcze czy da się jakoś łatwo pobrać Id categorii? Bo chciałbym wyświetlać produkty tylko z danej kategorii w której jest użytkownik Link to comment Share on other sites More sharing options...
0 vekia Posted February 12, 2014 Share Posted February 12, 2014 w tym wypadku musiałbyś w jakiś sposób (najlepiej w plikach php modułu, w hooku gdzie wyświetlasz tpl) do smarty przekazać id kategorii produktu coś w stylu: $product = new Product(Tools::getValue('id_product'); //pobranie i stworzenie obiektu przeglądanego produktu $id_category_product=$product->id_default_category; //id kategorii głównej produktu $this->context->smarty->assign('id_category_product', $id_category_product); // id_kategorii przekazujemy do smarty i odtąd w pliku tpl modułu możesz posługiwać zmienną $id_category_product Link to comment Share on other sites More sharing options...
0 gmarcin Posted February 12, 2014 Author Share Posted February 12, 2014 (edited) Niestety coś muszę źle jeszcze robić bo nie działa ;/function hookRightColumn($params) { $product = new Product(Tools::getValue('id_product')); $id_category_product=$product->id_default_category; $obj = (object)'Product'; $baza = Db::getInstance()->executeS('SELECT id_product, recommend FROM ps_product'); $products = array(); foreach ($baza as $pi) { $obj->id_product = (int)$pi['id_product']; $obj->recommend = (int)$pi['recommend']; $products[] = $obj; } $this->smarty->assign(array( 'productsViewed' => $products)); $this->context->smarty->assign('id_category_product', $id_category_product); return $this->display(__FILE__, 'my.tpl'); } Edited February 12, 2014 by gmarcin (see edit history) Link to comment Share on other sites More sharing options...
0 vekia Posted February 13, 2014 Share Posted February 13, 2014 function hookRightColumn($params) jest to globalny hook, ale jego zawartość będzie działać tylko na stronie produktu $product = new Product(Tools::getValue('id_product')); - ta zmienna występuje tylko na stronie produktu. co do niedziałania, jest tam błąd, kod pisałem z pamięci nie ma pola id_default_category, jest za to id_category default $id_category_product=$product->id_category_default; Link to comment Share on other sites More sharing options...
0 gmarcin Posted February 13, 2014 Author Share Posted February 13, 2014 Dziękuję bardzo Działa tak jak chciałem.To pierwszy moduł prawie gotowy:) Link to comment Share on other sites More sharing options...
0 vekia Posted February 13, 2014 Share Posted February 13, 2014 tak sobie myślę, jeszcze, że skoro to jest globalny hook, a Ty chcesz tylko to mieć na stronie produktu, dobrze będzie ograniczyć "execute" (brakuje mi słowa ) kodu wyłacznie do strony produktów. tj. cały kod wewnątrz hooka ująć w coś w stylu: if isset($_GET['id_product']) function hookRightColumn($params){ if (isset($_POST['id_product'])){ $product = new Product(Tools::getValue('id_product')); $id_category_product=$product->id_default_category; $obj = (object)'Product'; $baza = Db::getInstance()->executeS('SELECT id_product, recommend FROM ps_product'); $products = array(); foreach ($baza as $pi){ $obj->id_product = (int)$pi['id_product']; $obj->recommend = (int)$pi['recommend']; $products[] = $obj; } $this->smarty->assign(array( 'productsViewed' => $products)); $this->context->smarty->assign('id_category_product', $id_category_product); return $this->display(__FILE__, 'my.tpl'); } } Link to comment Share on other sites More sharing options...
0 gmarcin Posted February 13, 2014 Author Share Posted February 13, 2014 (edited) Niestety z tym warunkiem nie działaJeszcze mam jedno pytanie.Jaka jest funkcja do pobrania adresu zdjęcia? pobieram id_image i link_rewrite, dokładnie chodzi mi o katalog, gdzie będzie zdjęcie Edited February 13, 2014 by gmarcin (see edit history) Link to comment Share on other sites More sharing options...
0 vekia Posted February 13, 2014 Share Posted February 13, 2014 moj bład zamiast if (isset($_POST['id_product'])) ma być { if (isset($_GET['id_product'])){ GET zamiast POST funkcji do pobrania nazwy katalogu zdjęcia nie ma, ale możesz z korzystać z obiektu Link i funkcji getImageLink Link to comment Share on other sites More sharing options...
0 gmarcin Posted February 13, 2014 Author Share Posted February 13, 2014 (edited) No właśnie znalazłem taka funkcję Moduł działa tak jak chciałem Bardzo dziękuję.Jakby ktoś potrzebował podobny moduł to mogę udostępnić.Pozdrawiam Edited February 13, 2014 by gmarcin (see edit history) Link to comment Share on other sites More sharing options...
Question
gmarcin
Witam,
Chciałbym pobrać dane z bazy
Mam coś takiego.
a to kod z tpl
wynikiem tego kodu jest dobra ilość pustych znaczników <p>
w związku z tym mam pytanie jak wyświetlić dane z bazy?
pozdrawiam
Link to comment
Share on other sites
12 answers to this question
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