PDA

Zobacz pełną wersję : Wyświetlanie modułu



siristru
23-07-2009, 14:01
W Joomla! mamy do wyboru trzy możliwości wyświetlania modułów:

- wszystkie czyli zawsze i wszędzie
- brak - nie wyświetla wcale
- zaznaczone na liście

I tu mam problem. Na swoim portalu chcę by tylko w jednym przypadku (odnośniku w menu) moduł umieszczony po prawej był nie widoczny (potrzebuję w więcej miejsca by wyświetlać listę wyników wyszukiwania z CiviCRM).

Użyłem możliwości wyświetlania modułu "zaznaczone na liście". Jednak to powoduje, że moduł nie wyświetla się w artykułach czy komponentach (np. galeria JoomGallery) nie umieszczonych w menu.

Czy nie można zrobić tak, że dany moduł będzie wyświetlał się wszędzie poza jednym wskazanym miejscem??

zwiastun
23-07-2009, 14:49
Można, umieścić go wprost w szablonie i okodować tak, żeby się pokazywał wszędzie, gdzie chcesz, używając instrukcji warunkowej, np:

<?php
if(JRequest::GetVar("Itemid")!=4): ?>
<jdoc:include type="module" name="nazwamodulubez mod_" style="none" />
<?php endif; ?>

siristru
23-07-2009, 15:33
Dopiero uczę się kodowania php - dlatego wybacz, potrzebuję dalszych wyjaśnień.

Z tego co rozpoznaję w kodzie to widzę osadzenie modułu. Opisany przez Ciebie warunek spowoduje wyświetlanie go wyłącznie dla itemid równego 4?

Chciałbym odwrotnie - by warunek określał gdzie się ma NIE wyświetlać.

Odnośnik w menu do wyszukiwania w CviCRM ma swój itemid ale wyniki są już pokazywane tak:


index.php?option=com_civicrm&task=civicrm/profile&&_qf_Search_display=true&qfKey=8358dea2cda745a9790969583642619bSzczerze mówiąc nie wiem jaki warunek mam zawrzeć...

zwiastun
23-07-2009, 15:35
warunek masz dla idtemid, które nie jest równe 4, czyli przy tym nie będzie się wyświetlać, a wszędzie indziej będzie. A o to Ci chodzi

siristru
23-07-2009, 23:31
Teraz rozumiem znaczenie !=wartość. Dziękuję za lekcję PHP ;) Jutro sprawdzę jak to mi zadziała.

siristru
24-07-2009, 09:31
Sposób działa wyśmienicie - ale tylko jedynie kiedy w ciągu znaków występuje itemid. Jeśli go nie ma moduł (zgodnie z warunkiem) jest widoczny.

Czy da się zrobić by warunek dotyczył zarówno itemid jak i wszelkich powiązań z com_civicrm?

malkowitch
24-07-2009, 12:20
tak.
JRequest::getVar() pobiera wartość wyranej zmiennej więc możesz operować także na komponentach jak poniżesz:

if( JRequest::getVar('option')!='com_civicrm' ):To rozwiązanie będzie całkowicie niezależne od menu i itemid bo option jest elementem wymaganym.

siristru
24-07-2009, 12:29
Dziękuję to załatwia sprawę.

arthe
27-07-2009, 13:48
Witam. Ja mam podobne pytanie i nie za bardzo wiem jak wykombinować by moduł galerii był wyświetlany TYLKO i wyłącznie na stronie głównej (dział aktualności) natomiast po kliknięciu w jakikolwiek artykuł ( w tym dziale) znikał ten moduł.

W skrócie działa tylko w kategorii aktualności ale już w samych artykułach tej kategorii i innych jest wyłączony.

Z góry dziękuje za pomoc.

malkowitch
27-07-2009, 14:00
Sam sobie zaprzeczasz, bo piszesz, że widoczny jest na stronie głównej a jak klikniesz na artykuł to znika. Następnie piszesz, że chcesz żeby był widoczny tylko na stronie głównej.
Zdecyduj się.

arthe
27-07-2009, 14:39
Przeczytaj jeszcze raz uważnie co napisałem, bo napisałem poprawnie.

Chcę by wyświetlał się tylko na stronie głównej (u mnie jest nią kategoria aktualności) natomiast na żadnej innej stronie nie może się wyświetlać.

Napisałem sobie prosty warunek spełniający tylko to założenie, że wyświetla się tylko w kategorii aktualności, ale jak klikam w artykuł w tym dziale to dalej zostaje ten moduł zamiast zniknąć.

malkowitch
27-07-2009, 14:55
tak byś chciał :"by moduł galerii był wyświetlany TYLKO i wyłącznie na stronie głównej"

tak jest: "W skrócie działa tylko w kategorii aktualności ale już w samych artykułach tej kategorii i innych jest wyłączony."

Dla mnie to jest to samo chyba, że pominąłeś jakieś informacje lub jesteś na bakier z logiką.

Po drugie kategorią nie może być stroną główną bo jest to element com_content a nie com_frontpage (chyba, ze tu też coś poplątałeś)

To trzecie warunek który napisałem do się i do tego zastosować i u Ciebie. Wystarczyło by trochę pomyśleć:



<?php if( JRequest::GetVar("option")=='com_frontpage' ): ?>
<jdoc:include type="module" name="nazwa pozycji" />
<?php endif; ?>

arthe
28-07-2009, 13:20
Ok. Dzięki za pomoc. Zaraz sprawdzę.

Ja mam na stronie frontowej ustawioną kategorię aktualności tzn po wpisaniu adresu strony ta kategoria się wyświetla, mam nadzieję, że to zadziała.

dka
04-09-2009, 19:18
Witam, normalnie staram się zawsze sam dojść do rozwiązania problemu i najczęściej się to udaje tym razem chyba muszę dać za wygraną, mimo że czuje że rozwiązanie jest dosyć proste, ten temat i porady powinny pomóc jednak coś robię nie tak.

Chodzi o to że robię stronę, w której część modułów związana ogólnie z wyszukiwaniem musi mieć zaznaczoną opcję "Przypisanie menu:wszystkie", gdyż w przeciwnym wypadku znikają w wynikach wyszukiwania. Wszystkie te moduły znajdują się w prawej kolumnie templatki. Na stronie chcę zainstalować forum (com_kunena), które dobrze wygląda gdy jest na całej szerokości, a niezbyt dobrze gdy pojawiają się moduły w prawej kolumnie. Najlepszą opcją byłoby gdybym wpisał instrukcję warunkową wyłączającą całą pozycję modułów po wybraniu com_kunena, tylko nie wiem jak, próbowałem przerobić jakoś powyższe porady, ale nie daje to rezultatów.

Kod odpowiedzialny za wyświetlanie tej pozycji w templatce wyglada tak


<?php if ($this->countModules('column') && $column_position == "right") : ?>
<div id="right" style="width: <?php echo $column_width; ?>px;">
<jdoc:include type="modules" name="column" style="custom"/>
</div>
<?php endif; ?>Czy ktoś byłby w stanie mi pomóc i podać jakiego w tym wypadku dokonać wpisu, aby po wejściu na forum cała pozycja modułów znikała?

zwiastun
04-09-2009, 20:11
1. A która to wyszukiwarka obsługuje przeszukiwanie modułów? Przecież moduły (poza b. nielicznymi wyjątkami) nie mają własnych treści, pobierają je czy to z komponentów czy to z innych źródeł.
2. Forum Kunena przypisz do innego szablonu (lub do kopii szablonu), w którym nie będzie żadnych pozycji modułów

dka
04-09-2009, 20:58
Hmm faktycznie o taki rozwiązaniu nie pomyślałem, tak to jest jak się człowiek jakiejś myśli uczepi... Dzięki, popróbuje gdy już wszystko skonfiguruje...

Chodziło oczywiście o fakt, że gdy klika się "wyszukaj" w module, to w wynikach wyszukiwania, jeżeli nie jest on przypisany do wszystkich pozycji menu, moduł znika co utrudnia ponowne wyszukiwanie.

zwiastun
04-09-2009, 21:00
Tobie chodzi o moduł wyszukiwarki? Umieść go w miejscu, w którym nie będzie znikał (np. obszar nagłówka!) lub dodaj jako pozycję menu!

dka
04-09-2009, 22:15
Normalnie tak bym zrobił, ale to wyszukiwarka (a nawet dwie) do komponentu z listami wyboru według różnych parametrów. Opcja z kopią szablonu zdaje się być najlepszą skoro nie wchodzi w grę opcja ze znikającą pozycją modułów.

siristru
08-09-2009, 11:45
Czy ktoś może mi pomóc i podać jak brzmiałby warunek dla wyświetlania modułu A dla zarejestrowanych w innym przypadku modułu B?

ppilus
08-09-2009, 12:52
Może chodzi o coś takiego ? np. tutaj http://forum.joomla.pl/showthread.php?t=28194

siristru
23-09-2009, 12:29
Tak, to będzie dobre. Chciałbym jeszcze prosić o dalszą pomoc.

Ustaliłem wyświetlanie modułu dla "task" różnego od "edit":


<?php if(JRequest::GetVar("task")!=edit): ?>
<jdoc:include type="modules" name="right" style="rounded"/>

<?php endif; ?>I faktycznie moduły znikają. teraz zależy mi by w tej sytuacji poszerzała się zawartość. W templatce są następujące warunki:



if ( $this->countModules('left + user1 + advert1') == 0) $a = '-noleft';
if ( $this->countModules('right + user2 + advert2') == 0) $b = '-noright';
Jaki warunek powinienem wpisać by w sytuacji task=edit otrzymać zmienną $b czyli '-noright' ?

malkowitch
23-09-2009, 12:37
Trochę marnie to wszystko skleciłeś i nie wiem czy o co Ci chodzi.
Powiedz dokładniej. Gdzie chcesz tą zmienną $b otrzymać/wsadzić i w jakiej sytuacji

malkowitch
23-09-2009, 12:43
Może Ci chodziło o coś takiego:


if ( $this->countModules('left + user1 + advert1') == 0) $a = '-noleft';
if ( $this->countModules('right + user2 + advert2') == 0 OR JRequest::getWord('task')!=='edit') $b = '-noright';
Jeśli brak będzie modułów w right, user2 i advert2 lub task będzie różne od edit to zwróci no-right

siristru
23-09-2009, 13:06
Zatem jeszcze raz;

- kiedy w strumieniu znaków pojawi się task=edit ma nie wyświetlać się kolumna prawa. Tak też zrobiłem używając warunku.
- jednocześnie, kiedy w strumieniu znaków pojawi się task=edit div content ma zostać poszerzony jakby otrzymał zmienną $b.

Bowiem zmienne wpływają na div content tak:



<div id="content<?php echo $a; ?><?php echo $b; ?>"><div id="content_in<?php echo $a; ?><?php echo $b; ?>">

siristru
23-09-2009, 13:10
Już sobie poradziłem. Prawie dobrze mnie zrozumiałeś :)
Chodziło by $b wychodziła w przypadku braku modułów right, user2 i advert2 i kiedy task jest RÓWNE edit.

Wszystko działa.

Dziękuję.

malkowitch
23-09-2009, 13:11
if ( $this->countModules('left + user1 + advert1') == 0) $a = '-noleft';
if ( $this->countModules('right + user2 + advert2') == 0 OR JRequest::getWord('task')=='edit') $b = '-noright';

mitring
30-09-2009, 19:40
Odświeżę temacik :P a jak ustawić menu bo mnie to męczy ;) aby było widoczne dla sekcji ?
http://img136.imageshack.us/img136/763/clipboard02k.png (http://img136.imageshack.us/i/clipboard02k.png/)

siristru
01-10-2009, 08:05
To co wskazałeś na obrazku to nie sekcja ale nazwa menu (pogrubiona kursywa). Pod nią są kategorie i podkategorie menu.

Tobie chodzi o to, że masz w systemie ustawioną sekcję "wellness" i chcesz by menu wellness wyświetlało się tylko dla artykułów załadowanych z tej sekcji. Czy tak?

mitring
01-10-2009, 17:02
Tobie chodzi o to, że masz w systemie ustawioną sekcję "wellness" i chcesz by menu wellness wyświetlało się tylko dla artykułów załadowanych z tej sekcji. Czy tak?
Dokłądnie tak, chcę ominąć zaznaczenie pozycji.

ketrab_eu
28-11-2009, 09:55
witam serdecznie,


nie mogłem znaleźć rozwiązania mojego problemu. mianowicie.

1. mam na stronie menu górne oraz 2 menu boczne
2. z menu górnego jedna z pozycji (xxxx) jest linkiem do artykułu
3. w artykule są linki do innych artykułów
4. utworzyłem 3 menu boczne w którym są linki do w/w artykułów

problem w tym, że chcę aby 3 menu było widoczne tylko po wejściu do artykułu xxxx z menu górnego oraz z artykułów z 3 menu bocznego

wydaje się ze funkcja "Przypisz do stron | pozycji menu" nie działa tylko w przypadku artykułów. jeśli przypisze np żeby nie pokazywała sie na stronie głównej a pokazywała się wszędzie to nie pokazuje się również w artykułach

wdzięczny byłbym za pomoc
pozdrawiam

siristru
28-11-2009, 10:48
Dokłądnie tak, chcę ominąć zaznaczenie pozycji.

To możesz pokombinować z układem warunków dla:

view=section&layout=blog&id=6

czyli

view=section
layout=blog
id=6 (czy też inny numer sekcji jaki ma u Ciebie w systemie sekcja Wellnes)

siristru
28-11-2009, 11:02
Skoro artykuł xxxx jest wywoływany z pozycji menu górnego, to można ustawić moduł by wyświetlał się tylko dla tego odnośnika w menu.

Jeśli utworzyłeś menu w którym są linki do tych artykułów to także powinieneś móc wskazać je w ustawieniach modułu i określić widoczność tego modułu dla tych linków.

Trzeba pamiętać tylko, że umieszczając linki w artykule muszą posiadać id odnośnika z menu w którym są umieszczone.

Czy tak masz wszystko poustawiane?

siristru
07-12-2009, 13:33
Tym razem ja poproszę o pomoc :) Otóż w mojej templatce szerokość 'content' jest określana funkcją:


function artxGetContentCellStyle($document)
{
$leftCnt = $document->countModules('left');
$rightCnt = $document->countModules('right');
if ($leftCnt > 0 && $rightCnt > 0)
return 'content';
if ($rightCnt > 0)
return 'content-sidebar1';
if ($leftCnt > 0)
return 'content-sidebar2';
return 'content-wide';
}

Chciałbym aby dla wartości 'option' równej 'com_acajoom' ustawiana była wartość 'content-wide'. Bowiem w indeksie templatki mam ustawione za pomocą warunku wyświetlanie modułów 'left' i 'right' i faktycznie nie widać ich przy option=com_acajoom. Jednak szerokość 'content' pozostaje taka jakby 'left' i 'right' wciąż były.

Czy ktoś moż emi podpowiedzieć co powinienem dodać do funkcji artxGetContentCellStyle by uzyskać efekt który opisuję??

primo
18-01-2010, 06:14
I ja walczę z warunkami :)

Chcę wyświetlić różny baner w topie z różnymi przyciskami w zależności od wersji językowej. Nie mam jednak pojęcia jak pobrać, aby banery były wyświetlane w zależności od adresu http. np: www.domena.pl - baner nr 1, www.domena.pl/de - baner nr 2 itd.

Wykorzystuję joomfish.

siristru
18-01-2010, 08:19
W joomfish wersja językowa rozróżniona jest parametrem:


lang=pl

Więc tworzysz warunek:


<?php if( JRequest::GetVar("lang")=='pl' ): ?>
<jdoc:include type="module" name="banner_polski" />
<?php endif; ?>

Warunek określa pojawienie się madułu z banerem wtedy kiedy "lang" równa się "pl".

Spróbuj.

primo
18-01-2010, 16:01
W joomfish wersja językowa rozróżniona jest parametrem:


lang=plWięc tworzysz warunek:


<?php if( JRequest::GetVar("lang")=='pl' ): ?>
<jdoc:include type="module" name="banner_polski" />
<?php endif; ?>Warunek określa pojawienie się madułu z banerem wtedy kiedy "lang" równa się "pl".

Spróbuj.
Zacząłem z tym walczyć dziś o 4 rano, ale poległem. Dzięki Tobie wreszcie się udało :) dziękuję bardzo !!!!

Andrzej_75
04-03-2010, 14:58
Witam .

Jeśli można to ja także przyłączę się do tematu , jakiś czas temu ja także miałem kłopot z wyświetlaniem modułów głównie chodziło mnie o to żeby forum kt. zainstalowałem (agora 3.10) żeby wyświetlało się bez modułów po lewo oraz po prawo, lecz był kłopot ponieważ gdy klikałem na linki jak rejestracja , przypomnienie nazwy, przypomnienie hasła ,wyniki sondy oraz linki do tematów to one także były widoczne bez modułów po lewo oraz po prawo, więc poszukałem czego co to mogło by poprawić i znalazłem jest to zaawansowany manager modułów (Advanced Module Manager) ,dzięki temu komponentowi udało mnie się poprawnie ustawić moduły tak aby wyświetlały jak chciałem tzn. na forum widok bez modułów po lewo oraz po prawo , zaś opisane linki do rejestracji , przypomnienie nazwy, przypomnienie hasła ,wyniki sondy oraz linki do tematów już działają poprawnie czyli wyświetla się prawa i lewa część z modułami .

Ten zaawansowany manager modułów znajdziecie na tej stronie http://joomlaupdater.com/extensions/27-admin-structure/45-advanced-module-manager.html
Nazwa pliku to : AdvancedModuleManager-v1.3.1.zip

jomart
12-04-2010, 11:30
A jeżeli bym chciał żeby moduł w danej pozycji wyświetlał się tylko w widoku artykułu ?

malkowitch
12-04-2010, 11:51
A np:


<?php if ( JRequest::getCMD('view')=='article' ) : ?>
<jdoc:include type="modules" name="pozycjamodulu" />
<?php endif ?>

jomart
12-04-2010, 12:02
Nie wyświetla wogóle tej pozycji :/

malkowitch
12-04-2010, 12:09
To był przykład i musisz zmienić pozycję.
Działa to oczywiście tak, że nie pokazuje całej pozycji jeżeli obecnie nie przeglądasz artykułu.
Jeśli chcesz tylko jeden moduł to albo piszesz tak (ale parametry modułu nie będzie można ustawiać):


<?php if ( JRequest::getCMD('view')=='article' ) : ?>
<jdoc:include type="module" name="nazwamodulu" />
<?php endif ?>


Ewentualnie tworzysz nową pozycję i zostawiasz tam tylko jeden moduł i stosujesz wcześniejsze rozwiązanie

jomart
12-04-2010, 12:19
Ok działa , problem tylko w tym że nie ma stylu modułu i nie wyswietla np . tytułu modułu

zwiastun
12-04-2010, 12:26
No to dopisz atrybut style. Bo domyślny jest bez ramki i bez tytułu. Prawdopodobnie style="xhtml"

jomart
12-04-2010, 12:30
ok juz mam , dzieki wielkie , i w ten sposób moge robić np na odwrót że jak przeglądam artykuł to nie ma innego modułu , zamiast viev będzie hide ?