PDA

Zobacz pełną wersję : Tworzenie własnego modułu.



hCr
28-11-2006, 22:26
Witam,

chciałbym stworzyć własny moduł wyświelający daną treść - dla użytkowników zalogowanych, a inną dla niezalogowanych, jak to zrobić? Ewentualnie jak dodać moduł, który nie będize się wyświetlał po zalogowaniu użytkownika.

Przykład:
Niezalogowanym wyświetlany jest tekst: "Żeby ściągnąć plik musisz się zalogować"
Po zalogowaniu: "Ściąnij plik, link: www.xxxxxxx.pl"

Z góry dzięki za pomoc.

hCr
28-11-2006, 22:41
I jeszcze jedno pytanie, co zrobić aby moduł był wyświetlany tylko w artykułach z danej sekcjii?

Rybik
29-11-2006, 04:59
/components/com_content/content.php dla wersji 1.0.10 po wgraniu łatek

1. odnalezc funkcje showItem
2. dopisac kod ktory podalem w ponizszym listingu (nie caly oczywiscie tylko to skomentowane od START do END, umiescilem 2 "funkcje" pierwsza zbiera nazwe a druga id (krotsza, mniejsze ryzyko wysypki)



function show( $row, $params, $gid, &$access, $pop, $option='com_content', $ItemidCount=NULL ) {
global $database, $mainframe;
global $cache;
$noauth = !$mainframe->getCfg( 'shownoauth' );


/* spy for section name by rybik START */
$section_r = new mosSection( $database );
$section_r->load($row->sectionid);
$_SESSION['nazwa_sekcji'] = ($section_r->title);
/* spy for section name by rybik END */

/* spy for section id by rybik START */
$_SESSION['numer_sekcji'] = $row->sectionid;
/* spy for section id by rybik END */



od teraz w pliku index.php naszego szablonu mamy do dyspozycji 2 zmienne
$_SESSION['nazwa_sekcji'] i $_SESSION['numer_sekcji']

i mozemy uzaleznic ladowanie jakiejs pozycji modulow od tej zmiennej lub w samym module sprawdzac jej wartosc

dziala wszedzie gdzie widac artykul , pojedynczy albo blog oczywiscie jak mamy artykuly z roznych sekcji to kazdy kolejny nadpisze poprzednika, wiec wartosci beda prawidlowe tylko dla ostatniego z nich (nie chcialo mi sie robic tablicy :) )

madrzejszym sposobem byloby napisanie content-bota ktory tworzy w zmiennej sesji tablice sekcji/numerow dla wszystkich aktualnie pokazanych artykulow i potem obsluga tego w module ale ... to juz troche wiecej zabawy, jakby sie komu chcialo to wyglada to tak:
znajdujemy prostego bota operujacego przed wyswietleniem tresci (onPrepareContent) - np mosloadpositions, preparujemy instalke pod inna nazwa, sprawdzamy poprawnosc instalacji/deinstalacji, po zainstalowaniu grzebiemy na zywym organizmie :)
wypruwamy bota z funkcji pozostawiajac tylko wczytanie zmiennych globalnych, szczypczykami przez nosek wywlekamy numer id aktualnego artykulu (chwilowo brak pomyslu jak :P), po zaintubowaniu bazy danych sondujemy numer sekcji naszego arta i szukamy nazwy w tabeli jos_sections pod wskazanym numerkiem, nazwe hibernujemy w $_SESSION['nazwy_sekcji'], najlepiej wpostaci tablicy gdzie kolejne artykuly beda dopisywac swoje sekcje, zrecznie unikajac zdublowanych wpisow, potem w templaku bedzie mozna sprawdzic (if in_array('szukana nazwa sekcji',$_SESSION['nazwy_sekcji'])

rozwiazanie z botem jest korzystne bo mozna bez grzebania w kodzie wladowac to w dowolna joomle i nie martwic sie upgradami

rozwiazaniem najbezpieczniejszym jest ten jednolinijkowy wpis pobierajacy numer sekcji

pytania ? :D

hCr
29-11-2006, 18:43
A co do pierwszego pytania... Czy da się zrobić coś takiego aby moduł nie wyświetlał się zalogowanym użytkownikom?

Rybik
29-11-2006, 18:48
google->moshidefrom

hCr
29-11-2006, 20:02
świetnie, dokładnie o to mi chodziło!

Rybik
29-11-2006, 20:32
nie wiem jak teraz z obsluga botow w modulach, zdajesie ze jest ale jakbys mial klopoty to poczytaj o botach mosif

http://forum.joomla.org/index.php?topic=21743.msg223215