Как присвоить динамический ТВ параметр ?

Добрый день, подскжите можно ля реализовать динамические значение ТВ параметра который будет заполняться в виде 00001, 00002 и так далее?
Сергей Скат
31 июля 2014, 06:28
modx.pro
3 907
0

Комментарии: 6

Алексей Ерохин
31 июля 2014, 14:15
+2
Можно через плагин на onDocFormSave, получать из базы максимальный текущий и новому ресурсу присваивать на 1 больше, если у него еще не задано.
Сергей Скат
31 июля 2014, 16:06
0
Большое спасибо, но я не могу написать такой плагин самостоятельно, не могли бы вы покахзать хотябы небольшой пример в на основе которого я мог бы это сделать?
    Вася
    05 августа 2014, 23:36
    +1
    Если я правильно понял задачу
    <?php
    // onDocFormSave
    $q = $modx->newQuery('modResource');
    $q->where(array(
    	'parent' => 409
    )); // можно  задать какое то условие например родителя где создаются ресурсы  с нужными tv
    $q->sortby('id', 'DESC');
    $q->limit(1);
    $res = $modx->getCollection('modResource', $q);
    
    foreach($res as $v)
    	{
    	$lastIdClient = $v->getTvValue('id_client'); // получаем значение TV  у последнего ресурса,  для примера я назвал его "id_client"  у вас должен быть свой
    	}
    
    $nextIdClient = $lastIdClient + 1; // прибавляем один и дальше делаем, что хотим, например сохраняем это значение у нового ресурса в нужном нам TV
      Сергей Скат
      06 августа 2014, 11:51
      0
      Большое спасибо, с задачей уже разобрался, примерно так и написал, но ваш вариант по элегантней, большое спасибо!!!
        Сергей Шлоков
        06 августа 2014, 14:44
        0
        А можно еще проще, если ресурсы идут последовательно. Просто считаем количество ресурсов у нужного родителя.
        $count=$modx->getCount('modResource',array('parent' => 10))+1;
        Добавляем в начало нули и готово.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    6