Órán szó volt, hogy a honlapunkat feldobhatjuk az oldalba beillesztett névnap, dátum esetleg horoszkóp szkripttel. A header alá és az oldal tartalma fölé egy szalagszerű blokkban oldottam meg az első kettő megjelenítését. A horoszkóppal itt nem foglalkoztam.
Ehhez segítségül hívtam egy magyar fejlesztésű bővítményt, mely “International Namedays” névre hallgat.
Ahhoz azonban hogy ilyen vagy hasonló megjelenést és tartalmat kapjon elég sokat kellett rajta dolgozni. Mivel made in hungary ezért szerencsére nem kell agyonparaméterezni, nem kell nyelvet, időzónát beállítani. Egyszerűen csak ezt a kódot kell beilleszteni honlapunkon, ahová elhelyezni szeretnénk (én a header.php fájl végére illesztettem):
<?php kgyt_nameday(); ?>
Ettől azonban még túl sokat ne várjunk, mert ez csak egyszerűen kiírja a mai névnapot és slussz.![]()
Hát ez bizony nem sok.
Azt hogy mit szeretnénk ezzel, azt bizony nekünk kell megoldani.
Első gondolatom az volt, hogy kiíratom: Ma –névnap — névnapja van, holnap — névnap — névnapja lesz. Ehhez picit ki kellett egészíteni szöveggel, melyet a php echo-val illesztettem be, valamint csak elő kellett venni a bonyolultabb paraméterezhető változatát is.
Felvettem egy változóba az aktuális időt és ahhoz 24*3600 másodpercet, azaz pont egy napot hozzáadva kérdeztem meg tőle az aktuális (azaz következő napi) névnapot.
<?php
$t=time();
echo " - Ma ";
kgyt_nameday();
echo " névnapja van, holnap ";
kgyt_nameday( true, hu, time() + ( 3600 * 24 ) );
echo " névnapja lesz.";
?>
Alakul:
![]()
..de nem az igazi.
Ha már megvan az aktuális idő, akkor abból írassuk ki az aktuális dátumot is.
<?php
$t=time();
echo(date("Y.m.d. ",$t));
echo " - Ma ";
kgyt_nameday();
echo " névnapja van, holnap ";
kgyt_nameday( true, hu, time() + ( 3600 * 24 ) );
echo " névnapja lesz.";
?>
![]()
Sokkal jobb. De hiányolom még a nap nevét, és szebb lenne a hónap is inkább névvel, mint számmal lenne kiíratva. Na ezt már nem olyan egyszerű, mert alaból csak angolul tudnánk kiíratni. Ezért újabb ügyeskedés:
Felvettem két tömböt, egyikben megadtam a napok, másikban a hónapok magyar neveit. Majd a nap ill. a hónap számának megfelelő elemet írattam ki a tömbből.
date(w) – a napok számát adja vissza 0-6-ig
date(n)-1 – a hónapok számát adja vissza 1-12
Azért (n)-1, mert a tömbök elemei 0-tól kezdődnek, és nem 1-től.
<?php
$t=time();
$napok = Array ("Vasárnap","Hétfõ", "Kedd", "Szerda","Csütörtök","Péntek","Szombat");
$honapok=Array("január","február","március","április","május","június","július","augusztus","szeptember","október","november","december");
$ma= date("w"); /** w - A numeric representation of the day (0 for Sunday, 6 for Saturday)*/
$ho= date("n")-1; /** n - A numeric representation of a month, without leading zeros (1 to 12) */
echo date("Y. "). $honapok[$ho]." ". date("d. "). $napok[$ma];
echo " - Ma ";
kgyt_nameday();
echo " névnapja van, holnap ";
kgyt_nameday( true, hu, time() + ( 3600 * 24 ) );
echo " névnapja lesz.";
?>
![]()
Szinte tökéletes, majdnem olyan, mint ahogy kigondoltam. Viszont még egy kis formázást hiányolok, az egészet kicsit ki kellene emelni az oldal háttérszínéből, valamint a neveket is szeretném kiemelni.
Hogy tudjam őket formázni, ez egészet egy DIV-be rakom, a két névnek pedig adok egy span osztályt:
<?php
$t=time();
$napok = Array ("Vasárnap","Hétfõ", "Kedd", "Szerda","Csütörtök","Péntek","Szombat");
$honapok=Array("január","február","március","április","május","június","július","augusztus","szeptember","október","november","december");
$ma= date("w"); /** w - A numeric representation of the day (0 for Sunday, 6 for Saturday)*/
$ho= date("n")-1; /** n - A numeric representation of a month, without leading zeros (1 to 12) */
echo '<div class="nevnap">';
echo date("Y. "). $honapok[$ho]." ". date("d. "). $napok[$ma];
echo " - Ma ";
echo "<span class='name_style'>";
kgyt_nameday();
echo "</span>";
echo " névnapja van, holnap ";
echo "<span class='name_style'>";
kgyt_nameday( true, hu, time() + ( 3600 * 24 ) );
echo "</span>";
echo " névnapja lesz.";
echo '</div>';
?>
Ezzel már adhatunk is neki különböző formázásokat. A sablon style.css fájljához a következő kódot adtam hozzá:
.nevnap {
border: 1px solid black;
background-color: #c9d9de;
color: #000000;
width: fit-content;
font-size: smaller;
padding: 5px;
border-radius: 5px;
box-shadow: 1px 1px 1px 1px #797979;
}
span.name_style {
font-weight: bold;
color: #e30a0a;
}

Az eredmény szinte tökéletes! 🙂
