Быстрый и надёжный хостинг на SSD-дисках от 165р в месяц   •   Реклама
612 просм
3 комм
Поделиться:

Информер общей мировой статистики заражений коронавирусом COVID-19 (2019-nCoV)

В продолжение темы получения информации распространения коронавируса COVID-19 и по просьбам некоторых пользователей сайта Pandoge, представляю вашему вниманию практическое применение описанных в статье функций в виде простого бесплатного адаптивного информера (виджета), с помощью которого вы сможете вывести на вашем сайте общую (по всему миру) статистику касаемо последствий COVID-19.

Информер общей мировой статистики заражений коронавирусом COVID-19 (2019-nCoV)

Сам информер (PHP-скрипт + верстка) выглядит следующим образом:

<?php

	/*
		Информер общей мировой статистики заражений коронавирусом COVID-19 (2019-nCoV)
		URL: https://www.pandoge.com/moduli-i-skripty/informer-obschey-mirovoy-statistiki-zarazheniy-koronavirusom-covid-19-2019-ncov
		Автор: Артём Малков
		--------------------------------------------------
		Источник данных: COVID19 (https://github.com/ChrisMichaelPerezSantiago/covid19)
	*/

	header('Content-Type: text/html; charset=utf-8');

	$date = date('d.m.Y, H:i'); // Дата на момент кэширования
	$cache_time_out = '10800'; // Время жизни кэша в секундах
	$file_coronavirus_cache = __DIR__.'/cache_coronavirus.txt'; // Файл кэша

	if(!is_file($file_coronavirus_cache) || filemtime($file_coronavirus_cache) < (time() - $cache_time_out)) {

		$ch = curl_init();

		curl_setopt($ch, CURLOPT_USERAGENT, filter_input(INPUT_SERVER, 'HTTP_USER_AGENT', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW));
		curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($ch, CURLOPT_URL, 'https://covid19api.io/api/v1/AllReports');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

		$data = curl_exec($ch);

		curl_close($ch);

		$data = json_decode($data, true);

		$cases = number_format($data['reports'][0]['cases'], 0, '', ' ');
		$deaths = number_format($data['reports'][0]['deaths'], 0, '', ' ');
		$recovered = number_format($data['reports'][0]['recovered'], 0, '', ' ');

		$content = <<<HTML

			<div class="coronavirus_statistics_block">

				<div class="coronavirus_statistics_title">Коронавирусная инфекция</div>

				<div class="coronavirus_statistics_body">
				
					<div>Зараженных:<span class="cases">{$cases}</span></div>
					<div>Погибших:<span>{$deaths}</span></div>
					<div>Выздоровевших:<span class="recovered">{$recovered}</span></div>

				</div>

				<div class="date">Статистика по миру на <b>{$date}</b></div>

			</div>

HTML;

		file_put_contents($file_coronavirus_cache, $content);

	}

	echo file_get_contents($file_coronavirus_cache);

?>

Стили:

.coronavirus_statistics_block {
	border: 1px solid #eff0f0;
	border-radius: 2px;
	font-family: arial;
	font-size: 14px;
}

.coronavirus_statistics_title {
	background: #222;
	color: #fff;
	border-radius: 2px 2px 0 0;
	padding: 10px;
}

.coronavirus_statistics_body div {
	padding: 8px 10px;
	background: #fcfcfc;
}

.coronavirus_statistics_body span {
	float: right;
	color: #555;
}

.coronavirus_statistics_body .cases {
	color: #c12727;
}

.coronavirus_statistics_body .recovered {
	color: #7fb424;
}

.coronavirus_statistics_body div {
	border-bottom: 1px solid #eff0f0;
}

.coronavirus_statistics_block .date {
	background: #0080bd;
	font-size: 12px;
	padding: 5px 10px;
	color: #fff;
	border-radius: 0 0 2px 2px;
	text-align: right;
	font-style: italic;
}

По желанию меняете на свои.

Основные моменты я пояснил, данные кэшируются (обновляются) на 3 часа во избежание лишних запросов к сайту-источнику.

Если что-то кажется вам не совсем понятным, не стесняйтесь и спрашивайте об этом в комментариях ниже.

3
комментария
Форма комментирования этой статьи скрыта. Авторизуйтесь, чтобы расширить привилегии гостевого посещения и получить необходимую помощь от сообщества Pandoge.
    • 0
    825
      •  Администратор
    изменено 24 мая в 23:12

    Для того, что бы вывести информер в DataLife Engine сделайте следующее.

    1. В PHP-коде строку:

    header('Content-Type: text/html; charset=utf-8');

    замените на:

    if(!defined('DATALIFEENGINE')) {
    
    	die('Hacking attempt!');
    
    }

    Результат поместите в PHP-файл, который, в свою очередь, загрузите в папку /engine/modules/.

    2. В нужное место вашей темы вставляете следующую конструкцию:

    {include file="engine/modules/coronavirus.php"}

    Здесь «coronavirus.php» - название файла заданного в первом шаге.

    Стили помещаете в CSS-файл вашего сайта.

    • 0
    825
      •  Администратор
    11 мая в 13:30

    Для того, что бы вывести информер в WordPress сделайте следующее.

    1. Весь PHP-код, за исключением открывающего и закрывающего тега, а также строки:

    header('Content-Type: text/html; charset=utf-8');

    поместите в функцию, например, так:

    function get_data_covid_19() {
    
    	// Код из статьи
    
    }

    2. В ней строку:

    echo file_get_contents($file_coronavirus_cache);

    замените на:

    return file_get_contents($file_coronavirus_cache);

    и полученный код вставьте вниз файла functions.php, который находится в папке темы.

    4. В теме сайта, в нужное вам место вставьте:

    <?php
    		
    	echo get_data_covid_19();
    		
    ?>

    Ну и не забываете про стили.

    • 0
    825
      •  Администратор
    10 мая в 23:50

    Если вы хотите показать статистику не по миру, а по конкретной стране, то сделайте следующие изменения на примере России.

    1. Строку:

    curl_setopt($ch, CURLOPT_URL, 'https://covid19api.io/api/v1/AllReports');

    замените на:

    curl_setopt($ch, CURLOPT_URL, 'https://covid19api.io/api/v1/ReportsByCountries/russia');

    2. Строки:

    $cases = number_format($data['reports'][0]['cases'], 0, '', ' ');
    $deaths = number_format($data['reports'][0]['deaths'], 0, '', ' ');
    $recovered = number_format($data['reports'][0]['recovered'], 0, '', ' ');

    замените на:

    $cases = number_format($data['report']['cases'], 0, '', ' ');
    $deaths = number_format($data['report']['deaths'], 0, '', ' ');
    $recovered = number_format($data['report']['recovered'], 0, '', ' ');

    3. Строку:

    <div class="date">Статистика по миру на <b>{$date}</b></div>

    замените на:

    <div class="date">Статистика по России на <b>{$date}</b></div>

    Список доступных стран вы сможете найти здесь - https://www.pandoge.com/moduli-i-skripty/poluchaem-statistiku-zarazheniy-koronavirusom-covid-19-2019-ncov-na-phpapi

Подняться наверх
«Pandoge» - помощник вебмастера