Алексей
я тоже подумал, запишу в файлик, а раз в сутки он сам будет перезаписываться
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;
Женечка
я пытался сказать что "Выражение include включает и выполняет указанный файл. "
Женечка
Почему статичные? Если к нему добавить get параметры и отправить на php скрипт то скрипт отработает
"прям" FGC обработает содержимое файла или всё же сервер, который обработает GET параметр?
Женечка
Как сервер выплюнет, так FGC его и получит. Поэтому статично
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
Ой, не то
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
Понял
Алексей
ну уже похвалите меня или растопчите)))
Алексей
первый раз нормальный нужный сниппет написал, не супер достижение конечно))) но все же
Anonymous
ну уже похвалите меня или растопчите)))
А зачем получаешь после того как туда поместил?
Sergey
$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;
Не забудь сделать проверку еслчли ничего не пришло то устанавливать стандартный курс, а то будут глюки. Я вообще часто делал для клиентов т.к. они сами хотели свой курс указывать, указывали в параметре например на главной странице делал доп параметр с курсами которые они указывали сами, и уже от них потом пересчет был.
Алексей
не знаю, на всякий случай)
Женечка
3600*24*1 ))
Anonymous
86400
Алексей
А что не так?)
Женечка
последнее умножение выкинулся бы, потмоу что я рисковый
Раньше Здесь Был Мат_
Это чтоб наверняка
Алексей
так что писать? )
Anonymous
Чёрт, а я даже не обратил внимание на это умножение
Женечка
так что писать? )
как предложил Serious -> 86400
Anonymous
так что писать? )
3600*24 - ваш кэп
Раньше Здесь Был Мат_
На один умножить не обязательно)))
Anonymous
как предложил Serious -> 86400
Тих, а в друг он потом решит поменять что-либо. Так нужно будет заново пересчитывать
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;
Женечка
код не запускал. скорее всего в косяках)
Алексей
Выглядит покруче) посолиднее) надо протестить