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

Рекомендуемые сообщения

Проведите поиск в файлах на текст 'registerPlugin'.

Файлы стилей и JS-скриптов  задаются обычным образом в шаблонах без хитростей.

Ссылка на сообщение
Поделиться на другие сайты
  • Ответов 81
  • Дата создания
  • Последний ответ

Лучшие авторы в теме

Лучшие авторы в теме

Проведите поиск в файлах на текст 'registerPlugin'.

Файлы стилей и JS-скриптов  задаются обычным образом в шаблонах без хитростей.

Ага, нашел, спасибо.

А как получить текущего пользователя просматривающего страницу?

Ссылка на сообщение
Поделиться на другие сайты

Ага, нашел, спасибо.

А как получить текущего пользователя просматривающего страницу?

Смотря где.

Можно через сессию, как в View.php

Ссылка на сообщение
Поделиться на другие сайты

Смотря где.

Можно через сессию, как в View.php

На страницах с товарами, что бы получить скидки для пользователя и прочу инфу...

Спасибо за подсказку

Ссылка на сообщение
Поделиться на другие сайты

 

Там это все доступно через шаблон

{$user}

Да в шаблоне да, доступно. Мне аяксом нужно это инфу взять.

Хотя если сделать

 

print_r($api->design->smarty->getTemplateVars());

То юзера не показывает, хотя залогинен.

 

Т.е. Обращаюсь к файлу, он мне отдает объект:

 

responыe = {
    'product': 'объект продукта со всеми свойствами',
    'html'; 'результат обработки шаблона',
    'user': 'объект текущего пользователя если есть, иначе null'
} 
Изменено пользователем pepelxD
Ссылка на сообщение
Поделиться на другие сайты

Если б Вы выложили свой ajax-файл, может, скорее подсказали бы.

Чтобы иметь данные об авторизованном пользователе, надо разные моменты контролировать, как минимум

1. Чтоб сессия была подключена,

2. Чтобы был сделан запрос на данные пользователя (непосредственно или через наследование от класса View).

 

Примерно так

 

<?php

 

   session_start();

    require_once('api/Simpla.php');
    $api = new Simpla();

 

    $u = $api->users->get_user(intval($_SESSION['user_id']));
 

   print_r($u);

Ссылка на сообщение
Поделиться на другие сайты

Да уже сделал все по наводке про сессию.
Вот что получилось:
 

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        if ($_POST['id']) {
            session_start();
            require_once($_SERVER['DOCUMENT_ROOT'] . '/api/Simpla.php');
            $api = new Simpla();
            // без этого модификатор convert о котором писал выше не работал... 
            require_once($_SERVER['DOCUMENT_ROOT'] . '/api/Money.php');
            $money = new Money();
            
            // получаю объект продукта
            $product_id = intval($_POST['id']);
            $product = $api->products->get_product($product_id);
            
            $product->variants = array();
            foreach($api->variants->get_variants(array('product_id'=>$product->id, 'in_stock'=>true)) as $v) {
                $product->variants[$v->id] = $v;
            }
            $product->variant = reset($product->variants);
            $product->features = $api->features->get_product_options(array('product_id'=>$product->id)); 


            // получаю юзера
            $user = null;
            if(isset($_SESSION['user_id'])) {
                $user = $api->users->get_user(intval($_SESSION['user_id']));
                if($user && $user->enabled) {
                    $user->group = $api->users->get_group($user->group_id);
                }
            }
                
           // передаю в шаблон объект продукта, записываю в переменную результат обработки шаблона
           $api->design->assign('product', $product);
           try{
              $html = $api->design->fetch('product_cart.tpl');

              if(!$html) throw new Exception('error'); 
                 $product->html = $html;
           }catch(Exception $e) {
              echo $e->getMessage() . '<br>' . $e->getFile() . '<br>' . $e->getLine();
           }


            // формирую ответ
            $response = array('product' => $product, 'user'=> $user);
            echo json_encode($response);
        }
    }

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

Ссылка на сообщение
Поделиться на другие сайты

1. Первый if - лишний. И без него сработает так же.

2. Если сработает catch(Exception $e), то в ответе будет мешанина обычного текста и данных в виде json.

Ссылка на сообщение
Поделиться на другие сайты

1. Первый if - лишний. И без него сработает так же.

2. Если сработает catch(Exception $e), то в ответе будет мешанина обычного текста и данных в виде json.

Кстати да. catch(Exception $e) делал когда шаблон не обрабатывался выводил на что ругается.... так и осталось.. нужно будет в ответ поле ошибка добавить, спасибо за подсказку.

Ссылка на сообщение
Поделиться на другие сайты

А не кажется ли вам, что было бы логично если бы при загрузке файлов из каталога view и api симпла смотрела есть ли такие каталоги с файлами в текущей теме? Т.е. не править при необходимости исходные файлы, а наследоваться от них и расширять.

И еще на мой взгляд бы ло бы логично, если объект $page доступен на любой странице и у него есть метод $page->get_current_page() который возвращает объект текущей страницы будь то каталог или отдельная страница товара?

Ссылка на сообщение
Поделиться на другие сайты

Вместо того, чтоб задавать такие глобальные вопросы, Вы бы реализовали свой вариант, а потом выложили бы тут результаты: описание предложения, готовый код, рассказ о преимуществах в работе и прочее. А абстрактно фантазировать - мечты одни...

Ссылка на сообщение
Поделиться на другие сайты

Как уже писал выше сайт я скопировал с хостинга на локальный сервер OpenServer, возникла такая проблема: не отображаются картинки.... при чем изначально они отображались, затем редактировал файл product.tpl изменил размер изображения и все пропало. При переносе базы данных некоторые не отображались, но это видать проблемы кирилицы..
Значит на хостинге все работает, проверил. Здесь же пропали абсолютно все изображения из папки products. В админке пытаюсь добавить новое изображение к товару - безрезультатно. В паку originals изображение сохраняется, в папку produts нет.
src изображению присваивается правильно.
Ставлю симплу в другую  папку на дефолтной теме все работает.

P.S. заливаю с хостинга в локальную папку products заново все изображения они отображаются. Пытаюсь изменить размер не работает.

Изменено пользователем pepelxD
Ссылка на сообщение
Поделиться на другие сайты

Видимо, дело в настройках на локальном сервере. Причин может быть разных много. надо проверять все детали. Начиная от тривиальных - установлен ли Imagick,установлена ли библиотека GD, какой из двух способов резайза используется.

Лучше всего проверять в недрах скрипта нарезки изображений...

Ссылка на сообщение
Поделиться на другие сайты

Видимо, дело в настройках на локальном сервере. Причин может быть разных много. надо проверять все детали. Начиная от тривиальных - установлен ли Imagick,установлена ли библиотека GD, какой из двух способов резайза используется.

Лучше всего проверять в недрах скрипта нарезки изображений...

В чистой симпле, с дефолтной темой все работает независимо от способа. Значит дело не в настройках сервера, я так понимаю.

С другой стороны на хосте так же все работает....

скрипт нарезки - Image.php, правильно я понимаю?

Да, заметил еще ошибку яваскрипта в админке, при перетаскивании файлов, не определена переменная clone_input, хотя в дефолтной теме сохраняет и нарезает с этой ошибкой.

Ссылка на сообщение
Поделиться на другие сайты

В чистой симпле, с дефолтной темой все работает независимо от способа. Значит дело не в настройках сервера, я так понимаю.

С другой стороны на хосте так же все работает....

 

Надо не гадать, а проверять все точно и находить конкретные места с ошибкой.

И связывать вопрос картинок с темой не стоит, все можно и нужно проверять в админке.

Ссылка на сообщение
Поделиться на другие сайты

В общем проблему я решил, только некоторые моменты мне не понятны:
1. зачем необходимо token($resized_filename)

2. Исходя из resize.php  image->resize($filenamе) запускается каждый раз, когда  $_GET['file'], но в resize($filenamе) я не увидел проверку на то, что файл уже есть
 

Ссылка на сообщение
Поделиться на другие сайты

Проверка происходит в .htaccess

А токен нужен для безопасности, запрещает нарезку произвольных размеров

Ссылка на сообщение
Поделиться на другие сайты

Хм, изучил... В моем случае тема которая используется как раз содержит вариант Давинчи, а не работало потому-что resize.php был заводской, я копировал с хоста только папки api, design, files, view.

Так вот к теме. Почему все что я прочитал крутится вокруг resize.php, image->rezize, resize_modifier и никто не глянул в сторону upload_image, загружает пользователь картинку - нарезались все необходимые размеры?

Ссылка на сообщение
Поделиться на другие сайты

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

В одном шаблоне 200 на 200, а в другом 400 на 400

Ссылка на сообщение
Поделиться на другие сайты

Смотря что понимаете под "все необходимые размеры"...

 

А размер может измениться в шаблоне в любой момент - поэтому необходимы ВСЕ теоретически возможные размеры.

Хотите, что нарезались сразу МИЛЛИОН картинок - от 1х1 до 1000х1000 и даже больше? Ни один сервер не выдержит...

Ссылка на сообщение
Поделиться на другие сайты

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

В одном шаблоне 200 на 200, а в другом 400 на 400

 

 

Смотря что понимаете под "все необходимые размеры"...

 

А размер может измениться в шаблоне в любой момент - поэтому необходимы ВСЕ теоретически возможные размеры.

Хотите, что нарезались сразу МИЛЛИОН картинок - от 1х1 до 1000х1000 и даже больше? Ни один сервер не выдержит...

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

В варианте Давинчи используя settings->image_sizes картинки режутся всех размеров указанных в настройке. Ну так они же и используются, не так ли? в тот или иной момент она загружается, не важно в какой промежуток времени.

Ну так почему бы размеры не брать от туда?

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

Вопрос каким образом эту настройку задавать - это уже другой вопрос, на который как мне кажется можно найти адекватное решение.

Ссылка на сообщение
Поделиться на другие сайты

Вы смысла не понимаете))

Вот у вас стоит шаблон, внем картинки 200 на 200

Вы их грузите - они нарезаются

А потом вы шаблон сменили - нужны картинки 400 на 400 - где вы их возьмете???

А про токен - это глупости, он никому не мешает

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

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

Загрузка...
×
×
  • Создать...