PDA

Zobacz pełną wersję : jak wstawić instrukcję warunkową odnośnie bieżącej strony;



lamcpp
20-04-2010, 23:21
witam, jak zbudować warunek w instrukcji warunkowej if,
którego zadaniem będzie sprawdzanie czy użytkownik jest na stronie głownej, jesli tak to joomla wyswietli odpowiednią tresc jesli nie to wyswietli komponenty?
Słowem, jakby ktoś wiedział jak zbudować warunek który bedzie sprawdzał czy uzytkownik jest na stronie głownej
probuje cos takiego:
<?php if($this->tu_cos_co_sprawdzi_ze_wyswietlona_strona_jest_stro ną_glowną) : ?>
//bloki div i ciało strony

<?php else: ?>
<jdoc:include type="component" />
<?php endif; ?>

Bazyl
20-04-2010, 23:38
Strona frontowa to dwa warunki:

if(JRequest::getCmd( 'view' ) == 'frontpage' || JRequest::getVar('option', '') == ''){

coś się dzieje jeśli strona frontowa

}
else{

a tu jeśli nie

}Pozdrawiam Jolantę...

f1xer
21-04-2010, 01:17
to co napisał kolega bazyl nie do końca jest prawdą, otóż jako stronę domyślną możemy ustawić dowolny komponent/widok więc sprawdzanie view odpada, poza tym warunek ten byłby prawdziwy również dla podstron z danym widokiem a nie wykluczone, że komponent x również będzie miał widok frontpage. Po drugie option jest zawsze ustawione ponieważ wczytywana jest pozycja menu które jest domyślna więc musimy mieć dostęp do aktywnego widoku itd. Wydaje mi się że najbliżej prawdy będzie taka funkcja, choć w niektórych przypadkach i ona może okazać się nieskuteczna.


function isFront(){
//tworzymy zapytanie do bazy o domyślną pozycję, pobieramy id i link
$db=&JFactory::getDBO();
$sql="SELECT id,link FROM #__menu WHERE home=1";
$db->setQuery($sql);
$wynik=$db->loadObject();
//zmienna home przechowuje id do porównania z Itemid zapytania na stronie.
$home=$wynik->id;
//pobieramy wszystko po znaku ? z pola link wyniku zapytania $sql
$url=parse_url($wynik->link,PHP_URL_QUERY);
//parsujemy zmienną $url uzyskując tym samym zmienne $option, $view itd.
parse_str($url);
//pobieramy Itemid option i view z zapytania
$Itemid=JRequest::getInt('Itemid');
$qoption=JRequest::getCMD('option');
$qview=JRequest::getCMD('view');
//tworzymy warunek
if ($home==$Itemid && $view==$qview && $option=$qoption) {
return true;
} else {
return false;
}
}


i teraz warunek będzie wyglądał mniej więcej tak:



if (isFront()){
echo "Witamy na stronie głównej";
} else {
echo "Witamy na podstronie serwisu";
}


pisane na szybko ale przetestowane i się sprawdza choć w niektórych przypadkach i tak pewnie może okazać się że jest zawodna :/ problem co najmniej ciekawy :) jak wpadnę na jakieś bardziej sensowne rozwiązanie to podam je od razu.