Autor | Zpráva | ||
---|---|---|---|
CZghost Profil |
#1 · Zasláno: 30. 6. 2013, 18:09:49
Nevím, zda se to tu už neprobíralo, nic podobného jsem nenašel, takže píšu:
Dělám skript pro náhodné vybírání Murphyho zákonů do záhlaví fóra, pro pobavení návštěvníků. Fórum používá nadstavbu phpBB, takže to trochu souvisí s nahrazovacími funkcemi softwaru. Mám HTML kód pro zobrazení Murphyho zákonů v záhlaví: <div id="murphylaw"> <span class="murphylaw-caption">{L_MURHPYLAW_CAPTION}:</span> {MURPHYLAWS} <div id="murphylaw-tip"> {L_MURPHYLAW_TIP} </div> </div> Mám vytvořené pole s několika řetězci představující jazykové proměnné pro Murphyho zákony: $murphylaws = array ( "{L_MURPHYLAW_CASE}", "{L_MURPHYLAW_CABEL}", "{L_MURPHYLAW_KEYBOARD}", "{L_MURPHYLAW_MOUSE}", "{L_MURPHYLAW_MONITOR}", "{L_MURPHYLAW_SPEAKERS}", "{L_MURPHYLAW_PRINTER}", "{L_MURPHYLAW_ROUTER}", "{L_MURPHYLAW_HDD}", "{L_MURPHYLAW_CPU}", "{L_MURPHYLAW_USB_CONNECTOR}", "{L_MURPHYLAW_HEADPHONES}", "{L_MURPHYLAW_MICROPHONE}", "{L_MURPHYLAW_HARDWARE}", ); Potřeboval bych nějak zajistit náhodné vybírání jednoho z řetězců {L_MURHPYLAW_*}, který se poté zobrazí namísto {MURPHYLAWS} Pro náhodné vybírání jsem vytvořil tento kód: srand(time()); $stringsCount=count($murphylaws); $randomPick=(rand()%$stringsCount); Dalším problémem je zajištění náhrady řetězce {MURPHYLAWS} za výběr z pole. Je to tohle? DEFINE("{MURPHYLAWS}",$murphylaws[$randomPick]); |
||
Tori Profil |
#2 · Zasláno: 30. 6. 2013, 18:37:00
CZghost:
Nestačilo by náhodně zamíchat pole (shuffle) a vybrat první prvek? |
||
Alphard Profil |
#3 · Zasláno: 30. 6. 2013, 18:54:34
Lepší (úspornější) bude array_rand().
Tomu nahrazování moc nerozumím, je tam použit nějaký šablonovací systém? |
||
CZghost Profil |
#4 · Zasláno: 30. 6. 2013, 19:12:34
Děkuju, to mě nenapadlo :)
Zkoušel jsem trochu Googlit ohledně tech proměnných typu {MURPHYLAWS} , ale nenašel jsem nic použitelného, asi hledám blbě :)
Vypadá to, že lepší je výběr přes array_rand() :)
Vytvořil jsem kód pro náhodný výběr filmu: <!DOCTYPE HTML> <html> <head> <meta charset="utf-8" /> <title>Náhodný výběr filmů</title> <?php $array = array( 'Postradatelní', 'Hellboy', 'Doba ledová', 'Hellboy 2: Zlatá armáda', 'Jako kočky a psi', 'Dívka na koštěti', '2012', 'Muži v černém 3', 'John Q', 'Johnny English', ); $random = array_rand($array,1); ?> </head> <body> Dnes se budeme dívat na film <i><?php echo $array[$random] ?></i>. </body> </html> {MURPHYLAWS} za tu náhodně vybranou položku (Murphyho zákon)
|
||
Taps Profil |
#5 · Zasláno: 30. 6. 2013, 19:15:56
CZghost:
podívej se na funkci <? str_replace(); ?> |
||
CZghost Profil |
#6 · Zasláno: 30. 6. 2013, 19:23:26
Alphard:
- Tomu nahrazování moc nerozumím, je tam použit nějaký šablonovací systém? Je tam systém skinů, které využívají tyto proměnné, ale nevím, jak nastavit vlastní. V databázi jsem nenašel nic, v jakém souboru jsou tedy tyto proměnné uloženy, nevím. Moje fóra využívají jediný skin, Prosilver, který lze také snáze upravovat ke svým potřebám. Do hlavičky bych chtěl vměstnat náhodný výběr těch Murphyho zákonů, ale nenašel jsem dokumentaci k phpBB, která vysvětluje funkci toho nahrazování. Taps: To mi moc nepomůže. Nevím, jakou funkci využívají moje fóra pro transkluzi proměnné. Nemyslím si, že používají právě str_replace(); , ale je to možné. Asi se raději zeptám vývojářů...
|
||
CZghost Profil |
#7 · Zasláno: 2. 7. 2013, 17:15:56
Tak pro proměnné v šablonách, jak jsem předpokládal, je připraven PHP soubor. Zjistil jsem, že všechny proměnné (kromě jazykových) se nacházejí v souboru
functions.php , který mimo jiné definuje i funkci jednotlivých proměnných.
Tohle je kód pro samotnou funkci vybírání M. zákonů: $murphylaws = array ( $user->lang['MURPHYLAW_CASE'], $user->lang['MURPHYLAW_CABEL'], $user->lang['MURPHYLAW_KEYBOARD'], $user->lang['MURPHYLAW_MOUSE'], $user->lang['MURPHYLAW_MONITOR'], $user->lang['MURPHYLAW_SPEAKERS'], $user->lang['MURPHYLAW_PRINTER'], $user->lang['MURPHYLAW_ROUTER'], $user->lang['MURPHYLAW_HDD'], $user->lang['MURPHYLAW_CPU'], $user->lang['MURPHYLAW_USB_CONNECTOR'], $user->lang['MURPHYLAW_HEADPHONES'], $user->lang['MURPHYLAW_MICROPHONE'], $user->lang['MURPHYLAW_HARDWARE'], ); $randomlaw = array_rand($murphylaws,1); Tohle je kód pro volání funkce pomocí proměnné: 'MURPHYLAWSTITLE' => $user->lang['MURPHYLAW_CAPTION'], 'MURPHYLAWS' => $murphylaws[$randomlaw], 'MURPHYLAWSTITLE' => $user->lang['MURPHYLAW_CAPTION'], je jakýsi hack pro zajištění překladu nadpisu pro M. zákony, bohužel ani to problém nevyřešilo...
Jinými slovy: Děkuju za snahu mi pomoci, velice si toho vážím. Tímto je problém Jak vyvolat náhodný výběr M. zákonů v záhlaví fóra vyřešen, nyní řeším jiný problém (ten s titulkem), který sem už ale nepatří. Ještě jednou díky, kromě titulku všechno funguje jak má :) |
||
Časová prodleva: 11 let
|
0