WP plugin z naključnim povečevanjem cifre
 
r0ks0n 4. dec 2013 21:34:42 Pridružen od:
2. maj 2011
1070 objav
629 115 11
#1

Pozdravljeni,



Wordpressov plugin directory sem za to zadevo že več ali manj v celoti prebrskal, zato se obračam na forum po pomoč :) Iščem plugin ali kakšno drugo rešitev, ki bi mi cifro med tekstom v članku na vsake nekaj ur (recimo na vsake 8 ur) povečal za naključno cifro med 1 in 10.



Torej, če imamo recimo članek;



"Joža ima 10 jabolk in 20 hrušk" bi plugin vsakih osem ur povečal na način "Joža ima 14 jabolj in 20 hrušk".



Za vse predloge se vam že vnaprej zahvaljujem :)


všeč(0) ni všeč(0) spam(0)
 
perunpro 4. dec 2013 21:45:07 Pridružen od:
23. maj 2008
3360 objav
2892 217 19
#2

Cifro das v span/div z ID, nato pa z jQuerijem povecujes cifro :)


všeč(1) ni všeč(0) spam(0)
 
r0ks0n 4. dec 2013 21:52:23 Pridružen od:
2. maj 2011
1070 objav
629 115 11
#3

perunpro: hvala za hint! Ker nisem ravno mojster kode bi te prosil za kakšen sample kode, ki to dela, če imaš kje pri roki :)


všeč(0) ni všeč(0) spam(0)
 
sikmajnd 5. dec 2013 07:44:30 Pridružen od:
11. nov 2013
89 objav
156 9 1
#4

http://jsfiddle.net/9Jbgz/



Je pa zal pri tem ena velika pomanjkljivost. Zadeva se izvaja samo, ko je uporabnik na strani in še to vidi vsak uporabnik po svoje (glede na to kdaj je prišel na stran). Ob refreshu se nastavi nazaj na privzeto vrednost, ker se ne shranjuje v bazo.



Opcija je tudi, da zadevo rešuješ s PHPjem. V članku označiš število s posebno sintakso - npr. #10#.

Nastaviš cron job, da ti vsake N-časa izvaja skripto. V skritpi pa parsaš vsebino za vse vrednosti ki so znotraj #, jih spremeni in shrani nazaj.



Če poveš kaj točno bi rad dosegel, ti bomo lažje svetovali (:


všeč(1) ni všeč(0) spam(0)
 
r0ks0n 5. dec 2013 15:27:20 Pridružen od:
2. maj 2011
1070 objav
629 115 11
#5

sikmajnd: najlepša hvala za tole, vendar kot si rekel, težava je ravno v tem, da se ne shranjuje v bazo. Kaj praviš na tole: http://stackoverflow.com/questions/2540277/jquery-counter-to-count-up-to-a-target-number



Kaj točno bi rad dosegel? Hum, enostavno, da se številka znotraj texta povečuje za različno cifro med 1 in 5 na vsako recimo minuto in na povečani cifri ostane tudi ob refreshu. Sem že iskal vse možne plugine, pa brez uspeha, programer pa ravno nisem, da bi si to znal spisati sam :)


všeč(0) ni všeč(0) spam(0)
 
s1l3 5. dec 2013 16:08:13 Pridružen od:
6. jun 2012
345 objav
320 60 1
#6

Brez baze boš težko to naredil. Vrednosti se ne bodo ujemale. A to imaš vrednosti zapisane v posti ali page-ih. Povej kaj več kako imaš trenutno zastavljeno pa mogoče skupaj pridemo do kakšne rešitve.


všeč(0) ni všeč(0) spam(0)
 
r0ks0n 5. dec 2013 16:40:54 Pridružen od:
2. maj 2011
1070 objav
629 115 11
#7

Trenutno imam preprost page (ne post) znotraj Wordpressa z veliko besedila. V tem besedilu je trimestna cifra, katero bi rad avtomatsko povečeval (vsako povečanje bi bilo za naključno vrednost med 1 in 10, na vsako uro ali dve). Trenutno nimam glede tega nič še zastavljeno, kajti niti nimam pojma kako to izvesti :) Upam, da sem dovolj preprosto tole povedal, ker drugače gre res za simpl stvar za nekega programerja (predvidevam) zame pa cel projekt :D


všeč(0) ni všeč(0) spam(0)
 
carli 5. dec 2013 16:56:08 Pridružen od:
5. avg 2008
1258 objav
583 54 17
#8

Računaj vrednost na podlagi datuma in ure. Pa se bo povečevala neglede na obisk.


všeč(0) ni všeč(0) spam(0)
 
sikmajnd 5. dec 2013 19:14:59 Pridružen od:
11. nov 2013
89 objav
156 9 1
#9

V bazi v tabeli posts ustvariš novo polje 'postlastincrease' in mu podaš tip 'timestamp'.

Poglej ID od pagea, ki ga želiš urejati. Pri tem IDju nastavi timestamp na trenutni čas.



V administraciji odpri page in okoli števila, ki ga želiš spreminjati dodaj naslednji html: <spand id="st"></span>



Tole zalimas v functions.php:


if ( !function_exists ( "check_and_increase_value" )){
function check_and_increase_value(){

global $wpdb;

$post_id = 2; //nastavimo ID strani, kjer se nahaja številka
$posts = $wpdb->get_row("SELECT ID, post_content, post_last_increase FROM " . $wpdb->prefix . "posts WHERE ID = " . $post_id);

$lastTime = strtotime($posts->post_last_increase);
$casovnaRazlika = time() - $lastTime;

if($casovnaRazlika > 3600){

$regex = '#\<span id="st"\>(.+?)\<\/span\>#s';
preg_match($regex, $posts->post_content, $matches);
$match = strip_tags($matches[0]);
$steviloUr = round($casovnaRazlika / 3600);

$rand = 0;
for( $i = 0; $i < $steviloUr; $i++ ){
$rand += rand(1,10);
usleep(20000);
}

$novaVrednost = $match + $rand;
$newValueContent = preg_replace($regex, $novaVrednost, $posts->post_content);
$newLastTime = date('Y-m-d H:i:s', time());
$wpdb->update( $wpdb->prefix . "posts", array("post_content" => $newValueContent, "post_last_increase" => $newLastTime ), array( "ID" => $post_id ) );
}
}
add_action( "init", "check_and_increase_value" );
}

ID od pagea popraviš tudi v funkciji - spremenljivka $post_id



Zadeva deluje na tak način, da preveri kdaj je bil zapis nazadnje osvežen (to se zgodi vsakič, ko obiskovalec pride na stran) in če je od zadnje vrednosti preteklo več kot 1 ura, potem spremeni vrednost. V primeru, da nihče ne odpre strani v npr. 8 urah, potem bo skripta sama nadoknadila še za manjkajoče ure.



Preden poženeš naredi backup baze, za katero ne odgovarjam ;) Kodo bi lahko naredil še malce bolj proper in jo optimiziral, samo mislem, da bo zadostovala tvojim potrebam ;)



Tole sem probal na najnovešji verziji WP, čista inštalacija.


všeč(3) ni všeč(0) spam(0)
 
r0ks0n 5. dec 2013 20:43:48 Pridružen od:
2. maj 2011
1070 objav
629 115 11
#10

sikmajnd: resnično najlepša hvala za tole in za trud! Sem poskusil ampak ko odprem to stran ko vse to postorim dobim tale error:



Fatal error: Call to undefined function add_action() in /home/.../wp-includes/functions.php on line 38



V 38 vrstici kode je pa tale vrstica:



addaction( "init", "checkandincreasevalue" );


všeč(0) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se