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

jonny008

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

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

  • Посещение

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

  1. Может как то по аналогии. 

     

    Найдено в интернете: 

     

    Нужно сохранить код приведенный ниже в файл function.decliner.php в каталоге с плагинами Smarty

    <?php
    /**
     * Smarty {decliner} function plugin
     *
     * Type:     function<br>
     * Name:     decliner<br>
     * Purpose:  handle word declines based on quantity number<br>
     * @param array $params
     * <pre>
     * Params:  qty: number of items to choose correct declining form
     *          word: declining forms of word. Ex: день, дня, дней.
     * </pre>
     * @param Smarty
     * @return string
     */
    function smarty_function_decliner($params, &$smarty)
    {
        // be sure equation parameter is present
        if (empty($params['qty']))
    	$params['qty']=0;
        if (empty ($params['word'])) {
            $smarty->trigger_error("decliner: missing required parameter");
            return;
        }
        $forms=explode(',',$params['word']);
        $params['qty'] = abs($params['qty']) % 100;
        $n1 = $params['qty'] % 10;
        if ( $params['qty'] > 10 &&  $params['qty'] < 20) return $forms[2];
        else if ($n1 > 1 && $n1 < 5) return $forms[1];
        else if ($n1 == 1) return $forms[0];
        return $forms[2];
    
    }
    
    /* vim: set expandtab: */
    
    ?>
    

    Затем в шаблонах можно использовать вот так.

    {decliner qty=4 word='письма, письма, писем'}
    

     

  2. Подскажите пожалуйста, 

     

    Как сделать условие если при регистрации человек указал группу 1 - учетная запись активна ($default_status = 1;)

     

    Если  указал группу 2 - учетная запись неактивна ($default_status = 0;)

  3. теперь покажите что у вас пишет в register.tpl

    Сам код register.tpl 

    {* Страница регистрации *}
    
    {* Канонический адрес страницы *}
    {$canonical="/user/register" scope=parent}
    
    {$meta_title = "Регистрация" scope=parent}
    
    <h1>Регистрация</h1>
    
    {if $error}
    <div class="message_error">
    	{if $error == 'empty_name'}Введите имя
    	{elseif $error == 'empty_email'}Введите email
    	{elseif $error == 'empty_password'}Введите пароль
    	{elseif $error == 'user_exists'}Пользователь с таким email уже зарегистрирован
    	{elseif $error == 'captcha'}Неверно введена капча
    	{else}{$error}{/if}
    </div>
    {/if}
    
    <form class="form register_form" method="post">
    	<label>Имя</label>
    	<input type="text" name="name" data-format=".+" data-notice="Введите имя" value="{$name|escape}" maxlength="255" />
    	
    	<label>Email</label>
    	<input type="text" name="email" data-format="email" data-notice="Введите email" value="{$email|escape}" maxlength="255" />
    
        <label>Пароль</label>
        <input type="password" name="password" data-format=".+" data-notice="Введите пароль" value="" />
     
        <label>Статус</label>
        
    {if $groups}
    <select name="group_id">
    {$foreach $groups as $g}
    <option value="{$g->id}">{$g->name}</option>
    {/foreach}
    </select>
    {/if}
     
    
    	<div class="captcha"><img src="captcha/image.php?{math equation='rand(10,10000)'}"/></div> 
    	<input class="input_captcha" id="comment_captcha" type="text" name="captcha_code" value="" data-format="\d\d\d\d" data-notice="Введите капчу"/>
    
    	<input type="submit" class="button" name="register" value="Зарегистрироваться">
    
    </form>
    
    

    При переходе по ссылке /user/register выдает 

     

    Fatal error: Uncaught exception 'SmartyCompilerException' with message 'Syntax Error in template "/var/www/html/register.tpl" on line 35 "{$foreach $groups as $g}" - Unexpected " as ", expected one of: "}" , " "' in /var/www/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php:431 Stack trace: #0 /var/www/Smarty/libs/sysplugins/smarty_internal_templateparser.php(2855): Smarty_Internal_TemplateCompilerBase->trigger_template_error() #1 /var/www/Smarty/libs/sysplugins/smarty_internal_templateparser.php(2920): Smarty_Internal_Templateparser->yy_syntax_error(29, ' as ') #2 /var/www/Smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php(51): Smarty_Internal_Templateparser->doParse(29, ' as ') #3 /var/www/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php(82): Smarty_Internal_SmartyTemplateCompiler->doCompile(' in /var/www/Smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php on line 431

  4.  

    а замените:

    $this->smarty->assign('groups', '$groups');

    на

    $this->design->assign('groups', '$groups');
    

    Менял, после этого пишет ошибку: 

     

    Fatal error: Uncaught exception 'SmartyCompilerException' with message 'Syntax Error in template "/var/www//html/register.tpl" on line 35 "{$foreach $groups as $g}" - Unexpected " as ", expected one of: "}" , " "' in 

  5. а вы выбрали все группы?

    $groups = $this->users->get_groups();
    

    приведите весь код файла

    Пожалуйста

     

    <?PHP
    
    require_once('View.php');
    
    class RegisterView extends View
    {
        function fetch()
        {
            $default_status = 0; // Активен ли пользователь сразу после регистрации (0 или 1)
            //выбираем все группы пользователей
    
    $groups = $this->users->get_groups();     
    //передаем их в шаблон
    
    $this->smarty->assign('groups', $groups);        
            
            
            if($this->request->method('post') && $this->request->post('register'))
            {
                $group_id = $this->request->post('group_id');
                $name            = $this->request->post('name');
                $email            = $this->request->post('email');
                $password        = $this->request->post('password');
                $captcha_code           = $this->request->post('captcha_code');
                
                $this->design->assign('name', $name);
                $this->design->assign('email', $email);
                
                $this->db->query('SELECT count(*) as count FROM __users WHERE email=?', $email);
                $user_exists = $this->db->result('count');
    
                if($user_exists)
                    $this->design->assign('error', 'user_exists');
                elseif(empty($name))
                    $this->design->assign('error', 'empty_name');
                elseif(empty($email))
                    $this->design->assign('error', 'empty_email');
                elseif(empty($password))
                    $this->design->assign('error', 'empty_password');        
                elseif(empty($_SESSION['captcha_code']) || $_SESSION['captcha_code'] != $captcha_code || empty($captcha_code))
                {
                    $this->design->assign('error', 'captcha');
                }
                elseif($user_id = $this->users->add_user(array('name'=>$name, 'email'=>$email, 'group_id'=>$group_id, 'password'=>$password, 'enabled'=>$default_status, 'last_ip'=>$_SERVER['REMOTE_ADDR']))) 
                {
                    $_SESSION['user_id'] = $user_id;
                    if(!empty($_SESSION['last_visited_page']))
                        header('Location: '.$_SESSION['last_visited_page']);                
                    else
                        header('Location: '.$this->config->root_url);
                }
                else
                    $this->design->assign('error', 'unknown error');
        
            }
            return $this->design->fetch('register.tpl');
        }    
    }
    

     

  6.  

    у view/RegisterView.php после $default_status = 0; пишем

    //выбираем все группы пользователей
    $groups = $this->users->get_groups();
    //передаем их в шаблон
    $this->smarty->assign('groups', $groups);
    

    дальше в этом же файле в обработчике пост запроса на регистрацию находим

    if($this->request->method('post') && $this->request->post('register'))
    

    и после добавляем

    $group_id = $this->request->post('group_id','integer');
    

    там же находим

    elseif($user_id = $this->users->add_user(array('name'=>$name, 'email'=>$email, 'password'=>$password, 'enabled'=>$default_status, 'last_ip'=>$_SERVER['REMOTE_ADDR'])))
    

    меняем на:

    elseif($user_id = $this->users->add_user(array('name'=>$name, 'email'=>$email, 'group_id'=>$group_id, 'password'=>$password, 'enabled'=>$default_status, 'last_ip'=>$_SERVER['REMOTE_ADDR']))) 

    затем заходим в design/theme/register.tpl и там после

    <label>Пароль</label>
        <input type="password" name="password" data-format=".+" data-notice="Введите пароль" value="" />
    

    пишем

    {if $groups}
    <select name="group_id">
    {$foreach $groups as $g}
    <option value="{$g->id}">{$g->name}</option>
    {/foreach}
    </select>
    {/if}
    

    Беда( 

     

    Не хочет работать. 

     

    Fatal error: Call to a member function assign() on a non-object in /var/www/view/RegisterView.php on line 15

     

    Ругается на $this->smarty->assign('groups', $groups);

  7. Добрый день!

     

    Приобрел модуль "Индивидуальные цены для товара".

     

    Всё работает отлично, но никак не получается вывести вторую цену из CRM Мой Склад.

     

    В файле XML есть идентификатор  типа цены:

     

    <ТипыЦен>
    <ТипЦены>
    <Ид>cbcf493b-55bc-11d9-848a-00112f43529a</Ид>
    <Наименование>Розничная</Наименование>
    <Валюта>руб.</Валюта>
    <Налог>...</Налог>
    </ТипЦены>
    <ТипЦены>
    <Ид>bd72d8fc-55bc-11d9-848a-00112f43529a</Ид>
    <Наименование>Закупочная</Наименование>
    <Валюта>руб.</Валюта>
    <Налог>...</Налог>
    </ТипЦены>
    <ТипЦены>
    <Ид>cbcf495d-55bc-11d9-848a-00112f43529a</Ид>
    <Наименование>Минимальная</Наименование>
    <Валюта>руб.</Валюта>
    <Налог>...</Налог>
    </ТипЦены>
    </ТипыЦен>
    

    Чуть ниже в предложениях он опубликован:

    <Предложение>
    <Ид>46</Ид>
    <Артикул>3232</Артикул>
    <Наименование>Тестовый товар 1</Наименование>
    <Цены>
    <Цена>
    <ИдТипаЦены>cbcf493b-55bc-11d9-848a-00112f43529a</ИдТипаЦены>
    <ЦенаЗаЕдиницу>4533.0</ЦенаЗаЕдиницу>
    <Валюта>643</Валюта>
    <Коэффициент>1</Коэффициент>
    </Цена>
    <Цена>
    <ИдТипаЦены>bd72d8fc-55bc-11d9-848a-00112f43529a</ИдТипаЦены>
    <ЦенаЗаЕдиницу>3000.0</ЦенаЗаЕдиницу>
    <Валюта>643</Валюта>
    <Коэффициент>1</Коэффициент>
    </Цена>
    <Цена>
    <ИдТипаЦены>cbcf495d-55bc-11d9-848a-00112f43529a</ИдТипаЦены>
    <ЦенаЗаЕдиницу>2000.0</ЦенаЗаЕдиницу>
    <Валюта>643</Валюта>
    <Коэффициент>1</Коэффициент>
    </Цена>
    </Цены>
    <Количество>10.0</Количество>
    </Предложение>
    

    но как спарсить именно bd72d8fc-55bc-11d9-848a-00112f43529a (это цену 3000 )

     

    и записать её в БД? 

     

    Если вписать в файле 1c_exchange.php

     

    $variant->group_price_2 = $xml_variant->Цены->Цена->ЦенаЗаЕдиницу;    

     

    Но обновляется и основная и дополнительная. 

     

    Помогите с вопросом. 

     

    Я так понимаю нужно парсить по id <ТипЦены>

     

     

  8. Подскажите, пожалуйста, доступна ли по умолчанию переменная в шаблоне, содержащая общее количество товара, сумму товаров всех вариантов. Спасибо.

    Создаем столбец в БД 

    ALTER TABLE `s_products` ADD `kolichestvo` tinyint(1) DEFAULT NULL;
    

    Далее в файле  /api/Products.php

     

    Примерно на на 109  и 232 строчке добавляем:

    p.kolichestvo,
    

    Я делаю выгрузку через csv, поэтому вариант изменения этого значения в админке мне не нужен. 

     

    В файле  /simpla/ajax/import.php

     

    Примерно 18 строка добавляем: 

     

    'kolichestvo'=>            array('kolichestvo', 'общее количество'),
    

    и ниже примерно на 141 строке добавляем 

     

    if(isset($item['kolichestvo']))
                $product['kolichestvo'] = trim($item['kolichestvo']);    
    

    В шаблоне выводим: 

     

    {if $product->kolichestvo'}
        <div class="nalichie">В наличии</dib> {$product->kolichestvo'} шт. 
    {/if}
    

    Должно работать. Если нужно могу сделать с изменением в админке. 

     

     

  9. Уважаемый к вашему вниманию уже доступна новая версия 2.3.6.

    Рекомендую обновиться :)

    В 2.3.3 внесено очень много изменений. Обновиться до 2,3,6 трудоемкий процесс. Меня и так всё устраивает ;)  

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