Перейти к содержимому


Фото
* * * * * 1 голосов

Консультация по движку


  • Чтобы отвечать, сперва войдите на форум
81 ответов в теме

#21 ahmed

ahmed
  • Пользователь
  • 172 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 10.05.2017 - 18:41

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

 

Код, который Вы привели - стандартный. Но из этого кода АКТИВНО используется именно часть с reset(...), которая дает первый элемент.

А часть с присваиванием произвольного элемента реально работает крайне мало. На сайте я знаю лишь одно место, где это работает - в ссылках в yandex.php. Знаете другие места - сообщайте...



#22 pepelxD

pepelxD
  • Пользователь
  • 42 сообщений
  • Верстка, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 11.05.2017 - 12:03

Ребят, допустим мне в созданном мной file.php необходимо обработать шаблон smarty, мне необходимо в нем отдельно подключать Smarty.class.php или же готовый объект уже где - то доступен? И Вообще, в каких файлах происходит подключение.

 

Вроде разобрался, это метод design экземпляра объекта Simpla. Верно?


Изменено: pepelxD, 11.05.2017 - 12:23


#23 Noxter

Noxter
  • Фрилансер
  • 87 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 11.05.2017 - 12:23

Посмотрите как сделано в view/MainView.php

#24 ahmed

ahmed
  • Пользователь
  • 172 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 11.05.2017 - 12:48

В теме

http://forum.simplac...а-всех-брендов/

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

И на форуме, если поискать, можно найти и другие подобные примеры.



#25 pepelxD

pepelxD
  • Пользователь
  • 42 сообщений
  • Верстка, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 12.05.2017 - 13:00

Делаю аякс к файлу, в нем необходимо обработать шаблон .tpl и записать в переменную. Использую

$html = $api->design->fetch('template.tpl');

Смарти начинает ругаться на запись

{$product->variant->price|convert}
convert - Unknown modifier

 

Вопрос:  в каком файле регистрируется этот модификатор, да и вообще модификаторы? Они для каждого view свои или же есть какойто центральный файл?
Еще вопрос про стили и скрипты, предусмотрен ли в симпле механизм загрузки скриптов и стилей? Или только инлайн в шаблонах .tpl?


Изменено: pepelxD, 12.05.2017 - 13:01


#26 ahmed

ahmed
  • Пользователь
  • 172 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 12.05.2017 - 13:15

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

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



#27 pepelxD

pepelxD
  • Пользователь
  • 42 сообщений
  • Верстка, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 12.05.2017 - 14:18

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

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

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



#28 Kosjak76

Kosjak76
  • Модератор
  • 3 857 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Харьков, Украина

Опубликовано 12.05.2017 - 14:23

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

Смотря где.

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



#29 pepelxD

pepelxD
  • Пользователь
  • 42 сообщений
  • Верстка, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 12.05.2017 - 14:43

Смотря где.

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

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



#30 Kosjak76

Kosjak76
  • Модератор
  • 3 857 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Харьков, Украина

Опубликовано 12.05.2017 - 14:47

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

{$user}


#31 pepelxD

pepelxD
  • Пользователь
  • 42 сообщений
  • Верстка, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 12.05.2017 - 15:09

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

{$user}

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

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

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

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


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

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

Изменено: pepelxD, 12.05.2017 - 15:19


#32 Noxter

Noxter
  • Фрилансер
  • 87 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 12.05.2017 - 17:18

$this->user->name

#33 ahmed

ahmed
  • Пользователь
  • 172 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 12.05.2017 - 17:56

Если б Вы выложили свой 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);



#34 pepelxD

pepelxD
  • Пользователь
  • 42 сообщений
  • Верстка, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 12.05.2017 - 18:28

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

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);
        }
    }

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



#35 ahmed

ahmed
  • Пользователь
  • 172 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 12.05.2017 - 18:50

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

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



#36 pepelxD

pepelxD
  • Пользователь
  • 42 сообщений
  • Верстка, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 12.05.2017 - 19:18

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

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

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



#37 pepelxD

pepelxD
  • Пользователь
  • 42 сообщений
  • Верстка, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 14.05.2017 - 09:21

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

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



#38 ahmed

ahmed
  • Пользователь
  • 172 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 14.05.2017 - 10:11

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



#39 pepelxD

pepelxD
  • Пользователь
  • 42 сообщений
  • Верстка, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 15.05.2017 - 11:54

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

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


Изменено: pepelxD, 15.05.2017 - 12:18


#40 ahmed

ahmed
  • Пользователь
  • 172 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 15.05.2017 - 12:27

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

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






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых