Jump to content

sergeevizh

Пользователь
  • Content Count

    378
  • Joined

Posts posted by sergeevizh

  1. Доброго дня! 

    Никак не могу понять и победить Smarty в частности, сжимать данные находящиеся под {literal} в теле страницы.

    Smarty подключен через Composer

    config/config.php - smarty_html_minify = true;

    Основной код сжимается, но данные под {literal} остаются неизменными.

    {ldelim},{rdelim} не работает

     

    Есть какие-то ходы? 

    Кто-то может подсказать как сжимать? 

  2.  

    Информация о заказах на телеграм приходит корректно. По аналогии с корзиной пробовал реализовать сообщения об обратном звонке, но не получается.

     

    1. В файле TgNotify.php создал класс:

     

    public function message_callback($callback_id) {

    if(!($callback = $this->callbacks->get_callback(intval($callback_id)))) {

    return false;

    }

    $this->apiRequest("sendMessage", array('chat_id' => $this->settings->tg_channel, 'parse_mode'=>'HTML', "text" => $text_string));

     

    2. В файле View/CartView.php вставил код для уведомления в Телеграмм:

     

    if($this->settings->tg_notify==1)

    $this->tgnotify->message_callback($callback_id);

     

    Что упустил?

    2. В файле View/CartView.php вставил код для уведомления в Телеграмм:

     

    if($this->settings->tg_notify==1)

    $this->tgnotify->message_callback($callback_id);

     

    Это должно быть там, где работает функция обратного звонка. Скорее всего она у вас в view/IndexView.php

  3. beget.ru

     

    htaccess стандартный, добавил 4 строчки , которые выше.

     

     

    ERR_INVALID_REDIRECT 

     

    <IfModule mod_rewrite.c>
    RewriteCond %{HTTPS} !on
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    </IfModule>
    
    
    <IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
    </IfModule>
    
    
    
    # Админка теперь по адресу /simpla/
    RewriteRule	^admin/?$  simpla/ [L]
    
  4. #Редирект на HTTPS:
    RewriteCond %{HTTPS} =off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    #!!!Внимание, с редиректом вход будет обязательно со слешем в конце /simpla/
    

     

    #Редирект С www на БЕЗ www:
    RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

    ...

     

    # Админка теперь по адресу /simpla
    RewriteRule ^admin/?$ simpla/ [L]
    
  5. проверка по времени не особо надежное решение. А счетчик посещений страницы заказа - решение рабочее, но зачем лишняя нагрузка

    Там есть пост от Dmitry86 никакой проверки времени не нужно

     

    Ещё можно вот так

    forum.simplacms.ru/topic/13591-счётчик-посещений-страницы-спасибо-за-заказ/?p=106440

  6. Какую ссылку?

    Ссылку на рабочий сайт.

    А если сайт локальный, то нужно понять, что делали и что меняли.

     

    Правильный путь до стилей в index.tpl

     

    <link href="design/{$settings->theme|escape}/css/style.css" rel="stylesheet" type="text/css" media="screen"/>

     

    Никаких прямых путей

     

    После открытого тега <head> и до <title> обязательно вставить

    <base href="{$config->root_url}/"/>

  7. Alex спасибо за предложенное решение, можно поподробнее с api/Design.php, там два места с кодом http, сделал все по инструкции, пробовал менять с одном месте и в двух, эффекта загрузки нет, появляется пустая картинка ведущая на 404

    Csb9OaqXThuI0SKRfwMOzQ.png

     

     

    нет случаем файлов "под замену", с меня пиво =D

    https://github.com/pikusov/Simpla/blob/9fefafa38dc739b4348b4a2940cba8bc8e4363ed/api/Design.php#L213

    Код на линиях 213 и 214 заменить

    На

    if (preg_match("~^https?://~", $resized_filename_encoded)) {

    $resized_filename_encoded = rawurlencode($resized_filename_encoded);

    }

  8. Заменяем

    В api/Image.php

    ...

    // Если файл удаленный (http://), зальем его себе

    if (preg_match("~^https?://~", $source_file)) {

    ...

    В api/Design.php

    ...

    if (preg_match("~^https?://~", $resized_filename_encoded)) {

    $resized_filename_encoded = rawurlencode($resized_filename_encoded);

    }

    ...

    Плюс

    Файл simpla\ProductAdmin.php

     

    Меняем строку

    if(!empty($url) && $url != 'http://' && strstr($url,'/')!==false)

     

    На

    if(!empty($url) && $url != 'http://' && $url != 'https://' && strstr($url,'/')!==false)

     

    Оригинал: https://qna.habr.com/q/542206

  9. структуру массива поменяйте в IndexView.php

     

    А для чего вам вообще это нужно? И причем тут smarty?

     

    Причем тут Smarty, чтобы я потом нашел по поиску =)

    Для чего нужно, я сделал для User несколько View. Отдельно редактирование пароля, адреса, отдельно заказы. И еще некоторые вью.

    Теперь там портянка из 50 вью =) 

     

    Если не составит труда, подскажите, что именно изменить? 

     

            // Создаем соответствующий класс
            if (is_file($this->modules_dir."$module.php")) {
                include_once($this->modules_dir."$module.php");
                if (class_exists($module)) {
                    $view = new $module($this);
                } else {
                    return false;
                }
            } else {
                return false;
            }
    
  10. http авторизация:

    + она закрывает всю бекенд директорию от лишних запросов

    + исходя их первого уменьшается необходимость жестко контролировать объекты бекенда

    + безопасность на хорошем уровне

    - данные об менеджере ограничены и проблемно связываются с остальной базой данных

    - при попадании в админ-часть, даже с минимальными правами, нам становятся доступны запросы на сторонние объекты (у которых может быть неконтролируемый функционал)

     

    бд авторизация:

    + данные менеджера легко расширяются и связываются с другими данными  

    - необходимость жестких мер по закрытию доступа к скриптам бекенда. То есть нужно контролировать авторизацию в каждом файле что способен выполниться в бекенде (различные файл менеджеры и прочее)

    +- уровень безопасности зависит от пункта выше

     

    способ авторизации зависит в первую очередь о целей для которых эта авторизация делается. Если она несет чисто доступный функционал - вполне достаточно http.

     

     

    Автору темы: 

    при создании изменении менеджера - создавайте изменяйте обычного пользователя. Связь пользователь=менеджер сделайте через запись ида пользователя в .passwd

    Подводные камни будут, но в любом случае их будет меньше чем переделывать всю авторизацию менеджера

     

    Спасибо за рекомендацию (попробую), сейчас делаю локально и проверяю пока с ролями (1.2.3)

    В административной панели проверяю на доступ по цифре в строке базы role

    Прямого доступа к site.com/simpla нет, чтобы убрать её из robots.txt и при определении возможности доступа к административной части на главной странице сайта появляется ссылка "АдминПанель" 

  11. Авторы систем также морально устарели как и ты.

    Ты не идёшь в ногу со временем, тебе достаточно строчить "код" в notepad++...

    P.S. Старый запорожец уже и не сыскать, но он есть и даже едет.

    Артём, объясните. Чем нынешняя авторизация админа лучше, чем сделать ее как у пользователя.

  12.  

    Для этого надо переделать всю схему авторизации админа - по образцу авторизации пользователя. Довольно хлопотно. А вообще по-хорошему это должно быть стандартно...

    Я так понимаю нужно сделать роли, по типу групп - администратор, менеджеры и пользователи.

    В базе у пользователя сделать role (1) админ, (2) менеджер, (3) пользователь. Пользователь при регистрации получает (3). Менеджера назначает администратор. Админ получает либо при установке, либо ручками в базе. В админ панели управляем ролями с доступом.

    Далее делать проверку сессии по номеру роли, если 1 и 2 допускаем к админ.панели.

  13. Никак не могу разобраться, как при нынешней авторизации администратора (site.com/simpla), сделать, чтобы авторизация проходила как у обычного пользователя с главной страницы сайта?

  14. Готового решения видимо нет.

    Но такое решение было логично сделать не только при оплате Яндекс.Кассой, а вообще из коробки при применении купона на сайте, чтобы менялись {$cart->total_price|convert} и {($purchase->variant->price*$purchase->amount)|convert} корзины. Видимо как-то нужно реализовать это в api/Cart.php

     

    Если брать за основу пример из одной стать, допустим

    В корзине 3 товара

    1. 2827 руб ( {($purchase->variant->price*$purchase->amount)|convert} )

    2. 1365 руб ( {($purchase->variant->price*$purchase->amount)|convert} )
    3. 1538 руб ( {($purchase->variant->price*$purchase->amount)|convert} )
    Итого 5730 руб ( {$cart->total_price|convert}  )
    Скидка 300 руб
     
    Первое, что нам нужно узнать, это долю товара в итоговой сумме
    1. 2827*100%/5730 = 0.49 %
    2. 1365*100%/5730 = 0.24 %
    3. 1538*100%/5730 = 0.27 %
     
    Второе узнать сумму скидки каждого товара
    1. 300*0,49 = 148 руб
    2. 300*0,24 = 71 руб
    3. 300*0,27 = 81 руб
     
    Третье вычесть сумму пропорциональной скидки из каждого товара
    1. 2827-148 = 2679 руб ( {($purchase->variant->price*$purchase->amount)|convert} )
    2. 1365-71 = 1294 руб ( {($purchase->variant->price*$purchase->amount)|convert} )
    3. 1538-81 = 1457 руб ( {($purchase->variant->price*$purchase->amount)|convert} )
     
    Итого после применения скидки 300 руб и пропорционально ее распределили
    5430 руб ( {$cart->total_price|convert}  )
×
×
  • Create New...