Алексей
я тоже подумал, запишу в файлик, а раз в сутки он сам будет перезаписываться
Andrews
No
Ну да 🙂Согласен!
Dmytro
fgc логично юзать когда свои же файлы берешь 🙂
Dmytro
тоесть когда есть уверенность что они 100% есть )
No
а не проще инклудом если файлы свои 🙂
Andrey
Я когда-то админом работал. Был у нас сервер, 4 винта в рейде, все дела. Бэкапы туда делали.
Я вот до поры до времени тоже был уверен, что они 100% там есть. Пока не выяснилось, что рейд был криво собран как-то и всё нахрен не упало)))
Andrews
No
Если они не на одном серваке то и нет 100% уверенности в их доступности
Andrews
Да даже если на одном, все ровно нет)
No
Просто когда на разных то прям совсем нет уверенности 🙂 а на одном шансов больше хоть
Женечка
а не проще инклудом если файлы свои 🙂
проще, но дороже. include_once чуть чуть дешевле, но всё равно дороже обходится чем file_get_contents, потом что FGC открывает статичные файлы, а не подключает файлы с кусками кода
No
Почему статичные? Если к нему добавить get параметры и отправить на php скрипт то скрипт отработает
Алексей
написал, но пока без записи в файл
Алексей
$file=file_get_contents('https://bank.gov.ua/NBUStatService/v1/statdirectory/exchange?valcode=USD&json');
$result = json_decode ($file,true);
$usd=$result[0]['rate'];
$output=str_replace(",",".",$usd);
return $output;
Andrews
Женечка
я пытался сказать что "Выражение include включает и выполняет указанный файл. "
Женечка
Как сервер выплюнет, так FGC его и получит. Поэтому статично
No
No
Как может быть статично если в зависимости от переданных параметров меняется результат 🙂
Женечка
"Но php то не статичный файл"
PHP это язык. До этого шла речь о *.json файлах, после о CURL-е который (если я не ошибаюсь) php код тоже не выполняет, и закончилось file_get_contents который без какой либо обработки читает файлы который выдаст сервер.
No
php файл != статичный файл, так лучше?
No
а то я думал что php это раскраска
No
дергать файлы со своего же сервака внутри одной системы или crm или ещё каком то месте с помощью fgc это конечно круто....
Женечка
угу, понял что вы хотите сказать.
НО!!! FGC получает результат выполнения php, а не команды/функции/методы/итд
Женечка
а вот include получается переменные функции классы и тд и тп
Andrews
Какой-то спор - не спор :D
Dark
Вопрос сообществу. Проблема у меня давняя, вот, наконец, решил уточнить, это баг или я, глупый человек, не понимаю документацию.
Есть API запрос $modx->getTemplateVars(array('МойПараметр','ЕщеПараметр'),'name,value', 99);
Выдает bool(false)
А вот такой запрос с $modx->getTemplateVars(array('МойПараметр','ЕщеПараметр'),'*', 99); - работает
Вопрос как вводить значения в параметр $fields, чтоб выводились только нужные поля.
Andrey
У меня кстати тоже было так.
Alexey
Коллеги день добрый. Напомните как убрать вкладку SEO при редактировании ресурса ?
Alexey
заранее благодарен
Алексей
mm_rules
Alexey
ага точно спасибо
Dark
Andrey
А никак, так и юзал, тащил value с массива
Dark
Ясно, значит или уже два глупых человека или же баг :)
@Dmi3yy, Можете подсказать?
Dmytro
по логике должно работать надо глянуть апи
Dmytro
в ядре
Dmytro
может и баг
Dark
может и баг
Эта проблема есть для всех параметров API, где есть поле $fields
Dark
В issue добавлять?
Dmytro
ага
Andrey
О как. Я думал фишка, а это баг)
Dark
В issue добавил.
Проблема давняя. Я тоже думал что это фича
Anonymous
Вопрос сообществу. Проблема у меня давняя, вот, наконец, решил уточнить, это баг или я, глупый человек, не понимаю документацию.
Есть API запрос $modx->getTemplateVars(array('МойПараметр','ЕщеПараметр'),'name,value', 99);
Выдает bool(false)
А вот такой запрос с $modx->getTemplateVars(array('МойПараметр','ЕщеПараметр'),'*', 99); - работает
Вопрос как вводить значения в параметр $fields, чтоб выводились только нужные поля.
Прикольно, а почему Вы не пользуетесь getDocumentChildrenTVarOutput?
Anonymous
Ой, не то
Anonymous
getTemplateVarOutput
Anonymous
Передаём имена параметров или их id, и ID документа. И получаем массив name=>value
Алексей
Господа, на ваш суд )
Алексей
$file=file_get_contents('https://bank.gov.ua/NBUStatService/v1/statdirectory/exchange?valcode=USD&json');
$result = json_decode ($file,true);
$usd=$result[0]['rate'];
$output=str_replace(",",".",$usd);
$filename=MODX_BASE_PATH.'assets/cache/nbu.txt';
if (!file_exists($filename) || (file_exists($filename) && time()-filemtime($filename) > 3600*24*1)) {
file_put_contents($filename, $output);
@chmod($filename, 0666);
$nbu = file_get_contents($filename);
}
else {
$nbu = file_get_contents($filename);
}
return $nbu;
Алексей
может где накосячил) но работает
Dark
getTemplateVarOutput
Использую, если необходима обработка виджетов.
getTemplateVars позволяет сразу одним запросом получить параметры для нескольких tv-параметров.
Anonymous
Понял
Алексей
ну уже похвалите меня или растопчите)))
Алексей
первый раз нормальный нужный сниппет написал, не супер достижение конечно))) но все же
Sergey
Алексей
не знаю, на всякий случай)
Алексей
Женечка
3600*24*1 ))
Anonymous
86400
Алексей
А что не так?)
Женечка
последнее умножение выкинулся бы, потмоу что я рисковый
Раньше Здесь Был Мат_
Это чтоб наверняка
Anonymous
Алексей
так что писать? )
Anonymous
Чёрт, а я даже не обратил внимание на это умножение
Раньше Здесь Был Мат_
На один умножить не обязательно)))
Anonymous
Или на переменный разбить, количество дней
Женечка
пусть в комментах себе пояснение оставит
Алексей
да вряд ли там чо-то меняться будет
Anonymous
Anonymous
Женечка
а вот мой вариант. Кидайтесь палками.
$filename = MODX_BASE_PATH . 'assets/cache/nbu.txt';
$exist = file_exists($filename);
function updateRate(){ // обновление курса. (извините за мой англ.)
$file = 'https://bank.gov.ua/NBUStatService/v1/statdirectory/exchange?valcode=USD&json';
$file = file_get_contents($file);
if( $file === false || !$file )
return false;
$result = json_decode( $file );
$result = strtr( $result[0]->rate, ',', '.');
return $result;
}
if( $exist )
{
if( time()-filemtime($filename) < 86400 ) // если не просрочен, берём из кэша
{
$output = file_get_contents($filename);
}
else // если просрочен, пытаемся обновить
{
$output = updateRate();
// если сайт донор недоступен, снова берём данные из кэша
if( $output === false )
$output = file_get_contents($filename);
}
}
else // если кеш пуст, "качаем"
{
$output = updateRate();
if( $output === false )
$output = 'Error-ыч';
}
return $output;
Женечка
код не запускал. скорее всего в косяках)
Алексей
Выглядит покруче) посолиднее) надо протестить