Nem bejelentkezett felhasználó elől eldugni a tartalom egy részét

Sziasztok!











Tudna valaki tippet adni arra, hogy hogyan lehetne megoldani a címben is található problémát?





Részletesebben:





Az oldalt látogató egyénnek két állapota van: be van jelentkezve (mindent láthat), nincs bejelentkezve (láthat néhány oldalt és egy bizonyos kategória bejegyzéseit)











És itt vagyok meglőve… kipróbáltam kismillió bővítményt, leírást, de tökéletes megoldást egyik se adott. A gond a nagy részükkel az, hogy általában “membership” bővítmények, azaz a már regisztrált tagok dolgait lehet állítani. Ha esetleg mégis lehet a nem bejelentkezetteknek, akkor az esetek 90%ban nem barátja a BuddyPressnek, de ha valami csoda folytán ezen is túl vagyunk, akkor nem képesek konkrét kategória szűrésre, stb.











Nyomozásaim során találtam egy régóta elhanyagolt bővítményt, a Private BuddyPress nevűt (http://wordpress.org/extend/plugins/private-buddypress/ ) ami jó is lenne, de bármit is mókolok, próbálok filtereket írni hozzá, egyszerűen nem hajlandó egy bizonyos kategóriát engedélyezni. (az oldalakat szépen engedélyezte)











Tud esetleg valaki valami tippet, amivel ez megoldható? Mert én már úgy érzem, átrágtam magam mindenen, hiába…

WP-Member

én kódolnék.





“if logged in” a megfelelő helyekre, oszt szevasz

Lehet bbcode-ot is csinálni belőle akár. :slight_smile:

Köszi a válaszokat!











A WP-Member kiesik, fizetős, és jelenleg a “vezetőség”, akivel együtt dolgozom, nem akar egy fillért se pluszba költeni (nonprofit oldal).





A BBCODE úgyszint kiesik, mert nem egy oldal/bejegyzés bizonyos részeit kell kizárnom, hanem komplett kategóriákat, oldalakat, és átirányítani a nem belépett usert a belépő/regisztráló részhez.











Az if logged in-t próbáltam, valamiért nem akarta az igazságot, akkor elkönyveltem, hogy biztos a BuddyPress-es login és profilkezelés a ludas az egészben, de majd teszek még egy próbát.

Na, volt egy kis időm megint foglalkozni a témával, és már megvan a fél siker, az if user logged in dolog működik - részlegesen. Teszt jelleggel csináltam egy category-1.php-t, és ezt raktam bele:













Be vagy jelentkezve!







Nem vagy bejelentkezve!















Na, ami történt: ha a menüben lévő 1-es ID-vel jelölt kategóriát választom ki (nevezzük magazinnak), akkor jó, kiírja azt, amit kell. De ha egy konkrét bejegyzést nyitok meg (akár másolt URL-ből, akár a főoldali listából), akkor már nem foglalkozik vele. De már haladok :slight_smile: Amit még össze kéne rakni: egy olyan category.php, amiben szépen fel tudom sorolni az ID-kat (lesz vagy kb 200, nem szeretnék ennyi külön fájlt csinálni ugyan azzal a tartalommal :D), valamint valahogy megcsinálni, hogy a fenti baki ne legyen :confused: Az első gondot próbáltam az if in_category()-val megoldani, de valamiért hibára futott a dolog, volt olyan eset, amikor sima fehér képernyőt kaptam szöveg helyett :confused: (még hibaüzenet se jött)











Be vagy jelentkezve!











Nem vagy bejelentkezve!























Na, ami történt: ha a menüben lévő 1-es ID-vel jelölt kategóriát választom ki (nevezzük magazinnak), akkor jó, kiírja azt, amit kell. De ha egy konkrét bejegyzést nyitok meg (akár másolt URL-ből, akár a főoldali listából), akkor már nem foglalkozik vele. De már haladok :slight_smile: Amit még össze kéne rakni: egy olyan category.php, amiben szépen fel tudom sorolni az ID-kat (lesz vagy kb 200, nem szeretnék ennyi külön fájlt csinálni ugyan azzal a tartalommal :D), valamint valahogy megcsinálni, hogy a fenti baki ne legyen irritated.gif Az első gondot próbáltam az if in_category()-val megoldani, de valamiért hibára futott a dolog, volt olyan eset, amikor sima fehér képernyőt kaptam szöveg helyett irritated.gif (még hibaüzenet se jött)

konkrét bejegyzést persze hogy nem irányítja a category! :wink:





viszont a kategóriába tartozó bejegyzések single php-jént is lehet sorszámozni kategória id szerint az alábbi functions bővítéssel:









add_filter(‘single_template’,



create_function(’$t’, ‘foreach( (array) get_the_category() as $cat )



{



if ( file_exists(TEMPLATEPATH . “/single-{$cat->term_id}.php”) )



return TEMPLATEPATH . “/single-{$cat->term_id}.php”;



}



return $t;’ ));











és akkor X kategória bejegyzéseit mindig a singleX.php fogja megnyitni, amiben szintén ifisuserloggedinelhetsz…





add_filter(‘single_template’,





create_function(’$t’, ‘foreach( (array) get_the_category() as $cat )





{





if ( file_exists(TEMPLATEPATH . “/single-{$cat->term_id}.php”) )





return TEMPLATEPATH . “/single-{$cat->term_id}.php”;





}





return $t;’ ));

















és akkor X kategória bejegyzéseit mindig a singleX.php fogja megnyitni, amiben szintén ifisuserloggedinelhetsz…

Köszi, én is valami single.php-s mókoláson agyaltam, de abba nem vetettem bele még magam. Először a fent említett gondot akarom megoldani, miszerint ne kelljen 200 category (és single) fájlt legenerálni, mert az nagyon nem mókás irritated.gif

az élet öröm móka és kacagás, add át magad neki :slight_smile:

Köszi! :smiley: De az első módosítást a lekérdezésben te fogod szerkeszteni az összes fájlban :smiley: A gond az, hogy az ELMÉLETÉT tudom a dolognak, de valahogy a gyakorlatba hiba csúszik :slight_smile:





Elvilekben a category.php-ban valami olyannak kéne lennie,hogy ha ez a kategória X,Y,Z és ha a user be van lépve akkor tartalom mutat; Ha a kategória X,Y,Z de nincs belépve, akkor goto egy regisztrációs oldal, vagy valami. Ha kategória A,B,C, akkor mindegy, hogy be van-e lépve, tartalom mutat.





És igazából a single.php is hasonló, csak ott azt kell vizsgálni, hogy a bejegyzés melyik kategóriába tartozik…

Csináld így:











if_is_category(‘id, id, id, di’)





majd if_user_logged_in -> ha nem style=“display: none;”











Ha adott kategóriában van, akkor ellenőrzi, hogy belépett a tag, majd ha nem, akkor css-el eltünteted a tartalmat ábrázoló div-et. A kódban ott lesz a tartalom, de a felhasználók 99%-a ezt nem nézi. Esetleg egy linket tehetsz a belépéshez.











Amúgy gyakorlatilag ezt a:




  • Ha x kategóriában van, akkor megnézzük belépett és ha nem





    megoldást be kell írni a the_content meghíváshoz és ennyi szerintem. :slight_smile:

Igen, ezt a fentit próbáltam, valamiért fehér képernyőre futott, de lehet, hogy rájöttem a hibámra, majd ha lesz időm, ránézek :slight_smile: köszi :slight_smile:

(Ha köszi, akkor a jobb alsó sarokban lévő kék “Köszi” az igazi. :stuck_out_tongue: )

(Mobilról nem mindig reagálja le :stuck_out_tongue: és onnan írtam :slight_smile: )

Üdvözlet!



csak egy apróság— a php kódok nem futnak általában maguktól — exec-php plugin



van benne pár deprecated php 5.4 alatt ha gond szedjük ki a =& new operátort és cseréljük = new -ra



ha ilyeneket írunk az oldalakban vagy a postok-ban:







Be vagy jelentkezve!







Nem vagy bejelentkezve!