Илья Уткин

Илья Уткин

С нами с 15 декабря 2012; Место в рейтинге пользователей: #12
Илья Уткин
12 июля 2016, 23:00
1
+2
Скинь на ilyautkin@mail.ru доступ — посмотрю, возможно получится конвертировать то, что есть.
Илья Уткин
12 июля 2016, 11:24
1
+1
Это можно реализовать при выводе с помощью pdoResources. Вот, например, как вывести все объекты на S
[[pdoResources?
  &class=`customExtraItem`
  &loadModels=`customextra`
  &sortby=`name`
  &where=`{"name:LIKE":"s%"}`
  &tpl=`@INLINE <p>{$name} — {$description}</p>`
]]
Илья Уткин
12 июля 2016, 10:19
2
+1
Видео-уроков нет. А что значит «привязать к тв-полям»? ТВ-поля использовать вряд ли получится, но интерфейс можно переделать, отредактировав JS-файлы. Вот пара советов:
Илья Уткин
11 июля 2016, 23:09
+1
В админке создается табличка, количество столбцов настраивается, объекты не перегружены таким функционалом, как ресурсы. На сайте выводить можно с помощью pdoResources (есть пример в документации).
Илья Уткин
11 июля 2016, 19:15
+1
Смотри, [[+modx.user.id]] — это плейсхолдер, в котором содержится id текущего пользователя (для анонима — это ноль). Но то, как ты его написал, может привести к проблемам. У тебя указано без восклицательного знака, а значит, этот плейсхолдер закешируется и для всех пользователей будет показано имя первого, кто открыл эту страницу.

Я не знаю, какую задачу ты решаешь. Но предположу, что ты хочешь, например, указать, кто автор статьи. Тогда надо использовать поле ресурса createdby, в котором указан id пользователя
[[*createdby:userinfo=`fullname`]]

Или ты получаешь id пользователя в своём сниппете — тогда нужно передать его в чанк в виде плейсхолдера, например
[[+user:userinfo=`fullname`]]

Вариант [[*id:input=`7`:userinfo=`fullname`]] нужно использовать, например, если ты хочешь указать, кто является администратором — ты знаешь его id и надо просто подставить число в нужное место.
Илья Уткин
11 июля 2016, 18:50
+4
Ресурсы для такой задачи не подходят — у них, помимо хранения данных в базе, ОООООЧЕНЬ много другого функционала, который и тормозит. Попробуйте ещё чуть-чуть углубиться в MODX, почитать, например, про modExtra или воспользоваться customExtra
Илья Уткин
11 июля 2016, 18:47
0
Ахаха, из поста этого никак не следует)

[[*id:input=`7`:userinfo=`fullname`]]
Илья Уткин
11 июля 2016, 11:40
0
Да, конечно
Илья Уткин
11 июля 2016, 11:35
0
Готового решения нет, так как задача довольно специфическая. MIGX как-то может решить, но надо писать свой сниппет.
Илья Уткин
11 июля 2016, 11:12
0
Но вообще, эти параметры будут применены не к самому полю (textarea), а к его родителю (div). Если надо изменить отображение, лучше прикрепить еще и свой CSS, в котором уже привычным и удобным образом управлять внешним видом.
Илья Уткин
11 июля 2016, 11:10
0
Попробуй
style: {height: '150px'},
Илья Уткин
07 июля 2016, 22:22
2
+1
Можно проще и более удобочитаемо
if ($time == 1){
  return strtotime('last Monday', strtotime('Monday this week')); 
}

if ($time == 2){
  return strtotime('last Sunday', strtotime('Sunday this week')); 
}
Илья Уткин
06 июля 2016, 12:26
+5
Позор! Позор! Позор!

Илья Уткин
06 июля 2016, 12:05
0
Ну, в скрипте контент ресурса не затрагивается, так что вряд ли связано со скриптом. Но я с ContentBlocks не работал, так что точно сказать не могу…
Илья Уткин
05 июля 2016, 15:25
0
Удалить их из phpMyAdmin (таблица modx_site_content)
Илья Уткин
04 июля 2016, 10:25
0
Да, видимо какой-то глюк при генерации даты… Я давно уже не смотрел этот плагин. Попробуйте поставить lmims
Илья Уткин
03 июля 2016, 13:12
3
+2
Возможно, вот такой вариант сможет и из Console обработать любое количество ресурсов:
<?php
$field = $modx->getOption('videogallery_field_image');

// Сколько ресурсов обрабатывать за раз
$step = 1;
// Если процесс уже остановлен, сбрасываем OFFSET
if (!isset($_SESSION['Console']['completed'])) {
    $_SESSION['console_offset'] = 0;
}
$offset = isset($_SESSION['console_offset']) && $_SESSION['console_offset'] ? $_SESSION['console_offset'] : 0;

$q = $modx->newQuery('modResource');
$q->innerJoin('modTemplateVarResource', 'modTemplateVarResource', 'modTemplateVarResource.contentid = modResource.id');
$q->innerJoin('modTemplateVar', 'modTemplateVar', 'modTemplateVar.id = modTemplateVarResource.tmplvarid');
$q->select(array(
    'modResource.id as resource_id',
    'modTemplateVar.id as tv_id',
    'modTemplateVar.name as tv_name',
    'modTemplateVarResource.value as tv_value',
    'modTemplateVarResource.id as id',
));
$q->where(array(
    'modTemplateVar.type' => 'videoGallery',
));

// Подсчитываем общее количество
$total = $modx->getCount('modResource', $q);

// Пропускаем все уже обработанные объекты
$q->limit($step, $offset);

$q->prepare();
$q->stmt->execute();
$rows = $q->stmt->fetchAll(PDO::FETCH_ASSOC);

foreach ($rows as $row) {
    // print_r($row);
    $data = $modx->fromJSON($row['tv_value']);
    if (is_array($data) && isset($data['video'])) {
        $old['fileurl'] = $data['image'];
        $old['filepath'] = str_replace(MODX_ASSETS_URL, MODX_ASSETS_PATH, $old['fileurl']);
        
        $resp = $modx->runProcessor('gallery/handle', array(
            'resource' => $row['resource_id'],
            'tv' => $row['tv_id'],
            'video' => $data['video'],
        ), array('processors_path' => MODX_CORE_PATH . 'components/videogallery/processors/mgr/'));
        
        $resp = $resp->response;
        // print_r($resp['object']['image'].PHP_EOL);
        
        if ($resp['success']) {
            if ($resource = $modx->getObject('modResource', array('id' => $row['resource_id']))) {
                $resource->setTVValue($row['tv_name'], $resp['object']['json']);
                $resource->save();
                
                // Если в настройках указано поле для хранения изображений - сохраним в него новый путь до картинки
                if ($field) {
                    if (stristr($field, 'tv.')) {
                        $resource->setTVValue(str_replace('tv.', '', $field), $resp['object']['image']);
                    } else {
                        $resource->set($field, $resp['object']['image']);
                    }
                    $resource->save();
                }
                
                // Удалим старое изображение
                if (file_exists($old['filepath']) && $old['fileurl'] != $resp['object']['image']) {
                    @unlink($old['filepath']);
                }
            }
        }
    }
}

// Меняем offset
$_SESSION['console_offset'] = $offset + $step;
if ($_SESSION['console_offset'] >= $total) {
  $sucsess = 100;
  $_SESSION['Console']['completed'] = true;
  unset($_SESSION['console_offset']);
} else {
  $sucsess = round($_SESSION['console_offset'] / $total, 2) * 100;
  $_SESSION['Console']['completed'] = false;
}
for ($i=0; $i<=100; $i++) {
    if ($i <= $sucsess) {
        print '=';
    } else {
        print '_';
    }
}
print "\n";
print $sucsess.'% ('.$_SESSION['console_offset'].')'."\n\n";