PDA

Zobacz pełną wersję : Warunkowe wyświetlanie pozycji/modułu



cellardoor_ncx
26-05-2011, 18:29
Witam. Używam szablonu ja_purity II, dodałem swoją pozycję :

<div class="ja-content-main clearfix">
<jdoc:include type="modules" name="banner_glowna" />
<jdoc:include type="modules" name="imageslider" />
<jdoc:include type="component" />
<jdoc:include type="modules" name="mostread" />
</div>
W ustawieniach modułu slidera mam aby wyświetlał się tylko na stronie głównej.
Niestety, gdy próbuję coś wyszukać za pomocą modułu mod_search (standardowe szukaj w joomla), wyniki wyświetlają się na stronie głównej a wraz z nimi wspomniany slider. W załączniku wrzucam print screeny.

Chciałbym aby w rezultatach wyszukiwarki moduł ten się nie pokazywał. Znalazłem w JED moduł MetaMod, w którym można napisać instrukcje warunkowe w PHP aby się on nie wyświetlał, jednak nie wiem jak napisać takową. Proszę o pomoc z MetaMod lub wskazanie innego sposobu aby ukryć slider. Pozdrawiam

a_m
26-05-2011, 18:37
powyżej ja-content-main masz ja-mass-top, ja-content-top po co utrudniać sobie życie - przypisz slider i to coś drugie do tych pozycji lub zobacz jak to z nią np jest zrobione


<?php
$content_top = $this->getPositionName ('content-top');
if($this->countModules($content_top)) : ?> od tego zaczyna się instrukcja w tym szablonie

cellardoor_ncx
26-05-2011, 19:21
<?php
$content_top = $this->getPositionName ('content-top');
//var_dump($content_top);
if($this->countModules($content_top)) : ?>
<div class="ja-content-top clearfix">
<jdoc:include type="modules" name="<?php echo $content_top;?>" style="JAxhtml" />
</div>
Czyli powinienem sie podpiac pod pozycje ktora wskazuje content-top ? Probowalem przypisac modulowi pozycje 'content-top' ale chyba zle to rozumiem. Bardzo prosze o wiecej info.

a_m
26-05-2011, 20:31
1. w parametrach szablonów zobacz jakiego layoutu używasz: default layout -> rozwijana lista to powie

2. w ja_purity_ii/layouts znajdź plik php z nawą lauoutu

3. otwórz go

4. zaraz na początku masz


$positions = array (
'left1' =>'left',
'left2' =>'',
'left-mass-top' =>'',
'left-mass-bottom' =>'',
'right1' =>'right',
'right2' =>'',
'right-mass-top' =>'',
'right-mass-bottom' =>'',
'content-mass-top' =>'',
'content-mass-bottom' =>'',
'content-top' =>'',
'content-bottom' =>'',
'inset1' =>'',
'inset2' =>''
);

i w pisz np.


'content-top' =>'content-top',

5.w templateDetails.xml dodaj pozycję dopisując między <positions> ... </positions> - <position>content-top</position>


6. w parametrach modułu przypisz go do pozycji content-top

pawelSafiStudio
26-05-2011, 20:42
Witaj,

nie wiem czy o to Ci chodzi, ale możesz to obejść bez dodatkowych modułów. Ten sposób zadziała tylko wtedy gdy stronie głównej korzystasz z komponentu content i widoku frontpage (czyli na 99% tak właśnie jest). Spróbuj poniższego kodu:



<div class="ja-content-main clearfix">
<jdoc:include type="modules" name="banner_glowna" />
<?php
if(JRequest::getVar('view')=='frontpage'){
?>
<jdoc:include type="modules" name="imageslider" />
<?php
}
?>
<jdoc:include type="component" />
<jdoc:include type="modules" name="mostread" />
</div>

cellardoor_ncx
26-05-2011, 20:45
Dzieki ! nie spotkałem się jeszcze z tym sposobem.

Slider jest przypisany do content-top, wyświetla się w dobrym divie, ale nadal wyniki wyszukiwania są pod sliderem. Jakieś sugestie ?

EDIT : @pawelSafiStudio
Ten sposób działa, bawiłem się wcześniej w pisanie warunku na $_GET['option']=com_search ale po prostu nie działał.

Czy za pomocą tego JRequest::getVar('')=='' mogę pisać warunki na parametry przekazywane w URL ? Pozdrawiam.

a_m
26-05-2011, 20:57
możesz też - tworzysz menu, którego nie publikujesz, w nim łącze do "szukaj"; nie publikujesz modułu w tej pozycji tego menu

cellardoor_ncx
26-05-2011, 21:01
Faktycznie działa. Dzięki panowie za doedukowanie.

pawelSafiStudio
26-05-2011, 22:53
@cellardoor_ncx
Ja w niektórych projektach tworzę warunkowe wyświetlanie modułów, w zależności od parametrów URL. Czasami jest to bezpieczniejsze, bo nie zależnie jaki Itemid wkradnie się do adresu, warunki wyświetlania są ograniczone także innymi parametrami :) Jeśli udało mi się jakoś pomóc to bardzo się cieszę.

Pozdrawiam.

cellardoor_ncx
27-05-2011, 08:25
Dzieki za informacje, właśnie takiego sposobu teraz używam. Już wcześniej myślałem żeby wyłapywać zawartość $_GET i na tej podstawie filtrować ale zwykłe "wyłapanie" z tablicy nie działało, a JRequest::getVar('')=='' działa jak najbardziej. Swoją drogą czy to normalne ?

PS: Dla potomnych : potomnym polecam zainteresować się dodatkiem advanced module manager - must have moim zdaniem

pawelSafiStudio
27-05-2011, 09:28
Czy to normalne ?
To zależy jak kto na to patrzy :) Trzeba sobie jakoś radzić. Ja w skomplikowanych projektach wolę dodać parę linijek kodu więcej niż instalować dodatkowe moduły. Wg mnie jest to mniej kosztowne dla serwera. Ale tak jak mówię, każdy zapewne ma swoje zdanie na ten temat.

Pozdrawiam.