Станислав

Станислав

С нами с 11 апреля 2015; Место в рейтинге пользователей: #623

Ошибка PHP warning: array_flip() expects parameter

Полный текст ошибки:
(ERROR @ [....]/core/cache/includes/elements/modsnippet/46.include.cache.php : 474) PHP warning: array_flip() expects parameter 1 to be array, null given
Код, на который ругается система:
Станислав
04 января 2016, 07:35
modx.pro
1 616
0

Выборка товаров по бренду

Нужно сделать выборку товаров, у которых задан определенный производитель. SQL запрос:

SELECT msProducts.id 
FROM modx_ms2_products as msProducts 
LEFT JOIN modx_ms2_vendors as msVendors 
ON msVendors.name=msProducts.vendor  
WHERE msVendors.name='4M'

В phpMyAdmin запрос обрабатывается корректно. Вызываю методами xPDO в консоли. Возвращает пустой массив 'result'. Подскажите, в чем ошибка?

<?php
$q = $modx->newQuery('msProduct');
$q->leftJoin('msVendor','msVendor','msProduct.vendor = msVendor.name');
$q->where(array('msVendor.name' => 'Adidas'));
$q->select(array('msProduct.id'));

$result = array();
if ($q->prepare() && $q->stmt->execute()) {
	while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
		$result[$row[product_id]] = $row[vendor];
	}
}
echo "<pre>";print_r ($result);echo "</pre>";
Станислав
28 ноября 2015, 08:08
modx.pro
2 497
0

Вывод алфавитного списка брендов.

Собственно, имеется родитель «Бренды» с ресурсами брендами. Задача: вывести списки названий ресурсов, разделенных буквенными заголовками (по алфавиту). Написал сниппет. Однако в результате вижу вопросики вместо кириллицы.
Кто нибудь может посоветовать, как состыковать кодировки для нормального отображения русских букв. Код сниппета:
<?php
$objects = $modx->getCollection('modResource',array('parent'=>$parents,'published'=>1)); 
$brends=array();
foreach($objects as $object) {
    $brends[] = $object->get('pagetitle');    
}
sort($brends);
reset($brends);

$words = array();
$i=0;

foreach ($brends as $id=>$brend) {
    if ($id == 0) {
        $words[0] = substr($brend, 0, 1); $i++;
    } else { 
        if( $words[$i-1] !== substr($brend, 0, 1)) {
            $words[$i] = substr($brend, 0, 1);
            $i++;
        } 
    }      
}
$result = "<ul>";
foreach ($words as $word) {
	$result.= "<li><h3>" . $word . "</h3></li>";
	foreach ($objects as $object) {
		if($word == substr($object->get('pagetitle'), 0, 1)) {
			$result.= "<li><a href='/" . $object->get('uri') . "'>" . $object->get('pagetitle') . "</a></li>";
		}
	}
} 
echo $result;
Проблема начинается с массива $words. Вызов
print_r ($words);
вовращает:
Array ( [0] => A [1] => B [2] => C [3] => D [4] => E [5] => F [6] => G [7] => H [8] => I [9] => J [10] => K [11] => L [12] => M [13] => N [14] => P [15] => R [16] => S [17] => T [18] => W [19] => Y [20] => Z [21] => i [22] => � )
Станислав
25 ноября 2015, 12:57
modx.pro
1 722
0

Опция товара minishop - длина*ширина*высота

Уважаемые разработчики. Потребовался параметр товара minishop — размер упаковки. Нужно задавать 3 значения: длина*ширина*высота. Создал дополнительную опцию товара minishop2 по типу штатного «color» (назвал 'pack_size'), руководствуясь данным мануалом: winrecovery.ru/ms2plugin.html.

SQL тип данных: text
php тип: json
extended js type: minishop2-combo-options'

Столкнулся с проблемой. Задавать одинаковые значения нельзя. А ведь часто бывают квадратные упаковки.
Кто разбирается, подскажите, какие типы задавать для этого поля, чтобы можно было вбить 3 любых значения в формате JSON.

Благодарю.
Станислав
12 ноября 2015, 16:52
modx.pro
1 315
0

Добавление и удаление товаров из групп ресурсов.

Доброго времени. После приобретения компонента msDiscount, обнаружил, что нет возможности добавлять целые категории в акции. msDiscount позволяет добавлять в акции группы ресурсов. В итоге набросал плагин для добавления товаров в группы ресурсов при сохранении/публикации.

<?php
if ($modx->event->name != "OnDocFormSave" || $resource->get('template') != 7) {return;}
$category = $modx->getObject('modResource',$resource->get('parent'));
$catGroup = $modx->getObject('modResource',$category->get('parent'));
// у группы ресурсов будет такое же имя как и у родителя товара (pagetitle)
$name = $category->get('pagetitle').'-'.$catGroup->get('pagetitle'); 
// проверяем, сущетвует ли группа ресурсов с таким именем, если нет, то создаем ее
$group = $modx->getObject('modResourceGroup', array('name' => $name));
if (empty($group)) {
	$group = $modx->newObject('modResourceGroup', array('name' => $name));
	$group->save();
}
// записываем в группу элемент-ресурс.
if (!$resource->isMember($group->get('id'))) {
    $resource->joinGroup($group->get('id'));
}
return;
Имя группы ресурсов выглядит так: [имя родителя] — [имя родителя-родителя].

Это работает. Но нужно еще сделать обратное — удалять из группы ресурсов товар при отключении или удалении. Не могу победить, пока это не работает:

<?php
if ($resource->get('template') != 7) return;
$modx->log(1, print_r( 'OnDocUnPublished', 1 ));
$msDiscount = $modx->getService('msDiscount');
$groups = $msDiscount->getProductGroups($resource->get('id'));
if($groups) {
    foreach (array_keys($groups) as $group) {
        if ($resource->isMember($group) ) {
            $resource->leaveGroup($group);
        }
    } 
} $resource->save();
return;
Подскажите где ошибка? И правильно ли выбрано событие: OnDocUnPublished?
Станислав
21 октября 2015, 10:36
modx.pro
3 495
0

Выбор пунктов самовывоза в корзине.

10 10 000
Приветствую! Кто возьмется разработать на заказ компонент для сайта Limpopo.club? Нужно организовать выбор Пунктов самовывоза заказов в нескольких городах для minishop2. Типа как у Ozon.ru.
Задача такая:
Backend:
===========
Требуемые таблицы БД:
— список городов;
— список ПВЗ для каждого города (в городе может быть несколько ПВЗ);
— для каждого ПВЗ должны иметься поля: id, название (адрес точки), название логистической компании;
— cписок логистических компаний.
В админке возможность создавать города, для каждого города в отдельном окне создавать список точек ПВЗ.
Реализовать как спопособ доставки для minishop с соответствующим классом — обработчиком.

Frontend:
===========
Как это прмерно должно выглядеть. В корзине при выборе способа доставки «Доставка до ПВЗ» справа появляется select со списком городов, после выбора города ниже повляется (или становится актвным) другой select со списком ПВЗ.

С радостью рассмотрю предложения и замечания к ТЗ.
Станислав
19 июля 2015, 17:20
modx.pro
1 226
0

Вывод параметра msoption в превью товара

Подскажите, как можно реализовать вывод размеров товара в превью товара. Вот здесь пример: www.childrensalon.com/girl?order=new.
Далее вытекает второй вопрос: как можно вывести значение параметра minishop (size в нашем случае, тип msoption) в виде простого списка?
Станислав
03 июля 2015, 16:30
modx.pro
1
7 092
0

Скидка незарегистрированному покупателю.

Доброго времени. Как назначить скидку конкретному юзеру, который еще не зарегистрировался, но заказ оформлял? В msDiscount для назначения скидки указывается конкретная группа пользователей. Анонимы, сделавшие заказ в minishop2, запоминаются в какой то таблице. Как бы записать пользователей из этой таблицы в группу Modx?
Станислав
15 июня 2015, 13:02
modx.pro
1 098
0