Павел Романов

Павел Романов

С нами с 03 марта 2014; Место в рейтинге пользователей: #70
Павел Романов
03 февраля 2023, 19:47
0
Вы не пишете ничего в поле, потому что пропустили:
$user->set('username', $phone);

Полный код:
foreach ($modx->getIterator('modUser') as $user) {
    $profile = $user->getOne('Profile');
    $arr = array('(', ')', '-');
    $phone = str_replace($arr, '', $profile->get('phone'));
    $user->set('username', $phone);
    $user->save();
}
Павел Романов
03 февраля 2023, 18:52
0
//....
$arr = array('(', ')', '-', '—', '–', ' ');
$phone = str_replace($arr, '', $profile->get('phone'));
//....
Павел Романов
03 февраля 2023, 18:26
0
Не знаю, выражение работает для всех вариантов:
Павел Романов
03 февраля 2023, 10:13
1
0
Так только цифры останутся:
foreach ($modx->getIterator('modUser') as $user) {
    $profile = $user->getOne('Profile');
    $phone = preg_replace("/[^,.0-9]/", '', $profile->get('phone'));
    $user->set('username', $phone);
    $user->save();
}
Павел Романов
02 февраля 2023, 15:09
+1
Запустите в Console скрипт (естественно, сделав предварительно бэкап базы):

foreach ($modx->getIterator('modUser') as $user) {
	$profile = $user->getOne('Profile');
	$user->set('username', $profile->get('phone'));
	$user->save();
}
Павел Романов
01 февраля 2023, 14:54
+1
Если у Вас в TV используется источник файлов, отличный от Filesystem, то prepareTVs сформирует верный путь к изображению или файлу, поскольку сырые данные в TV пишутся в виде пути от корня источника.
processTVs учитывает параметры вывода TV, а не выводит сырые данные.
Павел Романов
30 декабря 2022, 17:14
0
Сделайте сниппет и запускайте через CronManager
<?php
$content = $modx->runSnippet('pdoSitemap', array(
    'context' => 'web',
    'parents'=> 0,
    'forceXML' => 0
));
file_put_contents(MODX_BASE_PATH.'filename.xml', $content);
Павел Романов
15 ноября 2022, 18:03
0
Атрибуты name у полей корректные?
tv**, где ** — ID TV-шек?
В параметр &allowedFields они добавлены (таким же образом)?
Павел Романов
18 октября 2022, 16:08
1
+1
Да, пардон, там же темы в отдельной таблице и они с сообщениями линкуются по ID.
Вот так должно сработать:
<?php
$mess = array();
$thrs = array();
$table_mess = $modx->getOption('table_prefix').'ec_messages';
$table_threads = $modx->getOption('table_prefix').'ec_threads';

$sql = "SELECT * FROM {$table_threads}";
$q = $modx->prepare($sql);
$q->execute();
$threads = $q->fetchAll(PDO::FETCH_ASSOC);
foreach($threads as $thread){
    $thrs[$thread['resource']] = $thread['id'];
}

$ids = $modx->getChildIds(5,10,array('context' => 'web'));
foreach ($ids as $id){
    $tid = $thrs[$id];
    $sql = "SELECT * FROM {$table_mess} WHERE `thread` = {$tid}";
    $q = $modx->prepare($sql);
    $q->execute();
    $messages = $q->fetchAll(PDO::FETCH_ASSOC);
    foreach ($messages as $message) {
       	$mess[] = $message['id'];
    }
}
return implode(',', $mess);

В чанках вот так попробуйте:
[[#[[+thread_resource]].pagetitle]]
[[#[[+thread_resource]].logo]]
Павел Романов
18 октября 2022, 14:11
+1
В &tpl указан чанк или @INLINE...?
Что выводит просто [[+thread]].
Павел Романов
18 октября 2022, 14:08
+1
Да, 5 — родитель, 10 — глубина выборки.
Подробности тут
Павел Романов
18 октября 2022, 12:45
1
+1
Попробуйте сделать сниппет getMessagesIds:
$ids = $modx->getChildIds(5,10,array('context' => 'web'));
$mess = array();
$table_mess = $modx->getOption('table_prefix').'ec_messages';
foreach ($ids as $id) {
    $sql = "SELECT * FROM {$table_mess} WHERE `thread` = {$id}";
    $q = $modx->prepare($sql);
    $q->execute();
    $messages = $q->fetchAll(PDO::FETCH_ASSOC);
    foreach ($messages as $message) {
       	$mess[] = $message['id'];
    }
}
return implode(',', $mess);

И используйте его в качестве &messages в вызове:
[[!pdoPage?
    &element=`ecMessages`
    &threads=`*`
    &messages=`[[!getMessagesIds]]`
    ......
]]

Что касается полей ресурса, то в чанке сообщения можно использовать FastField:
[[#[[+thread]].pagetitle]]
[[#[[+thread]].logo]]
Павел Романов
16 октября 2022, 09:42
+1
Сделайте плагин на событие OnWebPagePrerender — заодно и type у скриптов и стилей уберете:
<?php
$arr1 = array('type="text/css"', 'type="text/javascript"',' />','/>');
$arr2 = array('','','>','>');
$output = &$modx->resource->_output;
$output = str_replace($arr1,$arr2,$output);
Павел Романов
15 октября 2022, 10:06
+1
Попробуйте так:
[[!msProducts?  
    &limit=`1`
    &tpl=`@INLINE [[+price]] ₽`
    &sortby=`Data.price`
    &where=`{ "Data.price:!=":0 }`
]]
Павел Романов
13 октября 2022, 11:33
+1
Для удаления заказов через phpMyAdmin очистите в базе таблицы modx_ms2_orders и modx_ms2_order_addresses.
Потом для этих таблиц на вкладке «Операции» выставьте значение AUTO_INCREMENT в 1

Естественно, предварительно сделайте бэкап.
Павел Романов
06 октября 2022, 14:41
0
Можете просто сделать страницу с пустым шаблоном и вызовом чанка и подгружать ее посредством Ajax
Павел Романов
06 октября 2022, 14:37
0
В сниппете и сделайте вывод:
return $modx->getChunk('chunkname', array());
Павел Романов
28 сентября 2022, 11:33
+1
В HEAD так:
<base href="[[!+site_url]]" />

Или жестко пропишите:
<base href="https://izmeritel.by/" />