Autor | Zpráva | ||
---|---|---|---|
PanP Profil |
#1 · Zasláno: 23. 4. 2011, 14:58:35
Zdar,dá se udělat pro nepřihlášený uživatele na fóru aby odkazy na foru byly ukrytý? je to vůbec možný udělat?
|
||
Louka Profil |
#2 · Zasláno: 23. 4. 2011, 15:19:08
Dá se to udělat.
Ověříš, zda je uživatel přihlášenej (to umíš, ne?) a když nebude, tak bych to řešil preg_replace na výstupu: $vystup = preg_replace('<a href="[^"]+">[^<]+</a>',"<span class='no-login'>Tato část zprávy je pro nepřihlášené uživatele skryta. <a href='...'>Přihlaste se.</a></span>",$vystup); Asi mám ten regexp blbě ale, nejsem si jistej. |
||
PanP Profil |
#3 · Zasláno: 23. 4. 2011, 15:26:48
to neumim , umim jenom zaklady a jsem rád že něco udělám,za každou pomoc jsem rád
|
||
PanP Profil |
#4 · Zasláno: 23. 4. 2011, 16:04:31
nebo by stačilo normal okno který se otevře při vstupu na forum a tam 2 možnosti - registrace nebo přihlásit.. vim jak se dělá okno ale nevim jak udělat okno že po přihlášení se už neukáže
|
||
Louka Profil |
#5 · Zasláno: 23. 4. 2011, 16:05:35
Aha. no s miniBB zkušenost nemám, takže nevím jak by to šlo implementovat do něj. ale tohle fórum je založený na miniBB, tak by ti mohli pomoci ostatní. Vydrž, někdo to bude vědět.
|
||
PanP Profil |
#6 · Zasláno: 23. 4. 2011, 16:06:36
Louka:
ok,díky :) |
||
Louka Profil |
#7 · Zasláno: 23. 4. 2011, 16:11:02
To okno: musel bys ho udělat tak, aby se zobrazilo nepřihlášenýmu uživateli vždy, tedy nejen na úvodní stránce, ale i na výpisu vláken atd, jinak by šlo obejít.
Ale jde o to, jestli chceš, aby vyhledávače viděli obsah (bez odkazů) nebo aby viděli jen a pouze tu úvodní stránku (vyhledávač se nepřihlásí = nic neuvidí). Takže určitě výhodnější je skrýt jen odkazy. |
||
PanP Profil |
#8 · Zasláno: 24. 4. 2011, 10:44:25
tak zkoušim ten kod od Louka,akorad nevim co mam dát místo
$vystup |
||
Louka Profil |
#9 · Zasláno: 25. 4. 2011, 14:38:01
Výstup je to, co generuje miniBB jako HTML kód kterej pošle prohlížeči. Takže to musíš nahradit nějakou interní proměnnou, ale detaily systému neznám a vypadá to, že ostatní také neporadí...
|
||
Str4wberry Profil |
#10 · Zasláno: 25. 4. 2011, 15:14:43
Tak já teda poradím. V souboru
bb_func_thread.php je v proměnné $posterText text určený k vypsání. U něj stačí nahradit ty odkazy, třeba způsobem [#2], je-li funkční. Zda je uživatel přihlášen zjistíš z proměnné $logged . Takto je to v cca 7 let staré miniBB, jejíž kostru využívá tato diskuse, ale mohlo by to tak jít i v současné verzi. Případně bych zkusil pohledat na oficiálním webu, jestli taková možnost není jako plugin či přímo implementovaná v jádru.
|
||
PanP Profil |
#11 · Zasláno: 25. 4. 2011, 16:03:08
Str4wberry:
dík za pomoc,zkusim to a uvidim:) |
||
PanP Profil |
#12 · Zasláno: 25. 4. 2011, 16:25:09
tak jsem to našel
if(!isset($preModerationType) or $preModerationType==0) $posterText=$cols[3]; elseif($preModerationType>0 and isset($premodPosts) and in_array($cols[6], $premodPosts)) $posterText=$l_postQueued; else $posterText=$cols[3]; když to vymažu tak zmyzí text z tematu,takže to je ono na 100%,ale nevim jaký odkazy nahradit tim způsobem #2 |
||
Str4wberry Profil |
#13 · Zasláno: 25. 4. 2011, 16:56:56
Pokud ten kód z [#2] funguje, tak nejspíš toto přidat pod to:
$posterText = ($logged ? $posterText : preg_replace('<a href="[^"]+">[^<]+</a>',"<span class='no-login'>Tato část zprávy je pro nepřihlášené uživatele skryta. <a href='...'>Přihlaste se.</a></span>",$posterText)); |
||
PanP Profil |
#14 · Zasláno: 25. 4. 2011, 16:59:59 · Upravil/a: PanP
píše to chybu
Warning: preg_replace() [function.preg-replace]: Unknown modifier '[' in /home/xxxxxx.com/xxxxxxx.com/Forum/bb_func_vthread.php on line 289 |
||
Str4wberry Profil |
#15 · Zasláno: 25. 4. 2011, 17:05:03
Hm, kód z [#2] je špatně. :–)
Pro zachycení odkazů bude stejně zřejmě nejlepší vybrat pattern ze souboru bb_codes.php z funkce deCodeBB .
|
||
PanP Profil |
#16 · Zasláno: 25. 4. 2011, 17:08:18
Str4wberry:
z bb_codes.php function deCodeBB($msg) { |
||
PanP Profil |
#17 · Zasláno: 25. 4. 2011, 17:40:58
$vystup = "bla bla bla"; if($prihlasen == 0) { $vystup = preg_replace('Tato část zprávy je pro nepřihlášené uživatele skryta. Přihlaste se.",$vystup); } echo $vystup; nemohlo by to být takto? |
||
Str4wberry Profil |
#18 · Zasláno: 25. 4. 2011, 21:17:00
Zkus se nad tím trochu zamyslet. Podívej se na funkci
preg_replace — první parametr je regulární výraz (v tvém případě by měl umět sežrat odkaz*), druhý parametr je řetězec, kterým se má odkaz nahradit, a třetí je řetězec, ve kterém se hledá a nahrazuje (v tvém případě $posterText – tedy proměnná se zprávou).
*) Tím „vybrat pattern ze souboru“ bylo myšleno to, že si v té funkci najdeš regulární výraz, který už miniBB diskuse používá pro rozpoznání HTML odkazu. V této diskusi je to například „ /<a href=\"([^\"]+)\" target=\"(?:_new|_blank|_self)\"(?: rel=\"nofollow\")?>(.+?)<\/a>/i “, v nové versi miniBB to může být jiné, proto si ho tam najdeš a použiješ v té funkci preg_replace .
Potom už zbývá vložit o zmíněné kroky upravený řádek z [#13]. To je vše. A tohle je můj poslední příspěvek v tomto vlákně. |
||
PanP Profil |
#19 · Zasláno: 25. 4. 2011, 22:12:30
$posterText = ($logged ? $posterText : preg_replace('/<a href=\"([^\"]+)\" target=\"(?:_new|_blank|_self)\"(?: rel=\"nofollow\")?>(.+?)<\/a>/i',"<span class='no-login'>Tato část zprávy je pro nepřihlášené uživatele skryta. <a href='...'>Přihlaste se.</a></span>",$posterText)); paráda,už to funguje,ale žere to odkazy i přihlášenejm :D |
||
Keeehi Profil |
#20 · Zasláno: 25. 4. 2011, 22:21:33
PanP:
Mají přihlášení v $logged true? Nejspíše ne, takže chyba musí být v přiřazování přihlášeným true do proměnné $logged. |
||
PanP Profil |
#21 · Zasláno: 25. 4. 2011, 22:24:23
Keeehi:
kde to zjistim? |
||
Keeehi Profil |
#22 · Zasláno: 25. 4. 2011, 22:27:37 · Upravil/a: Keeehi
PanP:
No v tom samém scriptu (resp. i v includovaných) někde nad tím řádkem, co jste nám jsem napsal. Jak rozlišujete přihlášeného a nepřihlášeného uživatele? Jestli potřebujete zjisti, co se doopravdy nachází v proměnné $logged, dejte před ten váš řádek: var_dump($logged);
|
||
PanP Profil |
#23 · Zasláno: 25. 4. 2011, 22:36:29
var_dump($logged); když to dam před ten řádek tak to vypíše do headru asi 4x NULL |
||
PanP Profil |
#24 · Zasláno: 25. 4. 2011, 22:39:25 · Upravil/a: PanP
tak už to mam
$user_id!=0 |
||
Časová prodleva: 13 let
|
0