Всего 125 680 комментариев

Дмитрий Танцирев
11 мая 2021, 17:00
0
Приветствую!
Есть небольшой недочёт при сохранении имени файла.

/core/components/easycomm/model/easycomm/easycomm.class.php:376

Вместо:
$filename = $this->generateRandomName().".".$ext;
Надо:
$filename = $this->modx->filterPathSegment($this->generateRandomName()).".".$ext;
Иначе «$this->mediaSource->uploadObjectsToContainer» сохраняет файл обработав его имя функцией «filterPathSegment», тем самым удаляет из имени файла символы которые указаны в системной настройке «friendly_alias_trim_chars», а в базу сохраняется необработанное имя файла.

И если например в «friendly_alias_trim_chars» указан символ земли «_», то сам файл сохраняется с дефисом вместо земли, а в базу данных сохраняется имя файла с землёй.
Роман
11 мая 2021, 15:45
0
Вроде бы нет у textfield description. А так все правильно. Вставлю код из своего проекта.
{
xtype: 'textfield',
id: config.id + '-count',
fieldLabel: 'Количество на одну единицу товара',
name: 'count',
allowBlank: true,
minLength: 1,
maxLength: 4,
anchor: '99%',
emptyText: '1',
maskRe:/[0-9]/i,
}
Scorp Satex
11 мая 2021, 14:07
0
Та же проблема, вы нашли тогда решение?
Lori
11 мая 2021, 12:48
0
благодарю, уже посмотрел значение поля в БД и решил так:
&where=`{"parent:=":"0","AND:thread:=":"2"}`
Амина
11 мая 2021, 11:56
+1
Спасибо большое!!! Получилось!
Николай Савин
11 мая 2021, 11:44
+1
Близко к правде но есть нюансы. В вызове сниппета нужно создать переменную и с ней работать.
{var $clients = '!hookbackclient' | snippet}
			    		{foreach $clients as $user}
 								<tr class="title">
				    			<td class="table">{$user['name']}</td>
				    			<td class="table">{$user['surname']}</td>
				    			<td class="table">{$user['phone']}</td>
				    			<td class="table">{$user['email']}</td>
				    			<td class="table">{$user['recorders']}</td>
				    			<td class="table">{$user['paid']}</td>
				    		</tr>
							{/foreach}
А еще с данными массива можно работать через точку. Так чуть быстрее писать
<td class="table">{$user.paid}</td>
Амина
11 мая 2021, 11:42
0
{'!hookbackclient' | snippet}
			    		{foreach $users as $user}
 								<tr class="title">
				    			<td class="table">{$user['name']}</td>
				    			<td class="table">{$user['surname']}</td>
				    			<td class="table">{$user['phone']}</td>
				    			<td class="table">{$user['email']}</td>
				    			<td class="table">{$user['recorders']}</td>
				    			<td class="table">{$user['paid']}</td>
				    		</tr>
							{/foreach}
Выводится только Array. Или я не так вывожу?
Murashkin
11 мая 2021, 11:11
0
После обновления перестал работать диспетчер файлов: невозможно загрузить фото, документы через редакторы. ПРобовал 2 редактора — везде пустой попап.
Николай Савин
11 мая 2021, 08:36
0
Правильнее всего сделать просто
return $users
А в шаблоне (или чанке) использовать шаблонизатор fenom и его метод foreach для вывода результатов.
Aleksandr Huz
10 мая 2021, 23:56
0
Наверное, легче пройтись по опциям и пустые удалить с базы
Роман
10 мая 2021, 22:59
0
Так ошибка выходит:

PHP warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'modMgrProductUpdateProcessor' not found

Fatal error: Cannot declare class msProductUpdateProcessor, because the name is already in use in…
Aleksandr Huz
10 мая 2021, 22:52
0
Попробуйте так:
$products = $modx->getIterator('msProduct', array('class_key' => 'msProduct');
foreach($products as $product){
    $response = $modx->runProcessor('mgr/product/update', $product->toArray(), array('processors_path' => MODX_CORE_PATH . 'components/minishop2/processors/'));
    if($response->isError()){
         echo $response->getMessage();
    }
}
Роман
10 мая 2021, 22:44
0
Так тоже ничего не меняется, кеш чистил через админку и удалял в /core/cache

Результат:
SQL time: 4.0202 s
SQL queries: 20858
PHP time: 25.8807 s
Total time: 29.9009 s
Memory: 32 MB
Aleksandr Huz
10 мая 2021, 22:39
0
И ничего не поменяется. Нужно использовать процессор.
$products = $modx->getIterator('modResource', array('class_key' => 'msProduct');
foreach($products as $product){
    $response = $modx->runProcessor('resource/update', $product->toArray());
    if($response->isError()){
         echo $response->getMessage();
    }
}
Артур Шевченко
10 мая 2021, 22:12
0
$products = $modx->getIterator('modResource', array('class_key' => 'msProduct');
foreach($products as $product){
 $product->save();
}
А ты уверен, что дело не в кэше?
Артур Шевченко
10 мая 2021, 22:10
0
Я бы добавил пользователю поле, можно в extended, или в одно их основных полей профайла, назвал бы его vendor, и указал бы в этом поле id производителя из таблицы modx_ms2_vendors, а в личном кабинете бы получал у пользователя это поле и показывал товары, у которых такой же vendor как и у пользователя.
Амина
10 мая 2021, 20:31
0
Добрый вечер. Да, с методами modx у меня туговато…
Таблица у меня своя, данные должны отображаться сразу посетителю без перезагрузки.
Сейчас вывожу таким топорным методом. Сделала снипет, и вывожу его в шаблоне.

$sql = "SELECT * FROM `clients`";
	$statement = $modx->query($sql);
	$users = $statement->fetchAll(PDO::FETCH_ASSOC);
	foreach ($users as $user) {
	  print "<tr class='data'>";
    print "<td class='table'>". $user['name'] ."</td>";
    print "<td class='table'>". $user['surname'] ."</td>";
    print "<td class='table'>". $user['phone'] ."</td>";
    print "<td class='table'>". $user['email'] ."</td>";
    print "<td class='table'>". $user['recorders'] ."</td>";
    print "<td class='table'>". $user['paid'] ."</td>";
    print "</tr>";
	}
Может подскажите, как это можно оптимизировать? Вроде с помощью плейсхолдеров. Как я уже сказала в modx только начинаю работать