Andrey Grachov

Andrey Grachov

С нами с 27 декабря 2012; Место в рейтинге пользователей: #294
Andrey Grachov
19 апреля 2014, 12:06
1
+2
Это была дружеская помощь, если будет что-то серьезное — обращайтесь :)
Пример оставим для истории, для тех кто придет, а ссылка уже не работает:
// Вызов mFilter2
[[!mFilter2? &parents=`[[*id]]` &filters=`resource|publishedon:date` &tplFilter.row.resource|publishedon=`tpl.mFilter2.filter.date`]]

// Чанк tpl.mFilter2.filter.date
[[+idx:is=`0`:then=`
    <input type="hidden" name="[[+table]][[+delimeter]][[+filter]]" id="mse2_[[+table]]_[[+filter]]_[[+idx]]" value=""/>
    <div id="mse2_[[+table]]_[[+filter]]_[[+idx]]_datepicker"></div>
    <script type="text/javascript">
        $(function () {
            $('#mse2_[[+table]]_[[+filter]]_[[+idx]]_datepicker').datepicker({
                altField: '#mse2_[[+table]]_[[+filter]]_[[+idx]]',
                dateFormat: 'yy-mm-dd'
            });
        });
    </script>
`:else=``]]
Andrey Grachov
18 апреля 2014, 17:57
+2
Пример, данные для доступа s5609 / uw38P73G1axL
Andrey Grachov
10 апреля 2014, 11:19
0
Раз такое дело, то скоро появится :)
Andrey Grachov
10 апреля 2014, 02:40
+1
Компонент для Dropbox выложен только в виде готового пакета (DropSource), но поскольку Github упразднил раздел Downloads, так просто его сейчас не найти :)
Я занимался его разработкой и насчет токена думаю можно применить ту же схему: если указаны API key и API secret, то в описании параметра Auth token выводится ссылка на авторизацию. После перехода по ней и подтверждения пользователь возвращается обратно на страницу настройки Media Source и токен автоматически сохраняется в настройки.
Поскольку для Яндекс redirect_url должен задаваться в настройках приложения, можно на странице редактирования Media Source выводить ссылку на текущую страницу, отметив что ее необходимо указать в настройках приложения. А в остальном использовать тот же принцип для авторизации пользователя.
Andrey Grachov
07 февраля 2014, 12:42
0
Если используете OR:, то надо обязательно добавлять оператор сравнения, в вашем случае
'OR:context_key:=' => $context
вместо
'OR:context_key' => $context
Andrey Grachov
06 февраля 2014, 16:29
1
0
Этот код:
$q = $modx->newQuery('modResource');
$q->select(array(
    'modResource.*',
));
$q->where(array(
    'template' => 1,
    'OR:pagetitle:LIKE' => '%home%',
));
даст такой запрос:
SELECT modResource.* FROM `modx_site_content` AS `modResource` WHERE ( `modResource`.`template` = 1 OR `modResource`.`pagetitle` LIKE '%home%' )
А этот:
$q = $modx->newQuery('modResource');
$q->select(array(
    'modResource.*',
));
$q->where(array(
    array(
        'template' => 1,
        'pagetitle:LIKE' => '%home%',
    ),
    array(
        'OR:id:=' => 1,
        'published' => true,
    ),
));
даст две группы, объединенные оператором OR:
SELECT modResource.* FROM `modx_site_content` AS `modResource` WHERE ( ( `modResource`.`template` = 1 AND `modResource`.`pagetitle` LIKE '%home%' ) OR ( `modResource`.`id` = 1 AND `modResource`.`published` = 1 ) )
Дополнительную информацию можно посмотреть тут: rtfm.modx.com/xpdo/2.x/class-reference/xpdoquery/xpdoquery.where
Andrey Grachov
11 января 2014, 21:53
0
Пишите на andrey.grachov@ya.ru, если еще актуально.
Andrey Grachov
03 марта 2013, 04:14
0
Потому что при использовании LIKE знак подчеркивания является служебным символом (как и %) и означает, что на его месте может стоять один любой символ.
Andrey Grachov
02 марта 2013, 23:39
0
Только не забыть заэкранировать _ :)
Andrey Grachov
21 февраля 2013, 21:13
0
Если радиобаттоны имеют имя tv{$tv->id}[ {$item.value} ], то значение тв параметра по идее должно сохраняться, но вы потеряете в итоговом значении ключи этого массива. Лучше создать скрытое поле с именем tv{$tv->id} и при изменении радиобаттонов сериализовать в него нужное значение.
Andrey Grachov
19 января 2013, 02:43
0
Проблема в том, что когда ресурсов с требуемой датой нет, параметр resources будет содержать пустую строку и соотв. будут выбираться все ресурсы. Один из вариантов решения — можно указать parents=`-1` в вызове getPage.
Andrey Grachov
16 января 2013, 00:37
0
$arr = unserialize(...);
$arr['id'] // Вернет 33
Andrey Grachov
06 января 2013, 02:04
0
Проблема возникает из-за того, что компонент не готов к ситуации, когда MODX установлен в папку, а не в корень домена. Когда MODX установлен в папку, а не в корень домена, настройка site_url содержит в конце название этой папки, и в процессе генерации ссылок внутри компонента к ней еще добавляется значение REQUEST_URI, которое тоже содержит в начале название этой папки.
Временным решением (теоретически) может быть передача в вызов сниппетов компонента параметра siteUrl со значением, равным адресу домена (в данном примере — http:// sfeduprojects.ru/).
Andrey Grachov
28 декабря 2012, 00:38
0
Лучший источник информации — исходный код :) Сам просто сталкивался с такой ситуацией и пришлось покопаться, чтобы дойти до истины.
Andrey Grachov
27 декабря 2012, 16:24
0
Сохранить новое значение стандартным способом:
$modx->resource->setTVValue(.., ...);
тот код просто использовать вдобавок, чтобы обновить значение у текущего ресурса modx, на время обращения к нему.
Andrey Grachov
27 декабря 2012, 15:16
0
Чуть выше привел более эстетичное решение. Какое бы оно некрасивое не было, без него страница не увидит новое значения tv-параметра, если оно будет изменено, к примеру, сниппетом :)
Andrey Grachov
27 декабря 2012, 15:13
0
После этой строки вашего первоначального кода:
$modx->resource->setTVValue(11, 1);
надо добавить
$modx->resource->set('tv_name', null);
или
$tv = $modx->resource->get('tv_name');
if (is_array($tv)) {
	$tv[1] = 1;
	$modx->resource->set('tv_name', $tv);
}
где tv_name — имя tv-параметра с id равным 11. Это позволит дальше на странице использовать новое значение tv-параметра, если оно необходимо.
Andrey Grachov
27 декабря 2012, 15:00
0
В ходе обработки запроса modx загружает ресурс и все его tv-параметры, и потом при получении значений tv-параметров обращается к первоначальным данным. После установки нового значения надо выполнить что-то вроде:
$modx->resource->set('tv_name', null);