xikarx
-
Content Count
51 -
Joined
-
Last visited
Posts posted by xikarx
-
-
Здравствуйте, уважаемые.
Кому не лень, если не трудно - разъясните, как организовано добавление заказа из админки (тыком в кнопку Добавить заказ). При добавлении заказа таким способом, после заполнения всех полей формы (собственно товаров и деталей заказа), нажатием в кнопку Сохранить заполняются сразу две таблицы в БД - s_orders и s_purchases, причем связанные по первичным ключам. В толк не возьму, как такое возможно организовать?
Когда это делается в два приема - сначала создание корзины - в s_purchases записываются все товары в заказе, вторым шагом - создание заказа, когда можно связать id заказа с товарами - это понятно как сделать. Но в один шаг - не пойму. Несколько дней уже разбирать пытаюсь код - вот додумался, что видимо как-то через запись в сессию, но тем не менее механизма понять не могу. Если не сложно - напишите в двух словах как это делается и какие файлы в simpla cms участвуют в этом чуде ))
-
7 часов назад, Kosjak76 сказал:
Ну, для начала
$purchase = null; if (!empty($products[$item->variant->product_id])) { $purchase = new stdClass(); $purchase->product = $products[$item->variant->product_id];
Спасибо. Варнинги вроде все изжил. Заказы создаются через один - то нормально все считается в корзине, то какая-то одна позиция не считается. При этом имею кучу однотипных нотайсов:
PHP Notice: Undefined property: stdClass::$discount_price in /var/www/ikar/data/www/astra-omsk.ru/api/Cart.php on line 83, referer: https://astra-omsk.ru/cart PHP Notice: Undefined property: stdClass::$no_discount_price in /var/www/ikar/data/www/astra-omsk.ru/api/Cart.php on line 123, referer: https://astra-omsk.ru/cart PHP Notice: Undefined variable: coupon in /var/www/ikar/data/www/astra-omsk.ru/ajax/calculate_cart.php on line 9, referer: https://astra-omsk.ru/cart PHP Notice: Undefined index: city in /var/www/ikar/data/www/astra-omsk.ru/api/Delivery.php on line 121, referer: https://astra-omsk.ru/cart PHP Notice: Undefined variable: coupon in /var/www/ikar/data/www/astra-omsk.ru/ajax/calculate_cart.php on line 9, referer: https://astra-omsk.ru/cart PHP Notice: Undefined variable: coupon_result in /var/www/ikar/data/www/astra-omsk.ru/ajax/calculate_cart.php on line 39, referer: https://astra-omsk.ru/cart PHP Notice: Undefined variable: coupon_result in /var/www/ikar/data/www/astra-omsk.ru/ajax/calculate_cart.php on line 51, referer: https://astra-omsk.ru/cart PHP Notice: Undefined property: stdClass::$full_price in /var/www/ikar/data/www/astra-omsk.ru/view/CartView.php on line 145, referer: https://astra-omsk.ru/cart
т.е. теперь свойства std-класса стали неопределенными. Я правильно понимаю, что, например
PHP Notice: Undefined property: stdClass::$discount_price in /var/www/ikar/data/www/astra-omsk.ru/api/Cart.php on line 83, referer: https://astra-omsk.ru/cart PHP Notice: Undefined property: stdClass::$no_discount_price in /var/www/ikar/data/www/astra-omsk.ru/api/Cart.php on line 123, referer: https://astra-omsk.ru/cart
нужно определять в начале файла, как-то типа так (поправьте, если что):
public function get_cart() { $cart = new stdClass(); $cart->purchases = array(); $cart->cart_price = 0; .... $cart->$discount_price = 0; $cart->$no_discount_price = 0;
Если да, то что делать с Undefined index: city in /var/www/ikar/data/www/astra-omsk.ru/api/Delivery.php on line 121 ?
он вроде определен в файле api/Delivery.php:
стр. 121 $city = $_REQUEST['city'];
и то же не понятно со строками
PHP Notice: Undefined property: stdClass::$full_price in /var/www/ikar/data/www/astra-omsk.ru/view/CartView.php on line 145, referer: https://astra-omsk.ru/cart PHP Notice: Undefined variable: coupon_result in /var/www/ikar/data/www/astra-omsk.ru/ajax/calculate_cart.php on line 39, referer: https://astra-omsk.ru/cart PHP Notice: Undefined variable: coupon_result in /var/www/ikar/data/www/astra-omsk.ru/ajax/calculate_cart.php on line 51, referer: https://astra-omsk.ru/cart
Опять всем , кто отзовется - премного благодарен! Нелегкое это дело, ООП..
-
Наконец руки дошли написать всем неравнодушным спасибо и повтыкать в код с умным лицом.
назначение new stdClass вроде проблему решает. В силу недостаточных знаний не везде понятно где варнинг типа
PHP Notice: Undefined variable: ...
можно починить созданием new stdClass а где может что-то другое надо делать. при оформлении заказа таких нотайсов овердохрена. Ну, буду изучать разбираться.
Напрягает еще 2 ошибки -
PHP Warning: Creating default object from empty value in /var/www/ikar/data/www/astra-omsk.ru/api/Cart.php on line 71, referer: https://astra-omsk.ru/cart
код из api/Cart.php
строка 65 $cart->pp = '0'; foreach($items as $variant_id=>$item) { $purchase = null; if(!empty($products[$item->variant->product_id])) { $purchase->product = $products[$item->variant->product_id]; $purchase->variant = $item->variant; $purchase->amount = $item->amount; $cart->purchases[] = $purchase; if($purchase->product->action OR $purchase->product->bez == '1') $cart->no_discount_price += $item->variant->price*$item->amount; else $cart->discount_price += $item->variant->price*$item->amount;
и какие-то проблемы с калькуляцией корзины
PHP Notice: Undefined variable: coupon_result in /var/www/ikar/data/www/astra-omsk.ru/ajax/calculate_cart.php on line 39, referer: https://astra-omsk.ru/cart PHP Notice: Undefined variable: coupon_result in /var/www/ikar/data/www/astra-omsk.ru/ajax/calculate_cart.php on line 51, referer: https://astra-omsk.ru/cart
код из ajax/calculate_cart.php
стр.37 $simpla->design->assign('currency', $currency); $simpla->design->assign('delivery_id', $delivery_id); $simpla->design->assign('coupon_result', $coupon_result); $result = array('cart_title'=>$simpla->design->fetch('cart_title.tpl'), 'cart_item_total'=>$simpla->design->fetch('cart_item_total.tpl'), 'cart_items_total'=>$simpla->design->fetch('cart_items_total.tpl'), 'cart_total'=>$simpla->design->fetch('cart_total.tpl'), 'informer'=>$simpla->design->fetch('cart_informer.tpl'), 'deliveries'=>$simpla->design->fetch('delivery.tpl'), 'delivery_cost'=>$simpla->design->fetch('delivery_cost.tpl'), 'incart'=>$cart->total_products, 'cart_coupon'=>$simpla->design->fetch('cart_coupon.tpl'), 'coupon_status'=>$coupon_result, 'coupon_result'=>$simpla->design->fetch('cart_coupon_result.tpl'), 'subtotal_price'=>$cart->cart_price, 'discount_price'=>$cart->discount_value_price, 'coupon_price'=>$cart->coupon_discount, 'delivery_price'=>$delivery_price, 'total_price'=>$cart->cart_price - $cart->discount_value_price - $cart->coupon_discount +$delivery_price, );
при этом корзина (у меня ajax, на одной странице) считается нормально, но после ввода всех данных и клика в кнопку "создать заказ" - считается только первая позиция в заказе. Однако скидка (от суммы заказа, если набирается товаров в корзине) считается от суммы всех позиций. Т.е. положил в корзину 5 товаров по 10 000 тыс. общая сумма корзины 50 000, со скидкой 10% - заказ создаться должен на 45 000, а создается на 5 000.
В общем что-то переход на php7 как то мне дается с сильно непредвиденными проблемами.
Еще раз спасибо всем за участие..!
-
И снова всем здравствуйте. Давно не обновлял сайт, тутвзялся добавить товар и выяснил, что товары оказывается добавляться не желают или добаляются с ошибкой.
Снова прошу помощи. Основную ошибку, не дававшую создатьновый товар вроде пофиксил (было
PHP Warning: Column 'action' cannot be null [INSERT INTO s_products SET id='0', ........ new=NULL, action=NULL, ned='0', bez='0'] in /var/www/ikar/data/www/astra-omsk.ru/api/Database.php on line 100, referer: https://astra-omsk.ru/simpla/index.php?module=ProductAdmin&return=%2Fsimpla%2Findex.php%3Fmodule%3DProductsAdmin
Присвоил полю action значение null по умолчанию. Кстати, подскажите, второй вариант как сделать - где в коде сайта разрешить null значение в данном поле?
И второе - имею кучу ошибок (в логах), влияние которых, вроде на работу сайта пока не увидел, но которые раздражают:
https://astra-omsk.ru/simpla/index.php?module=ProductAdmin&return=%2Fsimpla%2Findex.php%3Fmodule%3DProductsAdmin [Sun Nov 19 17:47:51.411838 2023] [php7:warn] [pid 20733] [client 188.43.194.125:56570] PHP Warning: Creating default object from empty value in /var/www/ikar/data/www/astra-omsk.ru/simpla/ProductAdmin.php on line 72, referer: https://astra-omsk.ru/simpla/index.php?module=ProductAdmin&return=%2Fsimpla%2Findex.php%3Fmodule%3DProductsAdmin
собственно указанная сторока (с 67 по 76)
// Свойства товара $options = $this->request->post('options'); if(is_array($options)) { foreach($options as $f_id=>$val) { $po[$f_id]->feature_id = $f_id; $po[$f_id]->value = $val; } $options = $po; }
и еще не понятные мне ошибки:
[Sun Nov 19 17:47:51.458115 2023] [php7:notice] [pid 20733] [client 188.43.194.125:56570] PHP Notice: Undefined variable: groop_products in /var/www/ikar/data/www/astra-omsk.ru/simpla/ProductAdmin.php on line 308, referer: https://astra-omsk.ru/simpla/index.php?module=ProductAdmin&return=%2Fsimpla%2Findex.php%3Fmodule%3DProductsAdmin [Sun Nov 19 17:47:51.465958 2023] [php7:notice] [pid 20733] [client 188.43.194.125:56570] PHP Notice: Undefined variable: groop_products in /var/www/ikar/data/www/astra-omsk.ru/simpla/ProductAdmin.php on line 453, referer: https://astra-omsk.ru/simpla/index.php?module=ProductAdmin&return=%2Fsimpla%2Findex.php%3Fmodule%3DProductsAdmin [Sun Nov 19 17:47:56.216594 2023] [php7:warn] [pid 20737] [client 188.43.194.125:57132] PHP Warning: A non-numeric value encountered in /var/www/ikar/data/www/astra-omsk.ru/compiled/trizzy/f926a1426a3c03df5714da5ede71d26e0e28a930_0.file.product.tpl.php on line 212, referer: https://astra-omsk.ru/simpla/index.php?module=ProductAdmin&return=%2Fsimpla%2Findex.php%3Fmodule%3DProductsAdmin [Sun Nov 19 17:47:56.217139 2023] [php7:warn] [pid 20737] [client 188.43.194.125:57132] PHP Warning: Parameter 2 to View::get_object_articles_plugin() expected to be a reference, value given in /var/www/ikar/data/www/astra-omsk.ru/compiled/trizzy/f926a1426a3c03df5714da5ede71d26e0e28a930_0.file.product.tpl.php on line 561, referer: https://astra-omsk.ru/simpla/index.php?module=ProductAdmin&return=%2Fsimpla%2Findex.php%3Fmodule%3DProductsAdmin
Кто чем пособит буду очень признателен.
-
Спасибо, помогло!
-
Изловил еще одну проблему, чтобы не создавать новой темы - спрошу здесь. Я не уверен, что связано с заменой версии Smarty, но вроде проблема появилась после обновления.
Короче суть - при создании заказа письмо о заказе на админский email приходит с заголовком "<без темы>", до этого прихоили с заголовком "Новый заказ №ххх".
полез разбираться. в исходниках писем наблюдаю такое
Subject: =?utf-8?B??=,
до этого, в Subject передавалось сообщение о номере заказа в закодированном виде, типа так:
Subject: =?utf-8?B?0J3QvtCy0YvQuSDQt9Cw0LrQsNC3IOKEljQ0NzU=?=
Вопрос - куда это вообще копать? Это вопросы к серверу, к движку, к Smarty, email-серверу? Я этой темы вообще не знаю, ни разу не сталкиваося
какой скрипт/служба ответственны за передачу в http заголовки темы письма?
В Гугле куча теоретической инфы о заголовках, а как и где они формируются при создании и пересылке электронных писем я не нашел. Может правильно не заню как гугла спросить...
-
Да вроде все, пропала ошибка. Не понял почему (из действий только папку compiled очистил. Но ошибки больше нет. Но, все равно спасибо.
-
Спасибо, помогло. Я еще думал про эти ссылки нопробовать не стал. Не вкуриваю эту тему в ооп.
Осталась одна ошибка - но уже, по всей видимости из другой оперы -
Warning: Creating default object from empty value in /var/www/ikar/data/www/astra-omsk.ru/view/View.php on line 167
т.е. вот тут
public function get_session_products_plugin($params, $smarty) { if(!empty($_SESSION[$params['key']])) { $result->key = $params['key']; // ключ $result->ids = $_SESSION[$params['key']]; // сессия $result->count = count($_SESSION[$params['key']]); // количество $smarty->assign($params['key'], $result); } }
я так понимаю, попытка создать объект из пустого значения? В общем с эти что сделать? Пробовал закомментить - получаю 500 ошибку..
-
Под хостинг с php7.2 решил установить Smarty 4.x в Симплу. Залил простым копированием - все вроде нормально, работает справно. Но как оказалось, после создания заказа, на страницах /order/dflvndxxxxxxxxx.. в трех местах получаю ошибки:
Warning: Parameter 2 to View::get_session_products_plugin() expected to be a reference, value given in /var/www/ikar/data/www/astra-omsk.ru/compiled/trizzy/26ad3e601ce79c2f0e821f49033bee73e1903f28_0.file.header.tpl.php on line 79
Warning: Parameter 2 to View::get_brands_plugin() expected to be a reference, value given in /var/www/ikar/data/www/astra-omsk.ru/compiled/trizzy/26ad3e601ce79c2f0e821f49033bee73e1903f28_0.file.header.tpl.php on line 132
Warning: Parameter 2 to OrderView::checkout_form() expected to be a reference, value given in /var/www/ikar/data/www/astra-omsk.ru/compiled/trizzy/4270d009197103a9a5e214be39555a51b172abbd_0.file.order.tpl.php on line 286
Соответственно в логах про это:
PHP Warning: Parameter 2 to View::get_brands_plugin() expected to be a reference, value given in /var/www/ikar/data/www/astra-omsk.ru/compiled/trizzy/26ad3e601ce79c2f0e821f49033bee73e1903f28_0.file.header.tpl.php on line 132
[Mon Nov 14 20:19:16.294071 2022] [php7:warn] [pid 9021] [client 5.255.253.155:51548]PHP Warning: Parameter 2 to View::get_session_products_plugin() expected to be a reference, value given in /var/www/ikar/data/www/astra-omsk.ru/compiled/trizzy/26ad3e601ce79c2f0e821f49033bee73e1903f28_0.file.header.tpl.php
Насколько я понял - что-то связанное с условиями компилляции шаблонов, в файле View.php с функцией public function get_session_products_plugin($params, &$smarty).
Подскажите, как чинить?
И еще - пытался отключить показ ошибок (вроде кроме поломанного дизайна ни на что эти варнинги не влияют), но так и не смог. В самой симпле в индексном файле error_reporting итак закомментирован, ни добавление инструкций в htaccess, ни установка error reporting - off в php.ini на сервере - результатов не дала. Естьвообще возможность из самой cms выключить отображение ошибок?
-
1 час назад, phukortsin сказал:
Попробуйте эту строку удалить или закомментировать.
А что, так можно было?
похоже помогло! спасибо.
-
и как это побеждать? Если не трудно - подскажите?
-
добрался до логов. Насколько я понимаю, вот такая строка к ошибке имеет отношение:
[Tue Oct 26 21:56:27.057228 2021] [php7:error] [pid 18629] [client 109.248.96.158:39912] PHP Fatal error: Uncaught Error: Call to undefined method Blog::update_views() in /var/www/ikar/data/www/astra-omsk.ru/view/BlogView.php:41\nStack trace: \n#0 /var/www/ikar/data/www/astra-omsk.ru/view/BlogView.php(26): BlogView->fetch_post('bukety-iz-ferme...') \n#1 /var/www/ikar/data/www/astra-omsk.ru/view/IndexView.php(109): BlogView->fetch() \n#2 /var/www/ikar/data/www/astra-omsk.ru/index.php(36):IndexView->fetch()\n#3 {main}\n thrown in /var/www/ikar/data/www/astra-omsk.ru/view/BlogView.php on line 41
Соответсвующая строка в BlogView отвечает, как я понимаю, за вывод постов блога и проверку сессии:
22 // Если указан адрес поста, 23 if(!empty($url)) . { . // Выводим пост 26 return $this->fetch_post($url); . } . else . { . // Иначе выводим ленту блога . return $this->fetch_blog(); . } . } . 35 private function fetch_post($url) 36 { 37 // Выбираем пост из базы . $post = $this->blog->get_post($url); . . if($post->visible && empty($_SESSION['admin'])) . $this->blog->update_views($post->id); . . // Если не найден - ошибка 44 if(!$post || (!$post->visible && empty($_SESSION['admin']))) 45 return false;
пытался разобраться в явно причастном к проблеме IndexView - но не могу понять, что там не так.
-
да у меня доступа к панели управления сервером в данный момент нету...
-
Доброго времени суток всем, уважаемые!
Столкнулся с проблемой, надеюсь не откажете советом?
Статьи опубликованные в блог на сайте под авторизацией прекрасно доступны, а без авторизации - отдают ошибку 500. В чем дело, куда копать?
-
4 часа назад, alexivchenko сказал:
спасибо
-
Друзья, помогите с вопросом, кому не лень.
пытаюсь осваивать php и что-то самому сделать в Simple.
Нужно при оформлении заказа добавить пару дополнительных полей.
Еще одно имя и номер телефона.
Я добавил в БД, в s_orders, дополнительные ячейки name2 и phone2.
в cartView зарегистрировал переменные
$order->name2 = $this->request->post('name2');
$order->phone2 = $this->request->post('phone2');ну и разумеется в шаблоне в форме поля для добавления сделал.
вроде все ништяк - в БД новые данные добавляются.
А вот в админке на странице заказа вывести эти данные не могу.
прописываю {$order->name2|escape} - и ничего.
что и где я упустил?
-
Народ, прошу помочь с реКаптчей. Перепробовал все, что предлагается в этой теме (кроме прикрепленных файлов, которые скачиваются пустыми, почему-то). На страницах товаров в отзывах реКаптча не работает. У меня добавлен модуль быстрого заказа и я не пойму, где я что не так делаю... Короче прикладываю файл, буду благодарен, если кто посмотрит.https://yadi.sk/d/YuPUmv08OrQiPg
чет файл подгружаться не хочет, выложил на ЯДиск.
-
Уважаемые, а подскажите как победить обратную траблу? По рецепту, закрепленному в начале этой ветки давно и надежно живу на https на сервере (в интернетах). Но вот появилась необходимость поработать с сайтом на локалке, на денвере.
Скачал сайт с сервера, убрал из htaccess
RewriteCond %{HTTPS} off RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
вернул как было в api/Config.php 46 и 47 строки, чтоб стало
$protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https'? 'https' : 'http'; if($_SERVER["SERVER_PORT"] == 443) $protocol = 'https';
Для надежности раскомментил в C:\WebServers\usr\local\php5\php.ini строку
;extension=php_openssl.dll
но при попытке открыть сайт с денвера получаю 500 ошибку. В логах сервера вижу такое:
localhost:443:0 server certificate does NOT include an ID which matches the server name[Tue Sep 01 01:08:00.411409 2020] [mpm_winnt:notice] [pid 10252:tid 268] AH00354: Child: Starting 64 worker threads.[Tue Sep 01 01:08:14.014187 2020] [core:alert] [pid 10252:tid 948] [client 127.0.0.1:55217] Z:/home/astra-omsk.ru/www/.htaccess: Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configurationчто и где я не доделал? почему денвер по прежнему видит сертификат? как победить? -
-
Надыбал скрипт шаринга по соцсетям, чтоб не ходить на поклон к сторонним сервисам.
страничка скрипта - на всякий случай.
не соображу, как в смарти внедрить в шаблон конструкцию, которая на пхп выглядит так -
<echo 'https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];?>.
Пробовал курить Smarty.net и по образу что-то строить - но все не получалось, имел стопицот ошибок типа Uncaught exception 'SmartyCompilerException
заренее благодарен.
-
shooroop прав, гуглите @media css. Вам нужно найти в файлах шаблона сайта файл с расширением .css и в нем вносить правки.
В вашем случае будет выглядеть примерно так:
@media (min-width: 767px) and (max-width: 990px) { .class_name{ width: такая-то; еще что-то; ... } }
З.Ы: это не PHP, а HTML и CSS. И HTML и CSS - это не языки программирования. Первый - это язык разметки документа, а второй - язык стилевой разметки документа (каскадные таблицы стилей)
@media css загуглите и в
уважаемые, про css и медиазапросы я знаю. Смысл как раз в том - можно ли изменять верстку в зависимости от разрешения экрана? т.е. именно то, что я привел в примере. Ведь скрипт движка определяет девайс с которого смотрят сайт?
Короче, возможно сделать как меня интересует, или правильнее/проще медиа-запросами в стилях делать?
-
Час добрый, товарищи программисты.
Подскажите, кому не трудно, как сделать адаптацию в шаблоне под мобильные устройства.
Подробнее:
шаблон сверстан колонками, по образу и подобию Bootstrap.
Общая ширина - class="column sixteen"
хедер поделен на 4 и 12 колонок.
при ширине экрана меньше 767px - контент складывается в одну колонку и там все отлажено.
однако, при ширине экрана от 767 до 990px - было бы красивее иметь деление хедера на 6 и 10 колонок.
вопрос: кому не трудно, напишите пожалуйста код, как изменять прописанный к дивам класс в зависимости от ширины экрана устройства.
полагаю это должно быть что-то типа
<div {if ширина экрана овер 990px - то }class=four column" else class=six column"">
к несчастью про пхп знания ограничиваются вот примерно такмими измыщлениями, синтаксисом не владею..
заранее благодарен.
-
сделал по инструкции, вроде все работает но картинка QR-код чет сильно маленькая получается, а на мобильных устройствах вообще пропадает.
почему так? как победить?
С размером картинки на десктопе проблему решил правкой файла BTCPay/page.phpА вот на мобильном картинка QR-кода так и не появилась.
-
ну, видимо всему свое время.. в данный момент пытаюсь js изучать. хотя бы поверхностно.
дойду, может быть и до smarty
Добавление заказа из админки
in Общие вопросы по функционалу и дизайну
Posted
С логикой-то все в понятно. Я понять не могу, в какой момент (ПРИ СОЗДАНИИ ЗАКАЗА ВРУЧНУЮ, ИЗ АДМИНКИ) создается запись в таблице orders, чтобы после этого order_id записать в таблицу purchases. Не мог в коде найти этого. Я правильно понял - это вот в выше приведенном:
$order_id = $this->orders->add_order($order); $_SESSION['order_id'] = $order_id;
А отправляется на сервер этот запрос в какой момент? При нажатии кнопки создать заказ? или уже при сохранении заказа?