ทำการดึงข้อมูลผลพยากรณ์อากาศจากกรมอุตุนิยมวิทยามา ซึ่งค่าที่ได้มาจะเป็นผลพยากรณ์อากาศ 7 วัน และเป็นค่า Json ซึ่งต้องทำการ decode เป็น array ก่อน โดย ค่าที่ได้มาจะเป็นข้อมูลผลพยากรณ์อากาศของทุกจังหวัด ซึ่งประกอบด้วย ชื่อจังหวัด ภาษาไทย /ภาษาอังกฤษ วันที่พยากรณ์อากาศ อุณหภูมิต่ำสุด - สูงสุด ทิศทางลม(องศา) ความเร็วลม("km/h") ฝนปกคลุมพื้นที่(เปอร์เซ็นต์) คําพยากรณ์ ภาษาไทย /ภาษาอังกฤษ ความสูงคลื่น ภาษาไทย /ภาษาอังกฤษ ลักษณะอุณหภูมิภาษาไทย /ภาษาอังกฤษ ซึ่งสามารถทำได้ดังนี้
แสดงข้อมูลภาษาไทย
แสดงข้อมูลภาษาอังกฤษ
โฟลเดอร์เก็บไฟล์ภาษา แบ่งเป็น แสดงฝั่ง user กับแสดงฝั่ง admin
กำหนดตัวภาษาที่ใช้ในการแสดงผล
จะเห็นว่าชื่อตัวแปรที่เก็บข้อความแสดงผล ทั้ง 2 ภาษานั้นเป้นตัวเดียวกัน
คำสั่งที่ใช้
โค้ด: เลือกทั้งหมด
<?php
defined('_JEXEC') or die('Direct access not allowed');
require_once __DIR__ . '/helper.php';
$helper = new ModWeatherForcecastHelper();
$product = $helper->getItems();
require(JModuleHelper::getLayoutPath('mod_weather_forcecast','default'));
โค้ด: เลือกทั้งหมด
class ModWeatherForcecastHelper
{
Public function getItems(){
$url = 'https://data.tmd.go.th/api/WeatherForecast7Days/V1/?type=json';
$data_url = file_get_contents($url);
return $data_url;
}
}
โค้ด: เลือกทั้งหมด
use Joomla\CMS\Factory;
defined('_JEXEC') or die;
$url = 'modules/mod_mweather_forcecast/style/style.css';
$document = JFactory::getDocument();
$document->addStyleSheet($url);
$lang_tag = \Joomla\CMS\Factory::getLanguage()->getTag();
$date = Factory::getDate();
$all = json_decode($product, true);
$all_provinces = $all['Provinces'];
$select_provinces = $params['selProvinces'];
for ($i=0; $i < count($select_provinces) ; $i++) {
$provinces = $all_provinces[$select_provinces[$i]];
$sevenDay = $provinces['SevenDaysForecast'];
?>
<div class="form-group show_provinces">
<div class="col-12">
<div class="col-md-6">
<?php $ProvinceName = ($lang_tag=='th-TH') ? $provinces['ProvinceNameTh'] : $provinces['ProvinceNameEng']; ?>
<h3 class="provinceName"><?php echo $ProvinceName; ?></h3></div>
<div class="weather ">
<?php $WeatherDescription = ($lang_tag=='th-TH') ? $sevenDay[0]['WeatherDescription'] : $sevenDay[0]['WeatherDescriptionEn']; ?>
<?php $TempartureLevel = ($lang_tag=='th-TH') ? $sevenDay[0]['TempartureLevel'] : $sevenDay[0]['TempartureLevelEn']; ?>
<span ><?php echo $WeatherDescription." ".$TempartureLevel; ?></span><br>
<span><?php echo JTEXT::_('MOD_MWEATHER_FORECAST_RAIN_COVER')." ".$sevenDay[0]['Rain']['Value']."".$sevenDay[0]['Rain']['Unit']; ?></span><br>
<span><?php echo JTEXT::_('MOD_MWEATHER_FORECAST_WIND_DIRESTION')." ".$sevenDay[0]['WindDirection']['Value']." ".JTEXT::_('MOD_MWEATHER_FORECAST_DEGREE')." ".$sevenDay[0]['WindSpeed']['Value']." ".$sevenDay[0]['WindSpeed']['Unit']; ?></span><br>
</div>
</div>
<div class="col-md-12">
<span class="temp"><?php echo $sevenDay[0]['MaxTemperature']['Value']."°C "; ?></span>
</div>
<?php foreach ($sevenDay as $key => $aDay): ?>
<div class="list_date">
<?php
list($d, $m, $y) = explode('/', $aDay['Date']);
$dd = date($y.'-'.$m.'-'.$d);
$date = new DateTime($dd);
$date_timestamp = $date->getTimestamp();
?>
<span><?php echo JHtml::date($date_timestamp,JTEXT::_('DATE_FORMAT_LC'),true); ?></span>
<span><?php echo $aDay['MaxTemperature']['Value']."°C / ".$aDay['MinTemperature']['Value']."°C"; ?></span>
</div>
<?php endforeach; ?>
</div>