Перейти к содержанию
Официальный форум поддержки Simpla

MaLeN

Пользователь
  • Публикаций

    76
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные MaLeN

  1. 15 минут назад, chocolate_moles сказал:

    Ну например у вас могут быть не настроены права пользователя бд или включен строгий режим.

    Сделайте запрос вручную и посмотрите ошибку

    В ручную работает запрос, ка кбы редактировать, удалять могу, а добавлять категории, товары, блог не могу

  2. Добрый день, подскажите пожалуйста, может кто сталкивался с такой вот штукой. Когда развернутый SimplaCMS на OpenServer всё работает (в плане бэкенда). Можно добавлять, удалять контент. НО когда перекидываешь на другой OSPanel где настроен как виртуальный сервер, где уже 5 сайтов работают в штатном режиме и весь бэкенд работает, то SimplaCMS нельзя добавлять информацию через админку. Пишет что Добавлено, но по факту нету ну и ясно в mysqli нету. В двух словах, всё можно делать, кроме добавления. Кто нить с таким встречался?

  3. Спасибо за подсказку) Сразу нашел в чем проблема) надо добавить еще в BrandAdmin.php код $brand->parent_id = $this->request->post('parent_id', 'integer');

    Можете описать по папкам что да куда?

  4. так делайте проверку на то что выводит у вас в div e

    Да наверное. Дело в том, в настройках сделал поле, при вводе там текста в шаблоне выводит текс или что введу, а если текст (оставить пустым) хочу автоматом тогда выводился текс "не заполнен" 

  5. в php  info  какое значение suhosin.executor.include.max_traversal ?

     

     

    пробывали на поддомене еще развернуть тестовую симплу так же?

    есть только

    allow_url_fopen = Off
    allow_url_include = Off
    asp_tags = Off
    display_errors = Off
    enable_dl = Off
    file_uploads = On
    max_execution_time = 30
    max_input_time = 60
    max_input_vars = 1000
    memory_limit = 128M
    session.save_path = "/tmp"
    upload_max_filesize = 50M
    
  6. Скорее всего дело о tiny mce, нужно гуглить tiny mce suhosin path...

    Вот так у меня

     

    SMImage: не работает а) Новая папка, б) Загрузить ... с компьютера, в) обновить

     

    Права доступа:

    - files 777

    ----uploads 777

     

    Пробовал через фтп, загружать пару фото, в папку uploads, потом смотреть на них через этот менеджер - все ок.

     

    В вот, как только кликаю на изображения, в панеле инструментов:

    а) Новая папка,

    б) Загрузить ... с компьютера,

    в) обновить

     

    Вылетает заглушка с картинкой: icon_lock_128x128.png

     

    В других местах системы файлы грузятся исправно, превью создаются. Все ок.

     

    Как научить этот менеджер грузить файлы? (Какую еще информацю стоит сюда добавить, что бы еще больше описать картину?)

  7. Скорее всего дело о tiny mce, нужно гуглить tiny mce suhosin path...

    да скрин не залился чего то

    post-17157-0-49846900-1518364690.txt

     

    А что загружает, кто загружает, где загружает — это нам додумать предлагаете?

    post-17157-0-49846900-1518364690.txt
  8.  

    То нужно в php вставлять и будет работать лишь для одной категории. Куда проще так сделать: 

     

    в view/IndexView.php после:

    $this->design->assign('categories', $this->categories->get_categories_tree(array('visible' => 1)));
    

    добавляем:

    $this->design->assign('all_categories', $this->categories->get_categories());
    

    и теперь в шаблоне можно получать категории по иду таким способом: 

    {$all_categories[7]}
    

    Белый экран тогда и ошибки

     Object of class stdClass could not be converted to string in /Smarty/libs/sysplugins/smarty_internal_templatebase.php(165) : eval()'d code on line 154
    [11-Feb-2018 16:21:48 Europe/Moscow] PHP Catchable fatal error:  Object of class stdClass could not be converted to string in /compiled/enar/13e68c93245ebafc598fb5a21f8bb760dc3f4dea.file.header.tpl.php on line 154
    
  9. $cat = $this->categories->get_category(7);

    знал бы я куда это вставлять

     

     

    Файл products.tpl :

    {if $category->id == 5}
    {$wrapper = 'index2.tpl' scope=parent} {* Если нужна оболочка другая *}
    {include file='products2.tpl'} {* Шаблон для категории с АйДи = 5 *}
    {else}
    Код файла products.tpl
    {/if}
    
    <!-- Меню каталога -->
    			<div id="catalog_menu">
    					
    			{* Рекурсивная функция вывода дерева категорий *}
    			{function name=categories_tree}
    			{if $category->id == 1171}
    			<ul>
    			{foreach $categories as $c}
    				{* Показываем только видимые категории *}
    				{if $c->visible}
    					<li>
    						{if $c->image}<img src="{$config->categories_images_dir}{$c->image}" alt="{$c->name|escape}">{/if}
    						<a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}" data-category="{$c->id}">{$c->name|escape}</a>
    						{categories_tree categories=$c->subcategories}
    					</li>
    				{/if}
    			{/foreach}
    			</ul>
    			{/if}
    			{/function}
    			{categories_tree categories=$categories}
    			</div>
    			<!-- Меню каталога (The End)-->	
    

    Вот так вставляю не пашет((

  10.  

    Файл products.tpl :

    {if $category->id == 5}
    {$wrapper = 'index2.tpl' scope=parent} {* Если нужна оболочка другая *}
    {include file='products2.tpl'} {* Шаблон для категории с АйДи = 5 *}
    {else}
    Код файла products.tpl
    {/if}
    

    а как без оболочки без ничего, просто вывести 1 категорию отдельно?

  11. Добрый день, делаю переключение шаблонов пользовательская.

    Бралось но чего то пропало, вот тут 

    Сделал всё как там написано, всё работает.

     

    Но выдаёт ошибки

    PHP Warning:  session_start(): Cannot send session cookie - headers already sent by (output started at /home/XXX/public_html/XXX.by/index.php:1) in /home/XXX/public_html/XXX.by/index.php on line 16
    PHP Warning:  session_start(): Cannot send session cache limiter - headers already sent (output started at /home/XXX/public_html/XXX.by/index.php:1) in /home/XXX/public_html/XXX.by/index.php on line 16
    
    [04-Dec-2017 15:47:45 UTC] PHP Warning:  Cannot modify header information - headers already sent by (output started at /home/XXX/public_html/XXX.by/index.php:1) in /home/XXX/public_html/XXX.by/view/View.php on line 66
    [04-Dec-2017 15:47:45 UTC] PHP Warning:  Cannot modify header information - headers already sent by (output started at /home/XXX/public_html/XXX.by/index.php:1) in /home/XXX/public_html/XXX.by/api/Design.php on line 89
    

     

    api/Design.php

    <?php
    
    /**
     * Simpla CMS
     *
     * @copyright	2011 Denis Pikusov
     * @link		http://simplacms.ru
     * @author		Denis Pikusov
     *
     */
     
    require_once(dirname(__FILE__).'/'.'Simpla.php');
    require_once(dirname(dirname(__FILE__)).'/Smarty/libs/Smarty.class.php');
    
    class Design extends Simpla
    {
    	public $smarty;
    
    	public function __construct()
    	{
    		parent::__construct();
    
    		// Создаем и настраиваем Смарти
    		$this->smarty = new Smarty();
    		$this->smarty->compile_check = $this->config->smarty_compile_check;
    		$this->smarty->caching = $this->config->smarty_caching;
    		$this->smarty->cache_lifetime = $this->config->smarty_cache_lifetime;
    		$this->smarty->debugging = $this->config->smarty_debugging;
    		$this->smarty->error_reporting = E_ALL & ~E_NOTICE;
    
    		// Берем тему из настроек
    		$theme = $this->get_theme();
    		
    
    		$this->smarty->compile_dir = $this->config->root_dir.'/compiled/'.$theme;
    		$this->smarty->template_dir = $this->config->root_dir.'/design/'.$theme.'/html';		
    
    		// Создаем папку для скомпилированных шаблонов текущей темы
    		if(!is_dir($this->smarty->compile_dir))
    			mkdir($this->smarty->compile_dir, 0777);
    						
    		$this->smarty->cache_dir = 'cache';
    				
    		$this->smarty->registerPlugin('modifier', 'resize', array($this, 'resize_modifier'));		
    		$this->smarty->registerPlugin('modifier', 'token', array($this, 'token_modifier'));
    		$this->smarty->registerPlugin('modifier', 'plural', array($this, 'plural_modifier'));		
    		$this->smarty->registerPlugin('function', 'url', array($this, 'url_modifier'));		
    		$this->smarty->registerPlugin('modifier', 'first', array($this, 'first_modifier'));		
    		$this->smarty->registerPlugin('modifier', 'cut', array($this, 'cut_modifier'));		
    		$this->smarty->registerPlugin('modifier', 'date', array($this, 'date_modifier'));		
    		$this->smarty->registerPlugin('modifier', 'time', array($this, 'time_modifier'));		
    
    		if($this->config->smarty_html_minify)
    			$this->smarty->loadFilter('output', 'trimwhitespace');
    	}
    	
    	public function assign($var, $value)
    	{
    		return $this->smarty->assign($var, $value);
    	}
    
    	public function fetch($template)
    	{
    		// Передаем в дизайн то, что может понадобиться в нем
    		$this->design->assign('config',		$this->config);
    		$settings = $this->settings;
    		$settings->theme = $this->get_theme();
    		$this->design->assign('settings', $settings);
    		return $this->smarty->fetch($template);
    	}
    	
    	public function set_templates_dir($dir)
    	{
    		$this->smarty->template_dir = $dir;			
    	}
    
    	public function set_compiled_dir($dir)
    	{
    		$this->smarty->compile_dir = $dir;
    	}
    	
    	public function get_var($name)
    	{
    		return $this->smarty->getTemplateVars($name);
    	}
    	
    	public function set_theme($theme) {
        if(is_dir($this->config->root_dir.'/design/'.$theme.'/html')) {
            setcookie('theme', $theme, time()+60*60*24*30, "/");
            return $theme;
        }
        else
            return false;
    }
     
    public function get_theme() {
        if(!isset($_COOKIE['theme']) || !is_dir($this->config->root_dir.'/design/'.$_COOKIE['theme'].'/html'))
            $theme = $this->set_theme($this->settings->theme);
        else
            $theme = $_COOKIE['theme'];
     
        return $theme;
    }
     
    public function get_themes()
    {
        if($handle = opendir('design/')) {
            while(false !== ($file = readdir($handle)))
            { 
                if(is_dir('design/'.$file) && $file[0] != '.')
                {
                    unset($theme);
                    $theme->name = $file;
                    $themes[] = $theme; 
                } 
            }
            closedir($handle); 
            sort($themes);
        }
        return $themes;
    }  
    	
    	private function is_mobile_browser()
    	{
    
    		$user_agent = $_SERVER['HTTP_USER_AGENT']; 
    		$http_accept = isset($_SERVER['HTTP_ACCEPT'])?$_SERVER['HTTP_ACCEPT']:'';
    
    		if(eregi('iPad', $user_agent))
    			return false;
    		
    		if(stristr($user_agent, 'windows') && !stristr($user_agent, 'windows ce'))
    			return false;
    		
    		if(eregi('windows ce|iemobile|mobile|symbian|mini|wap|pda|psp|up.browser|up.link|mmp|midp|phone|pocket', $user_agent))
    			return true;
    	
    		if(stristr($http_accept, 'text/vnd.wap.wml') || stristr($http_accept, 'application/vnd.wap.xhtml+xml'))
    			return true;
    			
    		if(!empty($_SERVER['HTTP_X_WAP_PROFILE']) || !empty($_SERVER['HTTP_PROFILE']) || !empty($_SERVER['X-OperaMini-Features']) || !empty($_SERVER['UA-pixels']))
    			return true;
    	
    		$agents = array(
    		'acs-'=>'acs-',
    		'alav'=>'alav',
    		'alca'=>'alca',
    		'amoi'=>'amoi',
    		'audi'=>'audi',
    		'aste'=>'aste',
    		'avan'=>'avan',
    		'benq'=>'benq',
    		'bird'=>'bird',
    		'blac'=>'blac',
    		'blaz'=>'blaz',
    		'brew'=>'brew',
    		'cell'=>'cell',
    		'cldc'=>'cldc',
    		'cmd-'=>'cmd-',
    		'dang'=>'dang',
    		'doco'=>'doco',
    		'eric'=>'eric',
    		'hipt'=>'hipt',
    		'inno'=>'inno',
    		'ipaq'=>'ipaq',
    		'java'=>'java',
    		'jigs'=>'jigs',
    		'kddi'=>'kddi',
    		'keji'=>'keji',
    		'leno'=>'leno',
    		'lg-c'=>'lg-c',
    		'lg-d'=>'lg-d',
    		'lg-g'=>'lg-g',
    		'lge-'=>'lge-',
    		'maui'=>'maui',
    		'maxo'=>'maxo',
    		'midp'=>'midp',
    		'mits'=>'mits',
    		'mmef'=>'mmef',
    		'mobi'=>'mobi',
    		'mot-'=>'mot-',
    		'moto'=>'moto',
    		'mwbp'=>'mwbp',
    		'nec-'=>'nec-',
    		'newt'=>'newt',
    		'noki'=>'noki',
    		'opwv'=>'opwv',
    		'palm'=>'palm',
    		'pana'=>'pana',
    		'pant'=>'pant',
    		'pdxg'=>'pdxg',
    		'phil'=>'phil',
    		'play'=>'play',
    		'pluc'=>'pluc',
    		'port'=>'port',
    		'prox'=>'prox',
    		'qtek'=>'qtek',
    		'qwap'=>'qwap',
    		'sage'=>'sage',
    		'sams'=>'sams',
    		'sany'=>'sany',
    		'sch-'=>'sch-',
    		'sec-'=>'sec-',
    		'send'=>'send',
    		'seri'=>'seri',
    		'sgh-'=>'sgh-',
    		'shar'=>'shar',
    		'sie-'=>'sie-',
    		'siem'=>'siem',
    		'smal'=>'smal',
    		'smar'=>'smar',
    		'sony'=>'sony',
    		'sph-'=>'sph-',
    		'symb'=>'symb',
    		't-mo'=>'t-mo',
    		'teli'=>'teli',
    		'tim-'=>'tim-',
    		'tosh'=>'tosh',
    		'treo'=>'treo',
    		'tsm-'=>'tsm-',
    		'upg1'=>'upg1',
    		'upsi'=>'upsi',
    		'vk-v'=>'vk-v',
    		'voda'=>'voda',
    		'wap-'=>'wap-',
    		'wapa'=>'wapa',
    		'wapi'=>'wapi',
    		'wapp'=>'wapp',
    		'wapr'=>'wapr',
    		'webc'=>'webc',
    		'winw'=>'winw',
    		'winw'=>'winw',
    		'xda-'=>'xda-'
    		);
    		
    		if(!empty($agents[substr($_SERVER['HTTP_USER_AGENT'], 0, 4)]))
    	    	return true;
    	}	
    
    
    	public function resize_modifier($filename, $width=0, $height=0, $set_watermark=false)
    	{
    		$resized_filename = $this->image->add_resize_params($filename, $width, $height, $set_watermark);
    		$resized_filename_encoded = $resized_filename;
    		
    		if(substr($resized_filename_encoded, 0, 7) == 'http://')
    			$resized_filename_encoded = rawurlencode($resized_filename_encoded);
    
    		$resized_filename_encoded = rawurlencode($resized_filename_encoded);
    
    		return $this->config->root_url.'/'.$this->config->resized_images_dir.$resized_filename_encoded.'?'.$this->config->token($resized_filename);
    	}
    
    	public function token_modifier($text)
    	{
    		return $this->config->token($text);
    	}
    
    	public function url_modifier($params)
    	{
    		if(is_array(reset($params)))
    			return $this->request->url(reset($params));
    		else
    			return $this->request->url($params);
    	}
    
    	public function plural_modifier($number, $singular, $plural1, $plural2=null)
    	{
    		$number = abs($number); 
    		if(!empty($plural2))
    		{
    		$p1 = $number%10;
    		$p2 = $number%100;
    		if($number == 0)
    			return $plural1;
    		if($p1==1 && !($p2>=11 && $p2<=19))
    			return $singular;
    		elseif($p1>=2 && $p1<=4 && !($p2>=11 && $p2<=19))
    			return $plural2;
    		else
    			return $plural1;
    		}else
    		{
    			if($number == 1)
    				return $singular;
    			else
    				return $plural1;
    		}
    	
    	}
    
    	public function first_modifier($params = array())
    	{
    		if(!is_array($params))
    			return false;
    		return reset($params);
    	}
    
    	public function cut_modifier($array, $num=1)
    	{
    		if($num>=0)
    	    	return array_slice($array, $num, count($array)-$num, true);
    	    else
    	    	return array_slice($array, 0, count($array)+$num, true);
    	}
    	
    	public function date_modifier($date, $format = null)
    	{
    		if(empty($date))
    			$date = date("Y-m-d");
    	    return date(empty($format)?$this->settings->date_format:$format, strtotime($date));
    	}
    	
    	public function time_modifier($date, $format = null)
    	{
    	    return date(empty($format)?'H:i':$format, strtotime($date));
    	}
    }
    

    view/View.php

     

    <?PHP
    
    /**
     * Simpla CMS
     *
     * @copyright 	2011 Denis Pikusov
     * @link 		http://simp.la
     * @author 		Denis Pikusov
     *
     * Базовый класс для всех View
     *
     */
    
    require_once('api/Simpla.php');
    
    class View extends Simpla
    {
    	/* Смысл класса в доступности следующих переменных в любом View */
    	public $currency;
    	public $currencies;
    	public $user;
    	public $group;
    	public $page;
    	
    	/* Класс View похож на синглтон, храним статически его инстанс */
    	private static $view_instance;
    	
    	public function __construct()
    	{
    		parent::__construct();
    		
    		// Если инстанс класса уже существует - просто используем уже существующие переменные
    		if(self::$view_instance)
    		{
    			$this->currency     = &self::$view_instance->currency;
    			$this->currencies   = &self::$view_instance->currencies;
    			$this->user         = &self::$view_instance->user;
    			$this->group        = &self::$view_instance->group;	
    			$this->page         = &self::$view_instance->page;	
    		}
    		else
    		{
    			// Сохраняем свой инстанс в статической переменной,
    			// чтобы в следующий раз использовать его
    			self::$view_instance = $this;
    
    			// Все валюты
    			$this->currencies = $this->money->get_currencies(array('enabled'=>1));
    	
    			// Выбор текущей валюты
    			if($currency_id = $this->request->get('currency_id', 'integer'))
    			{
    				$_SESSION['currency_id'] = $currency_id;
    				header("Location: ".$this->request->url(array('currency_id'=>null)));
    			}
    			
    			// Берем валюту из сессии
    			if(isset($_SESSION['currency_id']))
    				$this->currency = $this->money->get_currency($_SESSION['currency_id']);
    			// Или первую из списка
    			else
    				$this->currency = reset($this->currencies);
    	
    if(($theme = strval($this->request->get('theme')))!='') {
                    $this->design->set_theme($theme);
                    header("Location: ".$this->request->url(array('theme'=>null)));
                }
                 
    //            $this->design->assign('themes',    $this->design->get_themes());
    
    			// Пользователь, если залогинен
    			if(isset($_SESSION['user_id']))
    			{
    				$u = $this->users->get_user(intval($_SESSION['user_id']));
    				if($u && $u->enabled)
    				{
    					$this->user = $u;
    					$this->group = $this->users->get_group($this->user->group_id);
    				
    				}
    			}
    
    			// Текущая страница (если есть)
    			$subdir = substr(dirname(dirname(__FILE__)), strlen($_SERVER['DOCUMENT_ROOT']));
    			$page_url = trim(substr($_SERVER['REQUEST_URI'], strlen($subdir)),"/");
    			if(strpos($page_url, '?') !== false)
    				$page_url = substr($page_url, 0, strpos($page_url, '?'));
    			$this->page = $this->pages->get_page((string)$page_url);
    			$this->design->assign('page', $this->page);		
    			
    			// Передаем в дизайн то, что может понадобиться в нем
    			$this->design->assign('currencies',	$this->currencies);
    			$this->design->assign('currency',	$this->currency);
    			$this->design->assign('user',       $this->user);
    			$this->design->assign('group',      $this->group);
    			
    			$this->design->assign('config',		$this->config);
    			$this->design->assign('settings',	$this->settings);
    
    			// Настраиваем плагины для смарти
    			$this->design->smarty->registerPlugin("function", "get_posts",					array($this, 'get_posts_plugin'));
    			$this->design->smarty->registerPlugin("function", "get_brands",					array($this, 'get_brands_plugin'));
    			$this->design->smarty->registerPlugin("function", "get_browsed_products",		array($this, 'get_browsed_products'));
    			$this->design->smarty->registerPlugin("function", "get_featured_products",		array($this, 'get_featured_products_plugin'));
    			$this->design->smarty->registerPlugin("function", "get_new_products",			array($this, 'get_new_products_plugin'));
    			$this->design->smarty->registerPlugin("function", "get_discounted_products",	array($this, 'get_discounted_products_plugin'));
    			$this->design->smarty->registerPlugin("function", "get_latest_comments",     array($this, 'get_latest_comments_plugin'));
    		}
    	}
    		
    	/**
    	 *
    	 * Отображение
    	 *
    	 */
    	function fetch()
    	{
    		return false;
    	}
    	
    	/**
    	 *
    	 * Плагины для смарти
    	 *
    	 */	
    	public function get_posts_plugin($params, &$smarty)
    	{
    		if(!isset($params['visible']))
    			$params['visible'] = 1;
    		if(!empty($params['var'])) {
    			$posts = $this->blog->get_posts($params);
    			foreach($posts as $post)
    				$post->comments_count = $this->comments->count_comments(array('type'=>'blog', 'object_id'=>$post->id, 'approved'=>1));
    			
    			$smarty->assign($params['var'], $posts);
    		}
    	}
    
    	public function get_brands_plugin($params, &$smarty)
    	{
    		if(!isset($params['visible']))
    			$params['visible'] = 1;
    		if(!empty($params['var']))
    			$smarty->assign($params['var'], $this->brands->get_brands($params));
    	}
    	
    	public function get_browsed_products($params, &$smarty)
    	{
    		if(!empty($_COOKIE['browsed_products']))
    		{
    			$browsed_products_ids = explode(',', $_COOKIE['browsed_products']);
    			$browsed_products_ids = array_reverse($browsed_products_ids);
    			if(isset($params['limit']))
    				$browsed_products_ids = array_slice($browsed_products_ids, 0, $params['limit']);
    
    			$products = array();
    			foreach($this->products->get_products(array('id'=>$browsed_products_ids, 'visible'=>1)) as $p)
    				$products[$p->id] = $p;
    			
    			$browsed_products_images = $this->products->get_images(array('product_id'=>$browsed_products_ids));
    			foreach($browsed_products_images as $browsed_product_image)
    				if(isset($products[$browsed_product_image->product_id]))
    					$products[$browsed_product_image->product_id]->images[] = $browsed_product_image;
    			
    			foreach($browsed_products_ids as $id)
    			{	
    				if(isset($products[$id]))
    				{
    					if(isset($products[$id]->images[0]))
    						$products[$id]->image = $products[$id]->images[0];
    					$result[] = $products[$id];
    				}
    			}
    			$smarty->assign($params['var'], $result);
    		}
    	}
    	
    	
    	public function get_featured_products_plugin($params, &$smarty)
    	{
    		if(!isset($params['visible']))
    			$params['visible'] = 1;
    		$params['featured'] = 1;
    		if(!empty($params['var']))
    		{
    			foreach($this->products->get_products($params) as $p)
    				$products[$p->id] = $p;
    
    			if(!empty($products))
    			{
    				// id выбраных товаров
    				$products_ids = array_keys($products);
    		
    				// Выбираем варианты товаров
    				$variants = $this->variants->get_variants(array('product_id'=>$products_ids, 'in_stock'=>true));
    				
    				// Для каждого варианта
    				foreach($variants as &$variant)
    				{
    					// добавляем вариант в соответствующий товар
    					$products[$variant->product_id]->variants[] = $variant;
    				}
    				
    				// Выбираем изображения товаров
    				$images = $this->products->get_images(array('product_id'=>$products_ids));
    				foreach($images as $image)
    					$products[$image->product_id]->images[] = $image;
    	
    				foreach($products as &$product)
    				{
    					if(isset($product->variants[0]))
    						$product->variant = $product->variants[0];
    					if(isset($product->images[0]))
    						$product->image = $product->images[0];
    				}				
    			}
    
    			$smarty->assign($params['var'], $products);
    			
    		}
    	}
    		
    	
    	public function get_new_products_plugin($params, &$smarty)
    	{
    		if(!isset($params['visible']))
    			$params['visible'] = 1;
    		if(!isset($params['sort']))
    			$params['sort'] = 'created';
    		if(!empty($params['var']))
    		{
    			foreach($this->products->get_products($params) as $p)
    				$products[$p->id] = $p;
    
    			if(!empty($products))
    			{
    				// id выбраных товаров
    				$products_ids = array_keys($products);
    		
    				// Выбираем варианты товаров
    				$variants = $this->variants->get_variants(array('product_id'=>$products_ids, 'in_stock'=>true));
    				
    				// Для каждого варианта
    				foreach($variants as &$variant)
    				{
    					// добавляем вариант в соответствующий товар
    					$products[$variant->product_id]->variants[] = $variant;
    				}
    				
    				// Выбираем изображения товаров
    				$images = $this->products->get_images(array('product_id'=>$products_ids));
    				foreach($images as $image)
    					$products[$image->product_id]->images[] = $image;
    	
    				foreach($products as &$product)
    				{
    					if(isset($product->variants[0]))
    						$product->variant = $product->variants[0];
    					if(isset($product->images[0]))
    						$product->image = $product->images[0];
    				}				
    			}
    
    			$smarty->assign($params['var'], $products);
    			
    		}
    	}
    	
    	
    	public function get_discounted_products_plugin($params, &$smarty)
    	{
    		if(!isset($params['visible']))
    			$params['visible'] = 1;
    		$params['discounted'] = 1;
    		if(!empty($params['var']))
    		{
    			foreach($this->products->get_products($params) as $p)
    				$products[$p->id] = $p;
    
    			if(!empty($products))
    			{
    				// id выбраных товаров
    				$products_ids = array_keys($products);
    		
    				// Выбираем варианты товаров
    				$variants = $this->variants->get_variants(array('product_id'=>$products_ids, 'in_stock'=>true));
    				
    				// Для каждого варианта
    				foreach($variants as &$variant)
    				{
    					// добавляем вариант в соответствующий товар
    					$products[$variant->product_id]->variants[] = $variant;
    				}
    				
    				// Выбираем изображения товаров
    				$images = $this->products->get_images(array('product_id'=>$products_ids));
    				foreach($images as $image)
    					$products[$image->product_id]->images[] = $image;
    	
    				foreach($products as &$product)
    				{
    					if(isset($product->variants[0]))
    						$product->variant = $product->variants[0];
    					if(isset($product->images[0]))
    						$product->image = $product->images[0];
    				}				
    			}
    
    			$smarty->assign($params['var'], $products);
    			
    		}
    	}
    	
    	public function get_latest_comments_plugin($params, &$smarty)
    	{
    		$params['approved'] = 1;
    		$params['type'] = 'product';
    		
    		if(!isset($params['limit']))
    			$params['limit'] = 4;
    			
    		if(!empty($params['var'])) {
    			$comments = $this->comments->get_comments($params);
    				
    			$products_ids = array();
    			
    			foreach($comments as $comment)
    				$products_ids[] = $comment->object_id;
    
    			$products = array();
    			
    			foreach($this->products->get_products(array('id'=>$products_ids)) as $p)
    				$products[$p->id] = $p;
    				
    			$images = $this->products->get_images(array('product_id'=>$products_ids));
    			
    			foreach($images as $image)
    				$products[$image->product_id]->images[] = $image;
    
    			foreach($products as &$product) 
    			{
    				if(isset($product->images[0]))
    					$product->image = $product->images[0];
    			}
    			
    			foreach($comments as &$comment)
    			{
    				if(isset($products[$comment->object_id]))
    					$comment->product = $products[$comment->object_id];
    			}
    			$smarty->assign($params['var'], $comments);
    		}
    	}
    }
    
    

    Что не так?

  12.  

    так вы не проверяете включена категория или нет. либо, делайте это в запросе

    $query = $this->db->placehold("SELECT * FROM __categories WHERE visible=1 AND parent_id=1");
    

    либо в коде

    {foreach from=$catst item=cat}
    {if $cat->visible}
    {assign var=col value=$col+23}
      <a href="/catalog/{$cat->url}" style="font-size:11px;color:white;font-family: 'Arial Regular', 'Arial';">{$cat->name}</a>
    {/if}
    {/foreach}
    

    Спасибо помогло.

     

    Только есть прикол новый.

     

    Идут в ряд 5 категорий

    1

    2

    3

    4

    5

     

    Если я скрываю 3 категорию то получается

    1

    2

     

    4

    5

     

    Куда копать?

  13. лампочка не меняется? пробовали зайти в категорию и там галочку поставить Активная

    смотрите логи. вообще ваш код никаким боком админку не цепляет. проблема в другом должна быть.

    Лампочка цвет то меняет. А на главной странице или где нить ничего не происходит

  14. Добрый день друзья, кто может подсказать.
    Сделали Код в IndexView.php

    $query = $this->db->placehold("SELECT * FROM __categories WHERE parent_id='1' ");
    
                $this->db->query($query);
    
                $catst = $this->db->results();
    
                $this->design->assign('catst', $catst);
    

    Потом Вывод в шаблон

    {assign var=col value="30"}
    
    {foreach from=$catst item=cat}
    {assign var=col value=$col+23}
      <a href="/catalog/{$cat->url}" style="font-size:11px;color:white;font-family: 'Arial Regular', 'Arial';">{$cat->name}</a>
    {/foreach}
    

    Вывод подкатегории на главной странице. Но проблема случилась другая, когда в Админке нажимаю скрыть подкатегорию какую нить, ничего не происходит, почему так??

  15.  

    Заказал сайт, сделать рип, начал делать сказал без "проблем", в итоге когда осталась в задании сделать пару пунктов как он сказал "1 час работы", прекратил работу.

    Работа была так:

    1)Скинул задание

    2)Он принял

    3)Через неделю скинул что сделал за это время.

    4)Обговорили по оплате, что оплата будет так, встречусь на следующий день с человеком до 18 00 вечера, посмотрим что сделал человек, и мы оплачиваем и человек работает дальше. А вышло так, выключил он сайт что сделал и сказал платите деньги. И при этом сказал предоплата не надо, только целиком сумма после работы. 

    Итог:

     ТЗ не доделал, сайт выключил чтоб посмотреть что он сделал и требует деньги за всю работу сайта. Показать сайт 2 минуты клиенту потом удалить его и требовать деньги, умный подход. ;)

×
×
  • Создать...