Автор Тема: Добавление товара  (Прочитано 1376 раз)

19 Декабрь 2015, 19:07:21
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте
Престашоп версия 1.6.0.9, установили шаблон
подскажите в чем может быть проблема? при добавлении товара выводит вот эту ошибку :

Warning: Cannot modify header information - headers already sent by (output started at /home/x/xiolin/i-kros/public_html/modules/postabcateslider1/postabcateslider1.php:2) in /home/x/xiolin/i-kros/public_html/classes/controller/AdminController.php on line 1432
19 Декабрь 2015, 19:25:35
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 16676
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Это не ошибка, предупреждение.
У вас продубоирован модуль postabcateslider1, но сделано это с ошибкой. Нужно или удалить модуль postabcateslider1, или найти в нем причину предупреждения.
19 Декабрь 2015, 19:33:19
Ответ #2
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
а что значит продублирован? и где именно искать причину предупреждения?
19 Декабрь 2015, 19:45:00
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 16676
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Основной модуль postabcateslider.
Дублировать, значит добавть такой же, изменив название postabcateslider1.
Искать в модуле postabcateslider1. Включите показ ошибок в prestashop.
http://prestashop-forum.ru/index.php/topic,1304.0.html
Это может показать в каком файле нужно искать.
19 Декабрь 2015, 19:49:59
Ответ #4
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Когда включаешь модуль , который показывает ошибки он показывает вот это Warning: Cannot modify header information — headers already sent by (output started at /home/x/xiolin/i-kros/public_html/modules/postabcateslider1/postabcateslider1.php:2) in /home/x/xiolin/i-kros/public_html/classes/controller/AdminController.php on line 1432

При выключенном модуле - при добавлении товара , когда нажимаешь Сохранить, просто пустая белая страница
20 Декабрь 2015, 12:17:54
Ответ #5
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86694
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Если тема платная, напишите в тех поддержку, пусть исправят ошибку.
Если бесплатная, то найдите другую. Зачем использовать тему которая сделанна с ошибками?

Если хотите сами исправлять ошибки, то включайте показ ошибок, отключайте кеширование. Зайдите в папку модуля postabcateslider1, проверьте замещает он контроллер AdminController.php (в установочной функции и наличие одноименного контроллера в папке /override/controllers/ ).
20 Декабрь 2015, 12:25:15
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Пересохраните файлы модуля в кодировке UTF-8 без BOM. В основном эта ошибка связанна с неправльной кодировкой файлов.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
20 Декабрь 2015, 20:38:03
Ответ #7
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Всем спасибо за ответы
Но проблема не решилась
21 Декабрь 2015, 11:01:10
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 1285
  • Репутация: +13/-1
  • Сообщество PrestaShop
    • Просмотр профиля
При заполнении полей в модуле не используйте теги html.
21 Декабрь 2015, 19:28:54
Ответ #9
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Если тема платная, напишите в тех поддержку, пусть исправят ошибку.
Если бесплатная, то найдите другую. Зачем использовать тему которая сделанна с ошибками?

Если хотите сами исправлять ошибки, то включайте показ ошибок, отключайте кеширование. Зайдите в папку модуля postabcateslider1, проверьте замещает он контроллер AdminController.php (в установочной функции и наличие одноименного контроллера в папке /override/controllers/ ).

а как проверить замещает ли он контроллер AdminController.php?
21 Декабрь 2015, 19:30:15
Ответ #10
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вот код postabcateslider1 , не могу найти в чем причина
<?php 
if (!defined('_PS_VERSION_')) 
exit; 

class 
postabcateslider1 extends Module { 
public function 
__construct() { 
$this->name = 'postabcateslider1'; 
$this->tab = 'front_office_features'; 
$this->version = '1.5'; 
$this->author = 'posthemes'; 
$this->_html = ''; 
$this->spacer_size ='5'; 
$this->_postErrors =array(); 
$this->displayName = $this->l('Category Tabs Slider 1'); 
$this->description = $this->l('Category Tabs Slider 1'); 
parent :: __construct(); 
} 

public function 
install() { 
Configuration::updateValue($this->name . '_p_on_row', 5); 
Configuration::updateValue($this->name . '_p_limit', 8); 
Configuration::updateValue($this->name . '_tab_effect', 'wiggle'); 
Configuration::updateValue($this->name . '_title', $this->l('Cateogry Tabs')); 

$arrayDefault = array('2','3'); 
$cateDefault = implode(',',$arrayDefault); 
Configuration::updateGlobalValue($this->name . '_list_cate',$cateDefault); 

return 
parent :: install() 
&& 
$this->registerHook('home') 
&& 
$this->registerHook('top') 
&& 
$this->registerHook('header') 
&& 
$this->registerHook('imgmore') 
&& 
$this->registerHook('tabCategoryslider1') 
&& 
$this->registerHook('actionOrderStatusPostUpdate') 
&& 
$this->registerHook('addproduct') 
&& 
$this->registerHook('updateproduct') 
&& 
$this->registerHook('deleteproduct'); 
} 

public function 
uninstall() { 
$this->_clearCache('postabcateslider1.tpl'); 
return 
parent::uninstall(); 
} 
public function 
setMedia() 
{ 
parent::setMedia(); 
if (
count($this->errors)) 
return ; 

if (!
$this->useMobileTheme()) 
{ 

$this->addJqueryPlugin('bxslider'); 

} 
} 
public function 
hookHeader($params){ 
// $this->context->controller->addCSS(($this->_path).'postabcateslider1.css', 'all'); 
$this->context->controller->addCSS(($this->_path).'animate.delay.css', 'all'); 
$this->context->controller->addCSS(($this->_path).'animate.min.css', 'all'); 
} 
// Hook Home 
public function hookTabCategoryslider1($params) { 
$nb = Configuration::get($this->name . '_p_limit'); 
$product_on_row = Configuration::get($this->name . '_p_on_row'); 
$arrayCategory = array(); 
$catSelected = Configuration::get($this->name . '_list_cate'); 
$cateArray = explode(',', $catSelected); 
$id_lang = (int) Context::getContext()->language->id; 
$id_shop = (int) Context::getContext()->shop->id; 
$arrayProductCate = array(); 

foreach(
$cateArray as $id_category) { 
$category = new Category((int) $id_category, (int) $id_lang, (int) $id_shop); 
$child_cate = Category::getChildren($id_category,$id_lang); 
$html = ''; 
$files = scandir(_PS_CAT_IMG_DIR_); 
if (
count($files) > 0) 
{ 
$k=0; 
$html .= '<div class="category-thumbnail">'; 
foreach (
$files as $value=>$file){ 
// $test = @explode("_",$file); 
if (preg_match('/'.$id_category.'-([0-9])?_thumb.jpg/i',substr($file,0)) === 1){ 
if (
preg_match('/'.$id_category.'-([0-9])?_thumb.jpg/i',substr($file,1))!=1){ 
$k++; 
$html .= '<div class ="thumb'.$k.'"><img src="'.$this->context->link->getMediaLink(_THEME_CAT_DIR_.$file).'" 
class="imgm" alt="No image" /></div>'
; 
}} 
} 
// $k++; 
$html .= '</div>'; 
} 
$categoryProducts = $category->getProducts($this->context->language->id, 0,($nb ? $nb : 5)); 
$arrayProductCate[] = array('id' => $id_category, 'name'=> $category->name, 'product' => $categoryProducts, 'child_cate'=>$child_cate,'html'=>$html); 
} 

$this->smarty->assign(array( 
'productCates' => $arrayProductCate, 
'child_cate' =>$child_cate, 
'html'=>$html, 
'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'), 
'homeSize' => Image::getSize(ImageType::getFormatedName('home')), 
'product_on_row' => $product_on_row, 
'tab_effect' => Configuration::get($this->name . '_tab_effect'), 
'title' => Configuration::get($this->name . '_title'), 
)); 
return 
$this->display(__FILE__, 'postabcateslider1.tpl'); 
}
19:26:27
private function 
_installHookCustomer(){ 
$hookspos = array( 
'tabCategory', 
); 
foreach( 
$hookspos as $hook ){ 
if( 
Hook::getIdByName($hook) ){ 

} else { 
$new_hook = new Hook(); 
$new_hook->name = pSQL($hook); 
$new_hook->title = pSQL($hook); 
$new_hook->add(); 
$id_hook = $new_hook->id; 
} 
} 
return 
true; 
} 

public function 
getContent() { 
$output = '<h2>' . $this->displayName . '</h2>'; 
if (
Tools::isSubmit('submitPosTabCate')) { 
if (!
sizeof($this->_postErrors)) 
$this->_postProcess(); 
else { 
foreach (
$this->_postErrors AS $err) { 
$this->_html .= '<div class="alert error">' . $err . '</div>'; 
} 
} 
} 
return 
$output . $this->_displayForm(); 
} 

public function 
getSelectOptionsHtml($options = NULL, $name = NULL, $selected = NULL) { 
$html = ""; 
$html .='<select name =' . $name . ' style="width:130px">'; 
if (
count($options) > 0) { 
foreach (
$options as $key => $val) { 
if (
trim($key) == trim($selected)) { 
$html .='<option value=' . $key . ' selected="selected">' . $val . '</option>'; 
} else { 
$html .='<option value=' . $key . '>' . $val . '</option>'; 
} 
} 
} 
$html .= '</select>'; 
return 
$html; 
} 

private function 
_postProcess() { 
if(
Tools::isSubmit('submitPosTabCate')){ 
Configuration::updateValue($this->name . '_list_cate', implode(',', Tools::getValue('list_cate'))); 
Configuration::updateValue($this->name . '_p_on_row', Tools::getValue('p_on_row')); 
Configuration::updateValue($this->name . '_p_limit', Tools::getValue('p_limit')); 
Configuration::updateValue($this->name . '_tab_effect', Tools::getValue('tab_effect')); 
Configuration::updateValue($this->name . '_title', Tools::getValue('title')); 
$this->_html.= $this->displayConfirmation($this->l('Settings updated successfully.')); 
} 
return 
$this->_html; 
} 

private function 
_displayForm(){ 

$tabEffect = array(); 
$tabEffect = array( 
'none' => 'None', 
'hinge' => 'Hinge', 
'flash' => 'Flash', 
'shake' => 'Shake', 
'bounce' => 'Bounce', 
'tada' => 'Tada' , 
'swing' => 'Swing', 
'wobble' => 'Wobble', 
'pulse' => 'Pulse', 
'flip' => 'Flip', 
'flipInX' => 'FlipInX', 
'flipInY' => 'FlipInY', 
'fadeIn' => 'FadeIn', 
'bounceInUp' => 'BounceInUp', 
'fadeInLeft' => 'FadeInLeft', 
'rollIn' => 'RollIn', 
'lightSpeedIn' => 'LightSpeedIn', 
'wiggle' => 'Wiggle', 
'rotateIn' => 'RotateIn', 
'rotateInUpLeft' => 'RotateInUpLeft', 
'rotateInUpRight' => 'RotateInUpRight' 

); 
$this->_html .= ' 
<form action="'
.$_SERVER['REQUEST_URI'].'" method="post"> 
<fieldset> 
<legend><img src="../img/admin/cog.gif" alt="" class="middle" />' 
. $this->l('Settings') . '</legend> 
<label>'
.$this->l('Effect Tab: ').'</label> 
<div class="margin-form">'
; 
$this->_html .= $this->getSelectOptionsHtml($tabEffect,'tab_effect', (Tools::getValue('tab_effect') ? Tools::getValue('tab_effect') : Configuration::get($this->name . '_tab_effect'))); 
$this->_html .=' 
</div>'
; 

$this->_html .= '<label>' . $this->l('Show Link/Label Category: ') . '</label>'; 
$this->_html .= '<div class="margin-form">'; 
$this->_html .= '<select multiple="multiple" name ="list_cate[]" style="width: 200px; height: 160px;">'; 
// BEGIN Categories 
$id_lang = (int) Context::getContext()->language->id; 
$this->getCategoryOption(1, (int) $id_lang, (int) Shop::getContextShopID()); 
$this->_html .= '</select> 
</div>'
; 
$this->_html .='<label>'.$this->l('Products on Row: ').'</label> 
<div class="margin-form"> 
<input type = "text" name="p_on_row" value ='
. (Tools::getValue('p_on_row')?Tools::getValue('p_on_row'): Configuration::get($this->name.'_p_on_row')).' ></input> 
</div> 
<label>'
.$this->l('Products Limit: ').'</label> 
<div
class="margin-form"> 
<input type = "text" name="p_limit" value ='
.(Tools::getValue('p_limit')?Tools::getValue('p_limit'): Configuration::get($this->name.'_p_limit')).' ></input> 
</div> 
<input type="submit" name="submitPosTabCate" value="'
.$this->l('Update').'" class="button" /> 
</fieldset> 
</form>'
; 
return 
$this->_html; 
} 


private function 
getCategoryOption($id_category = 1, $id_lang = false, $id_shop = false, $recursive = true) { 
$id_lang = $id_lang ? (int) $id_lang : (int) Context::getContext()->language->id; 
$category = new Category((int) $id_category, (int) $id_lang, (int) $id_shop); 
if (
is_null($category->id)) 
return; 
$spacer = NULL; 
if (
$recursive) { 
$children = Category::getChildren((int) $id_category, (int) $id_lang, true, (int) $id_shop); 
$spacer = str_repeat('&nbsp;', $this->spacer_size * (int) $category->level_depth); 
} 

$shop = (object) Shop::getShop((int) $category->getShopID()); 
$cateCurrent = Configuration::get($this->name . '_list_cate'); 
$cateCurrent = explode(',', $cateCurrent); 
$value = (int) $category->id; 
if (
in_array($value, $cateCurrent)) { 
$this->_html .= '<option value="' . (int) $category->id . '" selected ="selected">' . (isset($spacer) ? $spacer : '') . $category->name . '</option>'; 
} else { 
$this->_html .= '<option value="' . (int) $category->id . '">' . (isset($spacer) ? $spacer : '') . $category->name . '</option>'; 
} 
if (isset(
$children) && count($children)) 
foreach (
$children as $child) { 
$this->getCategoryOption((int) $child['id_category'], (int) $id_lang, (int) $child['id_shop']); 
} 
} 

} 

?>
22 Декабрь 2015, 12:11:17
Ответ #11
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86694
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
При заполнении полей в модуле не используйте теги html.
Как вы заполняете поля модуля? Без html/css/js кода?