Jump to content

Recommended Posts

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

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

można to zrobić na dwa sposoby.

  1. 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ć :D )
  2. 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

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

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

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

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

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

  • 10 months later...
<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

  • 1 month later...
×
×
  • Create New...