Алексей

Алексей

С нами с 25 декабря 2012; Место в рейтинге пользователей: #69
Алексей
27 сентября 2015, 22:44
0
что-то странное со сниппетом msOptionsWithRemains а именно, в строке
f (!is_array($options) || $options[0] == '' || $product->get('remains') == 0) {
если заменить её на
if (!is_array($options) || $options[0] == '' || $msProductRemains->getRemains( $scriptProperties ) == 0) {
то все работает,
а сверху дописать
$msProductRemains = $modx->getService('msproductremains','msProductRemains',$modx->getOption('mspr_core_path',null,$modx->getOption('core_path').'components/msproductremains/').'model/msproductremains/',$scriptProperties);
if (!($msProductRemains instanceof msProductRemains)) return '';
при чем сниппет getRemains хорошо выдает остатки
Алексей
27 сентября 2015, 17:48
0
оу оу оу, теперь действительно все работает! это реально мощный компонент по учету остатков!
Алексей
27 сентября 2015, 14:07
0
теперь в таблице modx_ms2_product_remains — все ок, только на страничке компонента графа «остатки» — всегда равна 1, вне зависимости от реальных остатков товара.
А на страничке товара — все ок, как надо по кол-ву остатков.
Ссылка: s3036.h4.modhost.pro/manager/
Логин: s3036
Пароль: ZYPECAM5PwXa
Алексей
27 сентября 2015, 13:00
0
попробовал — не работает.
выдает ошибку:
Notice: Undefined variable: config in /home/s3036/www/mspr_convert.php on line 20

Notice: Undefined variable: remains in /home/s3036/www/mspr_convert.php on line 34

Warning: Invalid argument supplied for foreach() in /home/s3036/www/mspr_convert.php on line 34
Done!
и ничего не копирует.
Алексей
21 сентября 2015, 17:52
0
Вообще если хотите сделать конкурентный продукт — берите пример с уже реализованных проектов для modx.
Тот же redactor от modmore (основа — imperavi) — дико популярное приложение, даже у нас есть пользователи, и я в их числе. (не смотря на сегодняшний курс евро).
К примеру, можно взять за основу ajenti у них даже есть плагин для munin (вполне адекватный мониторинг нагрузки сервера), и куча других не менее полезных плагинов.
А так же «готовая» панелька управления сайтами Ajenti V но она довольно странная, никаких jail'ов и никаких отдельных пользователей для каждого сайта.
Алексей
21 сентября 2015, 12:03
+1
Ребята, офигенно делаете!
лично для меня важные моменты:
1. Инкрементальные бэкапы
2. Синхронизация бэкапов с облачным хранилищем данных
3. nginx+php-fpm
4. Отдельный Jail SSH (SFTP) для каждого сайта
5. Скорость работы
У меня на текущий момент все это есть (кроме инкрементальных бекапов, и с Jail'ами беда — composer ругается на какие-то сертефикаты), только нет удобной панели управления.
На текущий момент использую linode за 30$ в месяц (на данный момент все упирается в объем SSD, процессор простаивает на 90%, оперативная память на 30-50%), если ваша панелька позволит перейти на меньший тариф, с той же производительностью и с большими удобствами, с удовольствием буду оплачивать лицензию)
Алексей
19 сентября 2015, 16:56
1
+3
я на сколько понял, это лечится открыванием в новом окне по ссылке
<a href="//domain.com/send/site1.com" target="_blank"></a>
своей странички
//domain.com/send/site1.com
, которая уже сама переправляет редиректом 301 на нужный адрес
http://site1.com
Вроде бы в контакте так и сделано.
Алексей
19 сентября 2015, 09:10
0
то что важно — никогда не бывает срочно. спасибо за оперативность)
Алексей
16 сентября 2015, 15:33
+1
Столкнулся ровно с такой же проблемой. Пока не нашел решения.
Алексей
15 сентября 2015, 09:58
0
Добрый день! Подскажите, как быть если мы уже забили около 500 складских остатков товаров со старой версией компонента? (у каждого товара несколько размеров, и у каждого размера свой остаток) Можно не вручную всю забитую базу перенести на новую версию компонента?
Алексей
12 сентября 2015, 10:02
0
Добрый день! возник вопрос:
как в сниппете AjaxForm указать плейсхолдеры, принимаемые из формы и передаваемые в FormIt? Раньше синтаксис был такой:
'emailTo' 			=> 'order@[[++http_host]]',
'emailFrom' 			=> 'order@[[++http_host]]',
'emailReplyTo' 			=> '[[+email]]',
'emailReplyToName' 		=> '[[+name]]',
а как это сделать через fenom?
вот до чего дошел:
'emailTo' 			=> 'order@{$_modx->config.http_host}',
'emailFrom' 			=> 'order@{$_modx->config.http_host}',
'emailReplyTo' 			=> '[[+email]]',
'emailReplyToName' 		=> '[[+name]]',
Никак не могу взять в толк, откуда fenom'у взять эти плейсхолдеры и передать в сниппет Formit
Полный вызов сниппета
{$_modx->runSnippet('!AjaxForm', [
	'as_mode' 	=> 'onload',
	'snippet' 	=> 'FormIt',
	'form' 		=> 'formscontact',
	'emailTpl' 		=> 'EmailContactForm',
	'hooks' 		=> 'email',
	'emailFromName'		=> '{$_modx->config.site_name}',
	'emailTo' 		=> 'order@{$_modx->config.http_host}',
	'emailFrom' 		=> 'order@{$_modx->config.http_host}',
	'emailReplyTo' 		=> '[[+email]]',
	'emailReplyToName' 	=> '[[+name]]',
	'validate' 		=> 'name:required',
	'validationErrorMessage'	=> 'В форме содержатся ошибки!',
	'successMessage' 		=> 'Сообщение успешно отправлено'
])}
Алексей
02 сентября 2015, 22:17
0
Немного конечно не по теме, на эту страничку лучше добавить meta заголовок, чтобы все, включая скриншоты грузилось через https.
А по теме: скорее всего не инклудятся превьюхи в getProducts, приведите пример вызова этого сниппета.
Алексей
31 августа 2015, 12:09
0
определил ошибку — виноваты были плагины minishop2
Алексей
31 августа 2015, 11:45
0
Добрый день всем!
возникла та же проблема — куча платных дополнений, все для minishop2. Вдруг выясняется что нельзя добавить новый товар — выскакивает ошибка:
ext-all.js:21 Uncaught TypeError: b[(d.xtype || e)] is not a function
и подробнее:
Uncaught TypeError: b[(d.xtype || e)] is not a functionExt.ComponentMgr.create 
@ ext-all.js:21Ext.Container.Ext.extend.createComponent 
@ ext-all.js:21Ext.Container.Ext.extend.lookupComponent 
@ ext-all.js:21Ext.Container.Ext.extend.add 
@ ext-all.js:21(anonymous function) 
@ ext-all.js:21Ext.apply.each 
@ ext-base.js:21Ext.Container.Ext.extend.add 
@ ext-all.js:21Ext.Container.Ext.extend.initComponent 
@ ext-all.js:21Ext.Panel.Ext.extend.initComponent 
@ ext-all.js:21Ext.Component 
@ ext-all.js:21Ext.apply.extend.S 
@ ext-base.js:21Ext.apply.extend.S 
@ ext-base.js:21Ext.apply.extend.S 
@ ext-base.js:21Ext.apply.extend.S 
@ ext-base.js:21Ext.ComponentMgr.create 
@ ext-all.js:21Ext.Container.Ext.extend.createComponent 
@ ext-all.js:21Ext.Container.Ext.extend.lookupComponent 
@ ext-all.js:21Ext.Container.Ext.extend.add 
@ ext-all.js:21(anonymous function) 
@ ext-all.js:21Ext.apply.each 
@ ext-base.js:21Ext.Container.Ext.extend.add 
@ ext-all.js:21Ext.Container.Ext.extend.initComponent 
@ ext-all.js:21Ext.Panel.Ext.extend.initComponent 
@ ext-all.js:21Ext.Component 
@ ext-all.js:21Ext.apply.extend.S 
@ ext-base.js:21Ext.apply.extend.S 
@ ext-base.js:21Ext.apply.extend.S 
@ ext-base.js:21Ext.ComponentMgr.create 
@ ext-all.js:21Ext.Container.Ext.extend.createComponent 
@ ext-all.js:21Ext.Container.Ext.extend.lookupComponent 
@ ext-all.js:21Ext.Container.Ext.extend.add 
@ ext-all.js:21(anonymous function) 
@ ext-all.js:21Ext.apply.each 
@ ext-base.js:21Ext.Container.Ext.extend.add 
@ ext-all.js:21Ext.Container.Ext.extend.initComponent 
@ ext-all.js:21Ext.Panel.Ext.extend.initComponent 
@ ext-all.js:21Ext.Component 
@ ext-all.js:21Ext.apply.extend.S 
@ ext-base.js:21Ext.apply.extend.S 
@ ext-base.js:21Ext.apply.extend.S 
@ ext-base.js:21Ext.ComponentMgr.create 
@ ext-all.js:21Ext.Container.Ext.extend.createComponent 
@ ext-all.js:21Ext.Container.Ext.extend.lookupComponent 
@ ext-all.js:21Ext.Container.Ext.extend.add 
@ ext-all.js:21(anonymous function) 
@ ext-all.js:21Ext.apply.each 
@ ext-base.js:21Ext.Container.Ext.extend.add 
@ ext-all.js:21Ext.Container.Ext.extend.initComponent 
@ ext-all.js:21Ext.Panel.Ext.extend.initComponent 
@ ext-all.js:21Ext.Component 
@ ext-all.js:21Ext.apply.extend.S 
@ ext-base.js:21Ext.apply.extend.S 
@ ext-base.js:21Ext.apply.extend.S 
@ ext-base.js:21Ext.ComponentMgr.create 
@ ext-all.js:21Ext.Container.Ext.extend.createComponent 
@ ext-all.js:21Ext.Container.Ext.extend.lookupComponent 
@ ext-all.js:21Ext.Container.Ext.extend.add 
@ ext-all.js:21(anonymous function) 
@ ext-all.js:21Ext.apply.each 
@ ext-base.js:21Ext.Container.Ext.extend.add 
@ ext-all.js:21Ext.Container.Ext.extend.initComponent 
@ ext-all.js:21Ext.Panel.Ext.extend.initComponent 
@ ext-all.js:21Ext.TabPanel.Ext.extend.initComponent 
@ ext-all.js:21Ext.Component 
@ ext-all.js:21Ext.apply.extend.S 
@ ext-base.js:21Ext.apply.extend.S 
@ ext-base.js:21Ext.apply.extend.S 
@ ext-base.js:21Ext.apply.extend.S 
@ ext-base.js:21MODx.Tabs 
@ modx.tabs.js:22MODx.VerticalTabs 
@ modx.tabs.js:42miniShop2.panel.ProductSettings 
@ product.common.js:467Ext.ComponentMgr.create 
@ ext-all.js:21Ext.Container.Ext.extend.createComponent 
@ ext-all.js:21Ext.Container.Ext.extend.lookupComponent 
@ ext-all.js:21Ext.Container.Ext.extend.add 
@ ext-all.js:21(anonymous function) 
@ ext-all.js:21Ext.apply.each 
@ ext-base.js:21Ext.Container.Ext.extend.add 
@ ext-all.js:21Ext.Container.Ext.extend.initComponent 
@ ext-all.js:21Ext.Panel.Ext.extend.initComponent 
@ ext-all.js:21Ext.Component 
@ ext-all.js:21Ext.apply.extend.S 
@ ext-base.js:21Ext.apply.extend.S 
@ ext-base.js:21Ext.apply.extend.S 
@ ext-base.js:21Ext.ComponentMgr.create 
@ ext-all.js:21Ext.Container.Ext.extend.createComponent 
@ ext-all.js:21Ext.Container.Ext.extend.lookupComponent 
@ ext-all.js:21Ext.Container.Ext.extend.add 
@ ext-all.js:21(anonymous function) 
@ ext-all.js:21Ext.apply.each 
@ ext-base.js:21Ext.Container.Ext.extend.add 
@ ext-all.js:21Ext.Container.Ext.extend.initComponent 
@ ext-all.js:21Ext.Panel.Ext.extend.initComponent 
@ ext-all.js:21Ext.TabPanel.Ext.extend.initComponent 
@ ext-all.js:21Ext.Component 
@ ext-all.js:21Ext.apply.extend.S 
@ ext-base.js:21Ext.apply.extend.S 
@ ext-base.js:21Ext.apply.extend.S 
@ ext-base.js:21Ext.apply.extend.S 
@ ext-base.js:21MODx.Tabs 
@ modx.tabs.js:22Ext.ComponentMgr.create 
@ ext-all.js:21Ext.Container.Ext.extend.createComponent 
@ ext-all.js:21Ext.Container.Ext.extend.lookupComponent 
@ ext-all.js:21Ext.Container.Ext.extend.add 
@ ext-all.js:21(anonymous function) 
@ ext-all.js:21Ext.apply.each 
@ ext-base.js:21Ext.Container.Ext.extend.add 
@ ext-all.js:21Ext.Container.Ext.extend.initComponent 
@ ext-all.js:21Ext.Panel.Ext.extend.initComponent 
@ ext-all.js:21Ext.FormPanel.Ext.extend.initComponent 
@ ext-all.js:21Ext.Component 
@ ext-all.js:21Ext.apply.extend.S 
@ ext-base.js:21Ext.apply.extend.S 
@ ext-base.js:21Ext.apply.extend.S 
@ ext-base.js:21Ext.apply.extend.S 
@ ext-base.js:21MODx.FormPanel 
@ modx.panel.js:34MODx.panel.Resource 
@ modx.panel.resource.js:25miniShop2.panel.Product 
@ create.js:83Ext.ComponentMgr.create 
@ ext-all.js:21Ext.extend.load 
@ modx.js:85Ext.extend._loadComponents 
@ modx.component.js:68MODx.Component 
@ modx.component.js:10MODx.page.CreateResource 
@ create.js:29miniShop2.page.CreateProduct 
@ create.js:7Ext.ComponentMgr.create 
@ ext-all.js:21Ext.extend.load 
@ modx.js:85(anonymous function) 
@ ?id=2&a=resource/create&class_key=msProduct&parent=2&context_key=web:100(anonymous function) 
@ ext-all.js:21b 
@ ext-all.js:21
Хочу проверить все на «чистом» минишопе2, в связи с этим, прошу добавить на тестовый тариф modhost.pro платные дополнения:
msoptionscolor
msproductremains

UPD: я же могу их из /packages/ достать))
PS: переустановка\удаление tickets не помогает, равно как и отключение всех плагинов
Алексей
23 августа 2015, 14:42
0
все работает как надо, даже если указать
getFields: function(config) {
		return {
			color: {xtype: 'msoptionscolor-combo-ral', minChars: 1, hiddenName: 'color', valueField: 'id'}
		}
	}
То можно хранить не имя цвета RAL в таблице товара, а ссылку на него (ID). Так что при изменении любых параметров цвета RAL, все изменения автоматически отразятся на поле продукта.
За это отвечает параметр:
valueField: 'id'
А вот этот параметр указывает, что плагин у меня называется не «ral», а «color»
hiddenName: 'color'
Алексей
21 августа 2015, 15:43
0
Скачал — установил — работает. Похоже у разработчика есть свой магазин, где этот модуль в боевом режиме обкатывается. Хороший, законченный компонент!
Алексей
19 августа 2015, 09:40
0
Добрый день. Подскажите, на какой аккаунт кидать pull-request'ы для minishop2? Есть два актуальных репозитория
1. github.com/bezumkin/miniShop2/
2. github.com/argnist/miniShop2/
Алексей
14 августа 2015, 20:50
+1
для статьи о mxManager скорее всего больше подойдет новостная площадка modx.today/
Алексей
06 августа 2015, 18:28
0
up
Неужели никто не сталкивался с этой проблемой?