konrad1cs Posted June 2, 2013 Share Posted June 2, 2013 Witam. Jestem nowicjuszem jesli chodzi o php. Zacząłem coś kombinowac, ale nic z tego dobrego nie wynikło, bo albo wgl nie wykrywalo homeslider, albo wyskakiwały bledy. www wyglada tak: http://lifeandhome.home.pl/snbsklep/ a zalezy mi na tym aby na stronie głównej wyświetlały się poniżej menu homeslider a pod nim moj modół [który jest już podpięty do top], a po wejsciu w produkt ponieżej menu pokazywal sie tylko moj moduł. Teraz dwa pytania, czy ten układ jest realny do wykonania, oraz czy ktoś jest w stanie mi pomóc z homeslider? Jak już wcześniej wspominałem, próbowałem się tym zająć, ale wez większego rezultatu. Będę bardzo wdzięczny za szybkie odpowieszi oraz pomoc. Link to comment Share on other sites More sharing options...
vekia Posted June 2, 2013 Share Posted June 2, 2013 jest realny do wykonania i sposób na to został opisany tutaj: homeslider to top - zaraz pod menu Link to comment Share on other sites More sharing options...
konrad1cs Posted June 2, 2013 Author Share Posted June 2, 2013 Dziękuję [spam-filter] za szybką i bezpośrednią odpowiedź. A co do pierwszej części mojego pytania, to jeśli już ustawię sobie homeslider w top, jak go wyłączyć na innych stronach? Bo rozumiem, że powyższy poradnik jest na ustawienie homeslider w top we wszystkich podstronach. Link to comment Share on other sites More sharing options...
vekia Posted June 2, 2013 Share Posted June 2, 2013 można to zrobić na dwa sposoby. w backoffice idziesz do modules > positions odszukujesz modułu na liście (lista modułów dodanych do hook top) klikasz na ikonę edycji. W polu Exceptions (w polskim tłumaczeniu to chyba "wyjątki" będzie) dodajesz strony na których nie chcesz wyświetlać modułu. Najprostszy sposób ale i zarazem najbardziej czasochłonny (trzeba sie troche naklikać ) w pliku .tpl modułu ustawiasz prosty warunek {if} sprawdzający na jakiej stronie się znajdujesz, dla przykłądu - jeżeli chcesz slider tylko na stronie głównej, kod pliku wsadzasz w warunek: {if $page_name == 'index'} TUTAJ KOD {/if} To samo dotyczy pozostałych stron, możesz ten warunek rozszerzyć o dodatkowe strony. Link to comment Share on other sites More sharing options...
konrad1cs Posted June 2, 2013 Author Share Posted June 2, 2013 (edited) A co w przypadku, gdy podpiąłem slider do top, widnieje on w pozycjach, a się nie wyświetla? Edited June 2, 2013 by konrad1cs (see edit history) Link to comment Share on other sites More sharing options...
vekia Posted June 2, 2013 Share Posted June 2, 2013 Sprawdź czy w kodzie modułu (plik php) masz funkcję: public function hookTop(){ } oczywiscie funkcja musi miec kod ktory wyswietli plik .tpl itp. Link to comment Share on other sites More sharing options...
konrad1cs Posted June 2, 2013 Author Share Posted June 2, 2013 a no nie mam W które miejsce powinienem wstawić? Pod: public function hookDisplayHome(){ if(!$this->_prepareHook()) return; // Check if not a mobile theme if ($this->context->getMobileDevice() != false) return false; $this->context->controller->addJS($this->_path.'js/jquery.bxSlider.min.js'); $this->context->controller->addCSS($this->_path.'bx_styles.css'); $this->context->controller->addJS($this->_path.'js/homeslider.js'); return $this->display(__FILE__, 'homeslider.tpl', $this->getCacheId()); } ? Link to comment Share on other sites More sharing options...
vekia Posted June 2, 2013 Share Posted June 2, 2013 tak, możesz ten kod wstawić pod tym umieść dokładnie ten kod: public function hookTop(){ if(!$this->_prepareHook()) return; if ($this->context->getMobileDevice() != false) return false; $this->context->controller->addJS($this->_path.'js/jquery.bxSlider.min.js'); $this->context->controller->addCSS($this->_path.'bx_styles.css'); $this->context->controller->addJS($this->_path.'js/homeslider.js'); return $this->display(__FILE__, 'homeslider.tpl'); } Link to comment Share on other sites More sharing options...
konrad1cs Posted June 2, 2013 Author Share Posted June 2, 2013 (edited) wyskoczył błąd o błędzie składni i brakujących klasach A to świadczy ze teoretycznie jest odpowiednio zakotwiczony: link Edited June 2, 2013 by konrad1cs (see edit history) Link to comment Share on other sites More sharing options...
vekia Posted June 3, 2013 Share Posted June 3, 2013 jaki błąd? Jakie klasy? Link to comment Share on other sites More sharing options...
konrad1cs Posted June 3, 2013 Author Share Posted June 3, 2013 w pliku homeslider.php Link to comment Share on other sites More sharing options...
konrad1cs Posted June 3, 2013 Author Share Posted June 3, 2013 może podesle kod na forum? Będzie jaśniej to wyjaśnić Link to comment Share on other sites More sharing options...
vekia Posted June 3, 2013 Share Posted June 3, 2013 zdecydowanie popieram idee załącz plik (np. txt) z kodem modułu lub po prostu wklej go bezpośrednio do postu Link to comment Share on other sites More sharing options...
konrad1cs Posted June 3, 2013 Author Share Posted June 3, 2013 Proszę: (wyciąłem informacje o autorze) <?php if (!defined('_PS_VERSION_')) exit; include_once(_PS_MODULE_DIR_.'homeslider/HomeSlide.php'); class HomeSlider extends Module { private $_html = ''; public function __construct() { $this->name = 'homeslider'; $this->tab = 'front_office_features'; $this->version = '1.2.1'; $this->author = 'PrestaShop'; $this->need_instance = 0; $this->secure_key = Tools::encrypt($this->name); parent::__construct(); $this->displayName = $this->l('Image slider for your homepage.'); $this->description = $this->l('Adds an image slider to your homepage.'); } /** * @see Module::install() */ public function install() { /* Adds Module */ if (parent::install() && $this->registerHook('displayHome') && $this->registerHook('actionShopDataDuplication')) { /* Sets up configuration */ $res = Configuration::updateValue('HOMESLIDER_WIDTH', '535'); $res &= Configuration::updateValue('HOMESLIDER_HEIGHT', '300'); $res &= Configuration::updateValue('HOMESLIDER_SPEED', '500'); $res &= Configuration::updateValue('HOMESLIDER_PAUSE', '3000'); $res &= Configuration::updateValue('HOMESLIDER_LOOP', '1'); /* Creates tables */ $res &= $this->createTables(); /* Adds samples */ if ($res) $this->installSamples(); return $res; } return false; } /** * Adds samples */ private function installSamples() { $languages = Language::getLanguages(false); for ($i = 1; $i <= 5; ++$i) { $slide = new HomeSlide(); $slide->position = $i; $slide->active = 1; foreach ($languages as $language) { $slide->title[$language['id_lang']] = 'Sample '.$i; $slide->description[$language['id_lang']] = 'This is a sample picture'; $slide->legend[$language['id_lang']] = 'sample-'.$i; $slide->url[$language['id_lang']] = 'http://www.prestashop.com'; $slide->image[$language['id_lang']] = 'sample-'.$i.'.jpg'; } $slide->add(); } } /** * @see Module::uninstall() */ public function uninstall() { /* Deletes Module */ if (parent::uninstall()) { /* Deletes tables */ $res = $this->deleteTables(); /* Unsets configuration */ $res &= Configuration::deleteByName('HOMESLIDER_WIDTH'); $res &= Configuration::deleteByName('HOMESLIDER_HEIGHT'); $res &= Configuration::deleteByName('HOMESLIDER_SPEED'); $res &= Configuration::deleteByName('HOMESLIDER_PAUSE'); $res &= Configuration::deleteByName('HOMESLIDER_LOOP'); return $res; } return false; } /** * Creates tables */ protected function createTables() { /* Slides */ $res = (bool)Db::getInstance()->execute(' CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'homeslider` ( `id_homeslider_slides` int(10) unsigned NOT NULL AUTO_INCREMENT, `id_shop` int(10) unsigned NOT NULL, PRIMARY KEY (`id_homeslider_slides`, `id_shop`) ) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=UTF8; '); /* Slides configuration */ $res &= Db::getInstance()->execute(' CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'homeslider_slides` ( `id_homeslider_slides` int(10) unsigned NOT NULL AUTO_INCREMENT, `position` int(10) unsigned NOT NULL DEFAULT \'0\', `active` tinyint(1) unsigned NOT NULL DEFAULT \'0\', PRIMARY KEY (`id_homeslider_slides`) ) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=UTF8; '); /* Slides lang configuration */ $res &= Db::getInstance()->execute(' CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'homeslider_slides_lang` ( `id_homeslider_slides` int(10) unsigned NOT NULL, `id_lang` int(10) unsigned NOT NULL, `title` varchar(255) NOT NULL, `description` text NOT NULL, `legend` varchar(255) NOT NULL, `url` varchar(255) NOT NULL, `image` varchar(255) NOT NULL, PRIMARY KEY (`id_homeslider_slides`,`id_lang`) ) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=UTF8; '); return $res; } /** * deletes tables */ protected function deleteTables() { $slides = $this->getSlides(); foreach ($slides as $slide) { $to_del = new HomeSlide($slide['id_slide']); $to_del->delete(); } return Db::getInstance()->execute(' DROP TABLE IF EXISTS `'._DB_PREFIX_.'homeslider`, `'._DB_PREFIX_.'homeslider_slides`, `'._DB_PREFIX_.'homeslider_slides_lang`; '); } public function getContent() { $this->_html .= $this->headerHTML(); $this->_html .= '<h2>'.$this->displayName.'.</h2>'; /* Validate & process */ if (Tools::isSubmit('submitSlide') || Tools::isSubmit('delete_id_slide') || Tools::isSubmit('submitSlider') || Tools::isSubmit('changeStatus')) { if ($this->_postValidation()) $this->_postProcess(); $this->_displayForm(); } elseif (Tools::isSubmit('addSlide') || (Tools::isSubmit('id_slide') && $this->slideExists((int)Tools::getValue('id_slide')))) $this->_displayAddForm(); else $this->_displayForm(); return $this->_html; } private function _displayForm() { /* Gets Slides */ $slides = $this->getSlides(); /* Begin fieldset slider */ $this->_html .= ' <fieldset> <legend><img src="'._PS_BASE_URL_.__PS_BASE_URI__.'modules/'.$this->name.'/logo.gif" alt="" /> '.$this->l('Slider configuration').'</legend>'; /* Begin form */ $this->_html .= '<form action="'.Tools::safeOutput($_SERVER['REQUEST_URI']).'" method="post">'; /* Height field */ $this->_html .= ' <label>'.$this->l('Height:').'</label> <div class="margin-form"> <input type="text" name="HOMESLIDER_HEIGHT" id="speed" size="3" value="'.Tools::safeOutput(Configuration::get('HOMESLIDER_HEIGHT')).'" /> px </div>'; /* Width field */ $this->_html .= ' <label>'.$this->l('Width:').'</label> <div class="margin-form"> <input type="text" name="HOMESLIDER_WIDTH" id="pause" size="3" value="'.Tools::safeOutput(Configuration::get('HOMESLIDER_WIDTH')).'" /> px </div>'; /* Speed field */ $this->_html .= ' <label>'.$this->l('Speed:').'</label> <div class="margin-form"> <input type="text" name="HOMESLIDER_SPEED" id="speed" size="3" value="'.Tools::safeOutput(Configuration::get('HOMESLIDER_SPEED')).'" /> ms </div>'; /* Pause field */ $this->_html .= ' <label>'.$this->l('Pause:').'</label> <div class="margin-form"> <input type="text" name="HOMESLIDER_PAUSE" id="pause" size="3" value="'.Tools::safeOutput(Configuration::get('HOMESLIDER_PAUSE')).'" /> ms </div>'; /* Loop field */ $this->_html .= ' <label for="loop_on">'.$this->l('Loop:').'</label> <div class="margin-form"> <img src="../img/admin/enabled.gif" alt="Yes" title="Yes" /> <input type="radio" name="HOMESLIDER_LOOP" id="loop_on" '.(Configuration::get('HOMESLIDER_LOOP') == 1 ? 'checked="checked"' : '').' value="1" /> <label class="t" for="loop_on">'.$this->l('Yes').'</label> <img src="../img/admin/disabled.gif" alt="No" title="No" style="margin-left: 10px;" /> <input type="radio" name="HOMESLIDER_LOOP" id="loop_off" '.(Configuration::get('HOMESLIDER_LOOP') == 0 ? 'checked="checked" ' : '').' value="0" /> <label class="t" for="loop_off">'.$this->l('No').'</label> </div>'; /* Save */ $this->_html .= ' <div class="margin-form"> <input type="submit" class="button" name="submitSlider" value="'.$this->l('Save').'" /> </div>'; /* End form */ $this->_html .= '</form>'; /* End fieldset slider */ $this->_html .= '</fieldset>'; $this->_html .= '<br /><br />'; /* Begin fieldset slides */ $this->_html .= ' <fieldset> <legend><img src="'._PS_BASE_URL_.__PS_BASE_URI__.'modules/'.$this->name.'/logo.gif" alt="" /> '.$this->l('Slides configuration').'</legend> <strong> <a href="'.AdminController::$currentIndex.'&configure='.$this->name.'&token='.Tools::getAdminTokenLite('AdminModules').'&addSlide"> <img src="'._PS_ADMIN_IMG_.'add.gif" alt="" /> '.$this->l('Add Slide').' </a> </strong>'; /* Display notice if there are no slides yet */ if (!$slides) $this->_html .= '<p style="margin-left: 40px;">'.$this->l('You have not yet added any slides.').'</p>'; else /* Display slides */ { $this->_html .= ' <div id="slidesContent" style="width: 400px; margin-top: 30px;"> <ul id="slides">'; foreach ($slides as $slide) { $this->_html .= ' <li id="slides_'.$slide['id_slide'].'"> <strong>#'.$slide['id_slide'].'</strong> '.$slide['title'].' <p style="float: right">'. $this->displayStatus($slide['id_slide'], $slide['active']).' <a href="'.AdminController::$currentIndex.'&configure='.$this->name.'&token='.Tools::getAdminTokenLite('AdminModules').'&id_slide='.(int)($slide['id_slide']).'" title="'.$this->l('Edit').'"><img src="'._PS_ADMIN_IMG_.'edit.gif" alt="" /></a> <a href="'.AdminController::$currentIndex.'&configure='.$this->name.'&token='.Tools::getAdminTokenLite('AdminModules').'&delete_id_slide='.(int)($slide['id_slide']).'" title="'.$this->l('Delete').'"><img src="'._PS_ADMIN_IMG_.'delete.gif" alt="" /></a> </p> </li>'; } $this->_html .= '</ul></div>'; } // End fieldset $this->_html .= '</fieldset>'; } private function _displayAddForm() { /* Sets Slide : depends if edited or added */ $slide = null; if (Tools::isSubmit('id_slide') && $this->slideExists((int)Tools::getValue('id_slide'))) $slide = new HomeSlide((int)Tools::getValue('id_slide')); /* Checks if directory is writable */ if (!is_writable('.')) $this->adminDisplayWarning(sprintf($this->l('Modules %s must be writable (CHMOD 755 / 777)'), $this->name)); /* Gets languages and sets which div requires translations */ $id_lang_default = (int)Configuration::get('PS_LANG_DEFAULT'); $languages = Language::getLanguages(false); $divLangName = 'image¤title¤url¤legend¤description'; $this->_html .= '<script type="text/javascript">id_language = Number('.$id_lang_default.');</script>'; /* Form */ $this->_html .= '<form action="'.Tools::safeOutput($_SERVER['REQUEST_URI']).'" method="post" enctype="multipart/form-data">'; /* Fieldset Upload */ $this->_html .= ' <fieldset class="width3"> <br /> <legend><img src="'._PS_ADMIN_IMG_.'add.gif" alt="" />1 - '.$this->l('Upload your slide').'</legend>'; /* Image */ $this->_html .= '<label>'.$this->l('Select a file:').' * </label><div class="margin-form">'; foreach ($languages as $language) { $this->_html .= '<div id="image_'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $id_lang_default ? 'block' : 'none').';float: left;">'; $this->_html .= '<input type="file" name="image_'.$language['id_lang'].'" id="image_'.$language['id_lang'].'" size="30" value="'.(isset($slide->image[$language['id_lang']]) ? $slide->image[$language['id_lang']] : '').'"/>'; /* Sets image as hidden in case it does not change */ if ($slide && $slide->image[$language['id_lang']]) $this->_html .= '<input type="hidden" name="image_old_'.$language['id_lang'].'" value="'.($slide->image[$language['id_lang']]).'" id="image_old_'.$language['id_lang'].'" />'; /* Display image */ if ($slide && $slide->image[$language['id_lang']]) $this->_html .= '<input type="hidden" name="has_picture" value="1" /><img src="'.__PS_BASE_URI__.'modules/'.$this->name.'/images/'.$slide->image[$language['id_lang']].'" width="'.(Configuration::get('HOMESLIDER_WIDTH')/2).'" height="'.(Configuration::get('HOMESLIDER_HEIGHT')/2).'" alt=""/>'; $this->_html .= '</div>'; } $this->_html .= $this->displayFlags($languages, $id_lang_default, $divLangName, 'image', true); /* End Fieldset Upload */ $this->_html .= '</fieldset><br /><br />'; /* Fieldset edit/add */ $this->_html .= '<fieldset class="width3">'; if (Tools::isSubmit('addSlide')) /* Configure legend */ $this->_html .= '<legend><img src="'._PS_ADMIN_IMG_.'add.gif" alt="" /> 2 - '.$this->l('Configure your slide').'</legend>'; elseif (Tools::isSubmit('id_slide')) /* Edit legend */ $this->_html .= '<legend><img src="'._PS_BASE_URL_.__PS_BASE_URI__.'modules/'.$this->name.'/logo.gif" alt="" /> 2 - '.$this->l('Edit your slide').'</legend>'; /* Sets id slide as hidden */ if ($slide && Tools::getValue('id_slide')) $this->_html .= '<input type="hidden" name="id_slide" value="'.$slide->id.'" id="id_slide" />'; /* Sets position as hidden */ $this->_html .= '<input type="hidden" name="position" value="'.(($slide != null) ? ($slide->position) : ($this->getNextPosition())).'" id="position" />'; /* Form content */ /* Title */ $this->_html .= '<br /><label>'.$this->l('Title:').' * </label><div class="margin-form">'; foreach ($languages as $language) { $this->_html .= ' <div id="title_'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $id_lang_default ? 'block' : 'none').';float: left;"> <input type="text" name="title_'.$language['id_lang'].'" id="title_'.$language['id_lang'].'" size="30" value="'.(isset($slide->title[$language['id_lang']]) ? $slide->title[$language['id_lang']] : '').'"/> </div>'; } $this->_html .= $this->displayFlags($languages, $id_lang_default, $divLangName, 'title', true); $this->_html .= '</div><br /><br />'; /* URL */ $this->_html .= '<label>'.$this->l('URL:').' * </label><div class="margin-form">'; foreach ($languages as $language) { $this->_html .= ' <div id="url_'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $id_lang_default ? 'block' : 'none').';float: left;"> <input type="text" name="url_'.$language['id_lang'].'" id="url_'.$language['id_lang'].'" size="30" value="'.(isset($slide->url[$language['id_lang']]) ? $slide->url[$language['id_lang']] : '').'"/> </div>'; } $this->_html .= $this->displayFlags($languages, $id_lang_default, $divLangName, 'url', true); $this->_html .= '</div><br /><br />'; /* Legend */ $this->_html .= '<label>'.$this->l('Legend:').' * </label><div class="margin-form">'; foreach ($languages as $language) { $this->_html .= ' <div id="legend_'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $id_lang_default ? 'block' : 'none').';float: left;"> <input type="text" name="legend_'.$language['id_lang'].'" id="legend_'.$language['id_lang'].'" size="30" value="'.(isset($slide->legend[$language['id_lang']]) ? $slide->legend[$language['id_lang']] : '').'"/> </div>'; } $this->_html .= $this->displayFlags($languages, $id_lang_default, $divLangName, 'legend', true); $this->_html .= '</div><br /><br />'; /* Description */ $this->_html .= ' <label>'.$this->l('Description:').' </label> <div class="margin-form">'; foreach ($languages as $language) { $this->_html .= '<div id="description_'.$language['id_lang'].'" style="display: '.($language['id_lang'] == $id_lang_default ? 'block' : 'none').';float: left;"> <textarea name="description_'.$language['id_lang'].'" rows="10" cols="29">'.(isset($slide->description[$language['id_lang']]) ? $slide->description[$language['id_lang']] : '').'</textarea> </div>'; } $this->_html .= $this->displayFlags($languages, $id_lang_default, $divLangName, 'description', true); $this->_html .= '</div><div class="clear"></div><br />'; /* Active */ $this->_html .= ' <label for="active_on">'.$this->l('Active:').'</label> <div class="margin-form"> <img src="../img/admin/enabled.gif" alt="Yes" title="Yes" /> <input type="radio" name="active_slide" id="active_on" '.(($slide && (isset($slide->active) && (int)$slide->active == 0)) ? '' : 'checked="checked" ').' value="1" /> <label class="t" for="active_on">'.$this->l('Yes').'</label> <img src="../img/admin/disabled.gif" alt="No" title="No" style="margin-left: 10px;" /> <input type="radio" name="active_slide" id="active_off" '.(($slide && (isset($slide->active) && (int)$slide->active == 0)) ? 'checked="checked" ' : '').' value="0" /> <label class="t" for="active_off">'.$this->l('No').'</label> </div>'; /* Save */ $this->_html .= ' <p class="center"> <input type="submit" class="button" name="submitSlide" value="'.$this->l('Save').'" /> <a class="button" style="position:relative; padding:3px 3px 4px 3px; top:1px" href="'.AdminController::$currentIndex.'&configure='.$this->name.'&token='.Tools::getAdminTokenLite('AdminModules').'">'.$this->l('Cancel').'</a> </p>'; /* End of fieldset & form */ $this->_html .= ' <p>*'.$this->l('Required fields').'</p> </fieldset> </form>'; } private function _postValidation() { $errors = array(); /* Validation for Slider configuration */ if (Tools::isSubmit('submitSlider')) { if (!Validate::isInt(Tools::getValue('HOMESLIDER_SPEED')) || !Validate::isInt(Tools::getValue('HOMESLIDER_PAUSE')) || !Validate::isInt(Tools::getValue('HOMESLIDER_WIDTH')) || !Validate::isInt(Tools::getValue('HOMESLIDER_HEIGHT'))) $errors[] = $this->l('Invalid values'); } /* Validation for status */ elseif (Tools::isSubmit('changeStatus')) { if (!Validate::isInt(Tools::getValue('id_slide'))) $errors[] = $this->l('Invalid slide'); } /* Validation for Slide */ elseif (Tools::isSubmit('submitSlide')) { /* Checks state (active) */ if (!Validate::isInt(Tools::getValue('active_slide')) || (Tools::getValue('active_slide') != 0 && Tools::getValue('active_slide') != 1)) $errors[] = $this->l('Invalid slide state'); /* Checks position */ if (!Validate::isInt(Tools::getValue('position')) || (Tools::getValue('position') < 0)) $errors[] = $this->l('Invalid slide position'); /* If edit : checks id_slide */ if (Tools::isSubmit('id_slide')) { if (!Validate::isInt(Tools::getValue('id_slide')) && !$this->slideExists(Tools::getValue('id_slide'))) $errors[] = $this->l('Invalid id_slide'); } /* Checks title/url/legend/description/image */ $languages = Language::getLanguages(false); foreach ($languages as $language) { if (Tools::strlen(Tools::getValue('title_'.$language['id_lang'])) > 255) $errors[] = $this->l('The title is too long.'); if (Tools::strlen(Tools::getValue('legend_'.$language['id_lang'])) > 255) $errors[] = $this->l('The legend is too long.'); if (Tools::strlen(Tools::getValue('url_'.$language['id_lang'])) > 255) $errors[] = $this->l('The URL is too long.'); if (Tools::strlen(Tools::getValue('description_'.$language['id_lang'])) > 4000) $errors[] = $this->l('The description is too long.'); if (Tools::strlen(Tools::getValue('url_'.$language['id_lang'])) > 0 && !Validate::isUrl(Tools::getValue('url_'.$language['id_lang']))) $errors[] = $this->l('The URL format is not correct.'); if (Tools::getValue('image_'.$language['id_lang']) != null && !Validate::isFileName(Tools::getValue('image_'.$language['id_lang']))) $errors[] = $this->l('Invalid filename'); if (Tools::getValue('image_old_'.$language['id_lang']) != null && !Validate::isFileName(Tools::getValue('image_old_'.$language['id_lang']))) $errors[] = $this->l('Invalid filename'); } /* Checks title/url/legend/description for default lang */ $id_lang_default = (int)Configuration::get('PS_LANG_DEFAULT'); if (Tools::strlen(Tools::getValue('title_'.$id_lang_default)) == 0) $errors[] = $this->l('The title is not set.'); if (Tools::strlen(Tools::getValue('legend_'.$id_lang_default)) == 0) $errors[] = $this->l('The legend is not set.'); if (Tools::strlen(Tools::getValue('url_'.$id_lang_default)) == 0) $errors[] = $this->l('The URL is not set.'); if (!Tools::isSubmit('has_picture') && (!isset($_FILES['image_'.$id_lang_default]) || empty($_FILES['image_'.$id_lang_default]['tmp_name']))) $errors[] = $this->l('The image is not set.'); if (Tools::getValue('image_old_'.$id_lang_default) && !Validate::isFileName(Tools::getValue('image_old_'.$id_lang_default))) $errors[] = $this->l('The image is not set.'); } /* Validation for deletion */ elseif (Tools::isSubmit('delete_id_slide') && (!Validate::isInt(Tools::getValue('delete_id_slide')) || !$this->slideExists((int)Tools::getValue('delete_id_slide')))) $errors[] = $this->l('Invalid id_slide'); /* Display errors if needed */ if (count($errors)) { $this->_html .= $this->displayError(implode('<br />', $errors)); return false; } /* Returns if validation is ok */ return true; } private function _postProcess() { $errors = array(); /* Processes Slider */ if (Tools::isSubmit('submitSlider')) { $res = Configuration::updateValue('HOMESLIDER_WIDTH', (int)Tools::getValue('HOMESLIDER_WIDTH')); $res &= Configuration::updateValue('HOMESLIDER_HEIGHT', (int)Tools::getValue('HOMESLIDER_HEIGHT')); $res &= Configuration::updateValue('HOMESLIDER_SPEED', (int)Tools::getValue('HOMESLIDER_SPEED')); $res &= Configuration::updateValue('HOMESLIDER_PAUSE', (int)Tools::getValue('HOMESLIDER_PAUSE')); $res &= Configuration::updateValue('HOMESLIDER_LOOP', (int)Tools::getValue('HOMESLIDER_LOOP')); $this->clearCache(); if (!$res) $errors[] = $this->displayError($this->l('The configuration could not be updated.')); $this->_html .= $this->displayConfirmation($this->l('Configuration updated')); } /* Process Slide status */ elseif (Tools::isSubmit('changeStatus') && Tools::isSubmit('id_slide')) { $slide = new HomeSlide((int)Tools::getValue('id_slide')); if ($slide->active == 0) $slide->active = 1; else $slide->active = 0; $res = $slide->update(); $this->clearCache(); $this->_html .= ($res ? $this->displayConfirmation($this->l('Configuration updated')) : $this->displayError($this->l('The configuration could not be updated.'))); } /* Processes Slide */ elseif (Tools::isSubmit('submitSlide')) { /* Sets ID if needed */ if (Tools::getValue('id_slide')) { $slide = new HomeSlide((int)Tools::getValue('id_slide')); if (!Validate::isLoadedObject($slide)) { $this->_html .= $this->displayError($this->l('Invalid id_slide')); return; } } else $slide = new HomeSlide(); /* Sets position */ $slide->position = (int)Tools::getValue('position'); /* Sets active */ $slide->active = (int)Tools::getValue('active_slide'); /* Sets each langue fields */ $languages = Language::getLanguages(false); foreach ($languages as $language) { $slide->title[$language['id_lang']] = Tools::getValue('title_'.$language['id_lang']); $slide->url[$language['id_lang']] = Tools::getValue('url_'.$language['id_lang']); $slide->legend[$language['id_lang']] = Tools::getValue('legend_'.$language['id_lang']); $slide->description[$language['id_lang']] = Tools::getValue('description_'.$language['id_lang']); /* Uploads image and sets slide */ $type = strtolower(substr(strrchr($_FILES['image_'.$language['id_lang']]['name'], '.'), 1)); $imagesize = array(); $imagesize = @getimagesize($_FILES['image_'.$language['id_lang']]['tmp_name']); if (isset($_FILES['image_'.$language['id_lang']]) && isset($_FILES['image_'.$language['id_lang']]['tmp_name']) && !empty($_FILES['image_'.$language['id_lang']]['tmp_name']) && !empty($imagesize) && in_array(strtolower(substr(strrchr($imagesize['mime'], '/'), 1)), array('jpg', 'gif', 'jpeg', 'png')) && in_array($type, array('jpg', 'gif', 'jpeg', 'png'))) { $temp_name = tempnam(_PS_TMP_IMG_DIR_, 'PS'); $salt = sha1(microtime()); if ($error = ImageManager::validateUpload($_FILES['image_'.$language['id_lang']])) $errors[] = $error; elseif (!$temp_name || !move_uploaded_file($_FILES['image_'.$language['id_lang']]['tmp_name'], $temp_name)) return false; elseif (!ImageManager::resize($temp_name, dirname(__FILE__).'/images/'.Tools::encrypt($_FILES['image_'.$language['id_lang']]['name'].$salt).'.'.$type, null, null, $type)) $errors[] = $this->displayError($this->l('An error occurred during the image upload process.')); if (isset($temp_name)) @unlink($temp_name); $slide->image[$language['id_lang']] = Tools::encrypt($_FILES['image_'.($language['id_lang'])]['name'].$salt).'.'.$type; } elseif (Tools::getValue('image_old_'.$language['id_lang']) != '') $slide->image[$language['id_lang']] = Tools::getValue('image_old_'.$language['id_lang']); } /* Processes if no errors */ if (!$errors) { /* Adds */ if (!Tools::getValue('id_slide')) { if (!$slide->add()) $errors[] = $this->displayError($this->l('The slide could not be added.')); } /* Update */ elseif (!$slide->update()) $errors[] = $this->displayError($this->l('The slide could not be updated.')); $this->clearCache(); } } /* Deletes */ elseif (Tools::isSubmit('delete_id_slide')) { $slide = new HomeSlide((int)Tools::getValue('delete_id_slide')); $res = $slide->delete(); $this->clearCache(); if (!$res) $this->_html .= $this->displayError('Could not delete'); else $this->_html .= $this->displayConfirmation($this->l('Slide deleted')); } /* Display errors if needed */ if (count($errors)) $this->_html .= $this->displayError(implode('<br />', $errors)); elseif (Tools::isSubmit('submitSlide') && Tools::getValue('id_slide')) $this->_html .= $this->displayConfirmation($this->l('Slide updated')); elseif (Tools::isSubmit('submitSlide')) $this->_html .= $this->displayConfirmation($this->l('Slide added')); } private function _prepareHook() { if (!$this->isCached('homeslider.tpl', $this->getCacheId())) { $slider = array( 'width' => Configuration::get('HOMESLIDER_WIDTH'), 'height' => Configuration::get('HOMESLIDER_HEIGHT'), 'speed' => Configuration::get('HOMESLIDER_SPEED'), 'pause' => Configuration::get('HOMESLIDER_PAUSE'), 'loop' => Configuration::get('HOMESLIDER_LOOP'), ); $slides = $this->getSlides(true); if (!$slides) return false; $this->smarty->assign('homeslider_slides', $slides); $this->smarty->assign('homeslider', $slider); } return true; } public function hookdisplayTop() { if(!$this->_prepareHook()) return; // Check if not a mobile theme if ($this->context->getMobileDevice() != false) return false; $this->context->controller->addJS($this->_path.'js/jquery.bxSlider.min.js'); $this->context->controller->addCSS($this->_path.'bx_styles.css'); $this->context->controller->addJS($this->_path.'js/homeslider.js'); return $this->display(__FILE__, 'homeslider.tpl'); } public function hookDisplayHome() { if(!$this->_prepareHook()) return; // Check if not a mobile theme if ($this->context->getMobileDevice() != false) return false; $this->context->controller->addJS($this->_path.'js/jquery.bxSlider.min.js'); $this->context->controller->addCSS($this->_path.'bx_styles.css'); $this->context->controller->addJS($this->_path.'js/homeslider.js'); return $this->display(__FILE__, 'homeslider.tpl', $this->getCacheId()); } public function hookTop() { $this->context->controller->addJS($this->_path.'js/jquery.bxSlider.min.js'); $this->context->controller->addCSS($this->_path.'bx_styles.css'); $this->context->controller->addJS($this->_path.'js/homeslider.js'); return $this->display(__FILE__, 'homeslider1.tpl', $this->getCacheId()); } public function clearCache() { $this->_clearCache('homeslider.tpl'); } public function hookActionShopDataDuplication($params) { Db::getInstance()->execute(' INSERT IGNORE INTO '._DB_PREFIX_.'homeslider (id_homeslider_slides, id_shop) SELECT id_homeslider_slides, '.(int)$params['new_id_shop'].' FROM '._DB_PREFIX_.'homeslider WHERE id_shop = '.(int)$params['old_id_shop']); $this->clearCache(); } public function headerHTML() { if (Tools::getValue('controller') != 'AdminModules' && Tools::getValue('configure') != $this->name) return; $this->context->controller->addJqueryUI('ui.sortable'); /* Style & js for fieldset 'slides configuration' */ $html = ' <style> #slides li { list-style: none; margin: 0 0 4px 0; padding: 10px; background-color: #F4E6C9; border: #CCCCCC solid 1px; color:#000; } </style> <script type="text/javascript" src="'.__PS_BASE_URI__.'js/jquery/jquery-ui.will.be.removed.in.1.6.js"></script> <script type="text/javascript"> $(function() { var $mySlides = $("#slides"); $mySlides.sortable({ opacity: 0.6, cursor: "move", update: function() { var order = $(this).sortable("serialize") + "&action=updateSlidesPosition"; $.post("'._PS_BASE_URL_.__PS_BASE_URI__.'modules/'.$this->name.'/ajax_'.$this->name.'.php?secure_key='.$this->secure_key.'", order); } }); $mySlides.hover(function() { $(this).css("cursor","move"); }, function() { $(this).css("cursor","auto"); }); }); </script>'; return $html; } public function getNextPosition() { $row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' SELECT MAX(hss.`position`) AS `next_position` FROM `'._DB_PREFIX_.'homeslider_slides` hss, `'._DB_PREFIX_.'homeslider` hs WHERE hss.`id_homeslider_slides` = hs.`id_homeslider_slides` AND hs.`id_shop` = '.(int)$this->context->shop->id ); return (++$row['next_position']); } public function getSlides($active = null) { $this->context = Context::getContext(); $id_shop = $this->context->shop->id; $id_lang = $this->context->language->id; return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' SELECT hs.`id_homeslider_slides` as id_slide, hssl.`image`, hss.`position`, hss.`active`, hssl.`title`, hssl.`url`, hssl.`legend`, hssl.`description` FROM '._DB_PREFIX_.'homeslider hs LEFT JOIN '._DB_PREFIX_.'homeslider_slides hss ON (hs.id_homeslider_slides = hss.id_homeslider_slides) LEFT JOIN '._DB_PREFIX_.'homeslider_slides_lang hssl ON (hss.id_homeslider_slides = hssl.id_homeslider_slides) WHERE (id_shop = '.(int)$id_shop.') AND hssl.id_lang = '.(int)$id_lang. ($active ? ' AND hss.`active` = 1' : ' ').' ORDER BY hss.position'); } public function displayStatus($id_slide, $active) { $title = ((int)$active == 0 ? $this->l('Disabled') : $this->l('Enabled')); $img = ((int)$active == 0 ? 'disabled.gif' : 'enabled.gif'); $html = '<a href="'.AdminController::$currentIndex. '&configure='.$this->name.' &token='.Tools::getAdminTokenLite('AdminModules').' &changeStatus&id_slide='.(int)$id_slide.'" title="'.$title.'"><img src="'._PS_ADMIN_IMG_.''.$img.'" alt="" /></a>'; return $html; } public function slideExists($id_slide) { $req = 'SELECT hs.`id_homeslider_slides` as id_slide FROM `'._DB_PREFIX_.'homeslider` hs WHERE hs.`id_homeslider_slides` = '.(int)$id_slide; $row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow($req); return ($row); } } Link to comment Share on other sites More sharing options...
vekia Posted June 3, 2013 Share Posted June 3, 2013 no coś tu jest nie tak, to co wkleiłeś wysypuję sie w okolicy linii 190 ... możesz cały moduł spakować? i podesłać? Link to comment Share on other sites More sharing options...
konrad1cs Posted June 3, 2013 Author Share Posted June 3, 2013 Jasne, tutaj masz link. On nie był w ogóle modyfikowany, chciał bym alby się tylko wyświetlał w top. Link to comment Share on other sites More sharing options...
konrad1cs Posted June 3, 2013 Author Share Posted June 3, 2013 Co ciekawe, teraz patrzyłem jak zachowuje się sklep i tak wyżej wspomniałem, moduł sie zainstalował i pokazywał mi się w źródle, a teraz wszedłem na produkty które sobie dorzuciłem do koszyka i nie dość, że sie pojawił slider to w dodatku zaszwankował mój wygląd, ale to już do innego tematu się odnoszę Link to comment Share on other sites More sharing options...
vekia Posted June 3, 2013 Share Posted June 3, 2013 dzięki za link, dopiero dotarłem do Twojej wiadomości btw. sprawdzam Twój sklep i strona produktu wygląda identycznie jak wcześniej... Link to comment Share on other sites More sharing options...
konrad1cs Posted June 3, 2013 Author Share Posted June 3, 2013 już pomijając złą szerokość panelu do kupowania, bo nie ustawiałem go jeszcze w css, ale na chrome wyświetliło mi go ;> Tutaj jak to wygląda, a tutaj jak wygląda wraz ze źródłem. Ale nie ma co gdybać tym, bo tak czy siak nie zmieni to faktu, że się nie wyświetla prawidłowo tam gdzie ma się wyświetlać . Jak znajdziesz chwileczkę czasu, proszę popatrz na ten slider. Link to comment Share on other sites More sharing options...
vekia Posted June 3, 2013 Share Posted June 3, 2013 już popatrzyłem, wysypywał się strasznie dlatego zrezygnowałem z "naprawy" i zmieniłem oryginał. zainstaluj go w sklepie: http://www.sendspace.pl/file/bf32ba2f5361afdc6391c64 pozostaje jedynie dopasować style css (tego nie ruszałem, jedynie PHP) Link to comment Share on other sites More sharing options...
konrad1cs Posted June 4, 2013 Author Share Posted June 4, 2013 Nie zdążyłem wczoraj Ci podziękować. Jestem bardzo wdzięczny, dziękuję Link to comment Share on other sites More sharing options...
vekia Posted June 4, 2013 Share Posted June 4, 2013 Jakby były jakieś problemy ze stylami CSS to wiesz ... nie krępuj się Link to comment Share on other sites More sharing options...
konrad1cs Posted June 4, 2013 Author Share Posted June 4, 2013 Powiedzmy, że w html, css jestem biegły ;> Link to comment Share on other sites More sharing options...
mudol Posted April 29, 2014 Share Posted April 29, 2014 Witam, a ktos podpowie jak na stronie na sliderze wyswietlic tytul i opis ktory jest edytowalny w sliderze ? Standardowo chyba nie jest wyswietlany? Link to comment Share on other sites More sharing options...
maciejonek Posted May 1, 2014 Share Posted May 1, 2014 Witam, na stronie http://sklep.meblezrattanu.com.pl/ w homesliderze jest dziwny przeskok między ostatnim a pierwszym, nie mogę zlokalizować błędu. Wymiary banneru 1170x350, może chodzić o wysokość? Jak to naprawić? pomocy! Link to comment Share on other sites More sharing options...
Yabber Posted May 2, 2014 Share Posted May 2, 2014 <div class="bx-wrapper" style="width:1170px; position:relative;"> <div class="bx-window" style="position:relative; overflow:hidden; width:1170px;"> <ul id="homeslider" style="width: 999999px; position: relative; left: -1170px;"> <li style="width: 1170px; float: left; list-style: none outside none;"> <li class="pager" style="width: 1170px; float: left; list-style: none outside none;"> <li class="pager" style="width: 1170px; float: left; list-style: none outside none;"> <li class="pager" style="width: 1170px; float: left; list-style: none outside none;"> <li class="pager" style="width: 1170px; float: left; list-style: none outside none;"> <li class="pager" style="width: 1170px; float: left; list-style: none outside none;"> <li style="width: 1170px; float: left; list-style: none outside none;"> </ul> </div> <div class="bx-pager"> </div> Pierwszy i ostatni element listy nie ma zadeklarowanej klasy "pager". Dlatego tak podskakuje. Link to comment Share on other sites More sharing options...
gep Posted June 19, 2014 Share Posted June 19, 2014 mam pytanie... jak zrobić taki "slider" kafelkowe menu jak na stronie http://formi.pl/sklep/index.php nie wiem czy to moduł.... ewentulanie gdzie szukac... dziękuję za góry za info... Link to comment Share on other sites More sharing options...
Recommended Posts