Vienas ikgadējās rutīnas mazāk
Iekš “About me” sadaļas katru savu dzimšanas dienu man nācās atjaunot savu vecumu. Risinājums ar PHP būtu ļoti vienkāršs, bet WP man neļauj pa tiešo lapā likt to iekšā. Negribēju ilgi meklēt Internetā un radu citu risinājumu.
Tātad, izveidoju php failu: getYear.php:
<?php
//Esošo pilno gadu ievietojam mainīgajā
$dateNow = date(”Y”);
//Atņemam no mainīgā manu dzimšanas gadu un izvadām
print $dateNow-1987;
?>
Sakarā ar kļūdu, kods tika palabots uz šādu:
<?php
$yearNow = date(”Y”); //pilns gads (4 cipari)
$monthNow = date(”n”); //1 – 12
$dayNow = date(”j”); //1 – 31
//Ja tagad ir Janvāris un datums ir >=18 vai arī tagad ir kāds cits mēnesis
//kas ir tālāks par Janvāri – tad man ir (jau bija) dzimšanas diena
if (($monthNow == 1 && $dayNow >=18) || ($monthNow > 1))
//Atņemu no esošā gada, savu dzimšanas gadu
print $yearNow – 1987;
else
//Citādi, tagad varbūt ir Janvāris, bet vēl nav 18. datums
//atņemu dzimšanas gadu + 1, lai sanāk pareizi gadi
print $yearNow – 1988;
?>
Izlaižot šādu failu caur PHP interpretatoru, iegūsim 22 (jo 2009-1987 = 22). Tālāk iemetu šo failu iekš saita root direktorijas un man vajadzēja šo informāciju ievietot pie visa pārējā teksta. Lai to izdarītu pielietoju Ajax noob skillu.
Uzrakstīju mazu JavaScript failu: myJS.js:
var XMLHttpRequestObject = false;
if (window.XMLHttpRequest) {
XMLHttpRequestObject = new XMLHttpRequest();
}else if (window.ActiveXObject) {
XMLHttpRequestObject = new ActiveXObject(”Microsoft.XMLHTTP”);
}
function getData(dataSource, divID)
{
if (XMLHttpRequestObject) {
var obj = document.getElementById(divID);
XMLHttpRequestObject.open(”GET”, dataSource);
XMLHttpRequestObject.onreadystatechange = function()
{
if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
obj.innerHTML = XMLHttpRequestObject.responseText;
}
}
XMLHttpRequestObject.send(null);
}
}
(Jā, es zinu, ka ar jQuery tas būtu ātrāk un īsāk, bet nāktos ielādēt lielāku kodu no kura es 99% neizmantotu)
Caur WP rediģējot header sadaļu pirms paša </head> pievienoju skriptu:
<script type=”text/javascript” src=”/myJS.js”></script>
Un pārtaisīju arī <body> tagu mazliet uz -> <body onload=’getData(”/getYear.php”, “myYears”)’>
Pēc tam devos rediģet lapu “About me”… Pārslēdzos no “Visual” uz “HTML” un pievienoju nepieciešamajā vietā šādu tagu:
<noscript><b>[You must enable JavaScript in your browser to see how old I am at this moment
]</b></noscript> <span id=”myYears”></span>
Plusi:
- Pielietojot PHP iegūsim servera iestatīto gadu, respektīvi – ja lietotājs mainīs savā datorā gadu, es nepalikšu jaunāks vai vecāks
- Tipa Ajax FTW Web 2.0
- Pačakarējos – vēlāk noderēs skills
Mīnusi:
- Bez JS atbalsta neuzzināsiet cik esmu vecs
(noscript paziņos, ja vajag JS support) - Lieka ķēpa ar JS un PHP, jo varētu to vienkārši ievietot ar PHP
- Neverot pat “About me” sadaļu ielādējas mans JS un palaiž funkciju bezjēgā (mēģināju likt ar PHP pārbaudi if ($_GET['page_id'] == 2) un tad pievienot, bet diemžēl kaut, kas nesanāca)
- Kāmēr neielādējas visa lapa, neparādās mani gadi. (Gan jau var iztikt bez onload=”", bet domāju, ka nav tik traģiski ja parādās arī vēlāk)
Principā viss izveidotais ir vairāk mīnuss nekā pluss, jo Ajax pat nav uzlikts, lai pārbauda ik sekundi vai kādu laika sprīdi – vai gads ir mainījies. (Tas pat būtu muļķīgi, vai kāds tur vispār tajā lapā sēdētu un gaidītu ?
) Viss šis varētu aizvietoties ar vienkāršu php kodu, kurš atņem no esošā gada manu dzimšanas gadu…
Tas arī viss, tagad ieejot “About me” sadaļā JS (Ajax) izplēš no PHP faila iegūto gadu un ieliek to <span> tagā.
Ja kāds zina:
- Kā iekš WP lapas var izmantot PHP kodu;
- Ielādēt JS/Ajax kodu tikai nepieciešamajā man lapā;
dodat ziņu komentāros vai e-pastā.



Tev dzimšanas diena 1. janvārī?
Jo savādāk līdz dzimšanas dienai rādīs, ka esi gadu vecāks.
Dohh, pareizi – krietns bugs. Palabošu vēlāk
arī ../myJS.js nav pareizi, pietiek ar /myJS.js
a nafig tev AJAX ?
taisi visu ar JS
Ajax jau principā tas pats JS ir, vienīgi ar Ajax es izvelku ārā informāciju no PHP faila (respektīvi datumu un visu pārējo paņemu no servera iestatījumiem, lai būtu korektāk). Ja es liktu parasto JS new Date(); tad lietotājs, kuram nebūs korekts datums ievadīts (vai pats gads) – mainīs arī manu vecumu
Palaboju bugu ar datumu, cerams pareizi
Kas attiecās uz ../myJS.js tur es nepiekritīšu – jo bez tā nestrādā. WP failus meklē citā vietā un jāpiespiež ir paskatīties vienu direktoriju atpakaļ.Jāpiekrīt, ka var iztikt bez ../ pielietojot /. Kāds var paskaidrot atšķirību? Cik es atceros, tad ./ ir esošajā direktorijā, tas pats, kas vienkārši rakstīt faila nosaukumu. ../ – nozīmē direktoriju atpakaļ. Pastāstat kāds par to “/”
Jo man strādā kā ar ../myJS.js tā arī vienkārši /myJS.js – tas pats arī pie onload, palaižot JS funkciju un norādot PHP failu.