artur.didit Posted December 30, 2015 Share Posted December 30, 2015 Witam, piszę pierwszy swój moduł po stronie php mam <?php class categoryonhomepage extends Module { private $_html= ''; function __construct() { $this->name = 'categoryonhomepage'; $this->tab = 'other'; $this->version = '0.1.0'; $this->author = '[email protected]'; $this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_); // minimalna/maksymalna wersja, na ktorej bedzie dzialal modul $this->bootstrap = true; parent::__construct(); $this->displayName = $this->l('Display category on homepage'); $this->description = $this->l('This module display category image.'); } public function install() { parent::install(); if(!$this->registerHook('displayHome') || !$this->registerHook('displayHeader') ) return false; return true; } public function uninstall() // usuwamy pola z bazy { // Delete configuration return Configuration::deleteByName('_text_to_show') && parent::uninstall(); } public function getContent() { if(Tools::isSubmit('submit_text')) { //Służy do sprawdzania, czy nastąpiło wysłanie formularza w panelu konfiguracyjnym modułu. Jako parametr podajemy nazwę przycisku. Configuration::updateValue( //Dzięki tej funkcji możemy w prosty sposób zapisać w bazie danych naszą konfigurację. Jako pierwszy parametr podajemy nazwę klucza, a jako drugi - wartość. Wszystkie stworzone przez nas konfiguracje lądują w bazie w tabelce ps_configuration (ps_ to standardowy przedrostek tabelek PrestaShop w bazie danych, ale w czasie instalacji sklepu mogłeś wybrać inny) $this->name.'_text_to_show', Tools::getValue('the_text') //Pobiera zawartość $_POST odpowiadającą zawartości danego pola w formularzu ); } $this->_generateForm(); return $this->_html; } private function _generateForm() { $textToShow=Configuration::get($this->name.'_text_to_show'); //Funkcja get pobiera z kolei dane z bazy. Jako parametr użyj nazwy klucza, który użyłeś przy wprowadzaniu danych. $this->_html .= '<form action="'.$_SERVER['REQUEST_URI'].'" method="post">'; $this->_html .= '<label>'.$this->l('Enter your text: ').'</label>'; $this->_html .= '<div class="margin-form">'; $this->_html .= '<input type="text" name="the_text" value="'.$textToShow.'" >'; $this->_html .= '<input type="submit" name="submit_text" '; $this->_html .= 'value="'.$this->l('Update the text').'" class="button" />'; $this->_html .= '</div>'; $this->_html .= '</form>'; } public function hookHeader() // dodajemy css do strony { $this->page_name = Dispatcher::getInstance()->getController(); $this->context->controller->addCss(($this->_path).'categoryonhomepage.css'); //$this->context->controller->addJS(($this->_path).'categoryonhomepage.js'); } public function hookHome() { global $smarty, $cookie, $link; $id_customer = (int)$params['cookie']->id_customer; $id_group = $id_customer ? Customer::getDefaultGroupId($id_customer) : _PS_DEFAULT_CUSTOMER_GROUP_; $id_lang = (int)$params['cookie']->id_lang; $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' SELECT * FROM `'._DB_PREFIX_.'category` c LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (c.`id_category` = cl.`id_category` AND `id_lang` = '.$id_lang.') LEFT JOIN `'._DB_PREFIX_.'category_group` cg ON (cg.`id_category` = c.`id_category`) WHERE level_depth > 2 AND c.`active` = 1 AND cg.`id_group` = '.$id_group.' ORDER BY `level_depth` ASC, c.`position` ASC'); $category = new Category(1); $nb = intval(Configuration::get('HOME_categories_NBR')); global $link; $this->context->smarty->assign(array( 'categories' => $result, Category::getRootCategories(intval($params['cookie']->id_lang), true), 'link' => $link)); $this->context->smarty->assign(array( 'category' => $category, 'lang' => Language::getIsoById(intval($params['cookie']->id_lang)), )); return $this->display(__FILE__, 'categoryonhomepage.tpl'); } } ?> Natomiast w tpl mam <div id="categoryonhomepage"> {if isset($categories) AND $categories} <ul> {foreach from=$categories item=category name=categoryonhomepage} {assign var='categoryLink' value=$link->getcategoryLink($category.id_category, $category.link_rewrite)} <li class="ajax_block_category {if $smarty.foreach.categoryonhomepage.first}first_item{elseif $smarty.foreach.categoryonhomepage.last}last_item{else}item{/if}"> <div><a href="{$categoryLink}" title="{$category.legend}" class="category_image"><img src="{$img_cat_dir}{$category.id_category}.jpg" alt="{$category.name}" title="{$category.name}" class="categoryImage" width="190" /></a></div> <a href="{$categoryLink}" title="{$category.legend}" class="opis">{$category.id_category}</a> </li> {/foreach} </ul> {else} <p>{l s='No categories' mod='categoryonhomepage'}</p> {/if} </div> Nie wyświetla mi wartości {$category.name},{$category.legend} Podgląd działania tego modułu tutaj-> http://drukarnia-kazmierz.pl/pl/ W kodzie jest sporo "ćwiczeń" Proszę o pomoc .... Link to comment Share on other sites More sharing options...
vekia Posted December 30, 2015 Share Posted December 30, 2015 być może to kwestia tego, że przeglądasz front office w jakimś języku, który nie ma zdefiniowanych tłumaczeń dla danej kategorii ? Link to comment Share on other sites More sharing options...
artur.didit Posted January 5, 2016 Author Share Posted January 5, 2016 (edited) być może to kwestia tego, że przeglądasz front office w jakimś języku, który nie ma zdefiniowanych tłumaczeń dla danej kategorii ? Zgadza się $id_lang = (int)$params['cookie']->id_lang; Zwraca 0 zamiast 1. Poprawiłem na $id_lang = (int)$params['cookie']->id_lang+1; i wyświetlają się zmienne prawidłowo. Zastanawia mnie tylko dlaczego nie prawidłowo zapisuje do cookie. Pozdrawiam Artur Edited January 5, 2016 by artur.didit (see edit history) 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