PDA

Zobacz pełną wersję : jak wyświetlić moduł na str_głównej, ale...



adlibitum
23-11-2009, 23:45
Witam,
siedze i szukam i nie moge nic wymodzic.
mam design składajacy sie z 3 kolumn,
w srodkowej kolumnie "content" wyswietlam sobie moduł_1 a pod nim standardowo ogłoszonka obsługiwane przez komponent Sobi2.

Chciałbym aby ten moduł_1 wyswietlił sie tylko na stronie głównej a po wejsciu w detale danego wpisu juz sie nie wyswietlał a tak sie dzieje ???

nie wiem gdzie to zmienic??


prosze o pomoc

moje
23-11-2009, 23:47
W ustawieniach modułu, polecam www.wiki.joomla.pl ;)

adlibitum
23-11-2009, 23:53
dzieki,
a nie ma jakiegos knyfla który sie poprostu zaznacza i po sprawie :)

moje
23-11-2009, 23:56
Nie, trzeba odprawić czaru, tydzień pościć, kombinacją klawiszy Crtl+Alt+F13 usunąć śledzika z pewnego serwisu, zgnieść puszkę po napoju czołem i kleknąć przed komputerem.

A co ja wyżej napisałem? Widać koledze nie chciało się nawet do ustawień modułu zajrzeć.

KejeN
23-11-2009, 23:59
siema, no wlasnie w ustawieniach dowolnego modulu zaznacza sie na ktorych podstronach ma byc wyswietlany i po sprawie:)

pyziak
24-11-2009, 00:01
dzieki,
a nie ma jakiegos knyfla który sie poprostu zaznacza i po sprawie :)
JEST :P dział zleceń

adlibitum
24-11-2009, 00:02
panowie spokojnie taki leniwy to ja nie jestem :)
zaznaczyłem w ustawieniach modułu zeby wyswietlał sie na stronie głównej, ale jak pisałem wyzej jak klikam na stronie głównej jakies ogłoszenie i wchodze w jego szczegóły to system wchodzi w szczegóły ogłoszenia i moduł widac nadal,

pyziak
24-11-2009, 00:05
a może link do strony, będzie łatwiej tłumaczyć

zwiastun
24-11-2009, 00:09
Łatwiej nie będzie. Nie wiem, na czym polega trudność w zrozumieniu, że jeśli przypiszę moduł do jakiejś pozycji menu/strony, to będzie się wyswietlać na wszystkich stronach generowanych z tej pozycji menu. Na początku trzeba było tłumaczyć z angielskiego na nasze. Teraz widać nadeszła pora, że trzeba wrócić do korzeni - zacząć uczyć języka polskiego!

adlibitum
24-11-2009, 00:11
niestety lokalnie mam,

mam na stronie głównej wyswietlane ogłoszenia,
nad tymi ogłoszeniami w pozycji user2 jest wysietlany moduł, który ma w ustawieniach zaznaczony pozycje HOME tak aby wyswietlał sie tylko na stronie głownej.

ale jak klikam w szegóły ogłoszenia strona sie przeładowuje i pokazuje szczegóły ogłoszenia ale moduł powyzej cały czas widoczny jest..

moje
24-11-2009, 00:12
Bo to ta sama pozycja menu. Jest gdzieś w menu link do do pełnej listy ogłoszeń?

adlibitum
24-11-2009, 00:16
nie ma

zwiastun
24-11-2009, 00:18
@adlibitum: jeśli nie znasz lub nie rozumiesz języka polskiego, to może trzeba skorzystać z jakiegoś innojęzycznego forum. Suahili?

adlibitum
24-11-2009, 00:27
zwiastun dlaczego jestes taki złosliwy ??

pyziak
24-11-2009, 00:30
zwiastun dlaczego jestes taki złosliwy ??

@adlibitum wydaje Ci się

zwiastun
24-11-2009, 00:33
Złośliwy? Z podziwu nie mogę wyjść, że ktoś chce witrynę internetową prowadzić (albo tworzyć witryny) dla polskich użytkowników a nie rozumie prostych wyrażonych po polsku informacji!

adlibitum
24-11-2009, 00:40
stary jestes beznadziejny ... ktos cie musiał niezle lać w szkole, ze teraz taki złośliwiec z ciebie ... pozostaje tylko współczuć

koncze watek
dzieki za "pomoc" !!!

moje
24-11-2009, 00:44
To, że czegoś nie rozumiesz, nie oznacza, że inny będą myśleli za Ciebie, a jak czegoś nie wiesz, to trzeba o tym się dokształcić, tego też nikt inny za Ciebie nie zrobi.

My napisaliśmy co trzeba zrobić, teraz Twoja część zadania, żeby to zrozumieć i poczytać o Joomla.

pyziak
24-11-2009, 00:45
@adlibitum nieładnie, nieładnie, chyba byłeś/jesteś wychowywany tzw. bezstresowo

zwiastun
24-11-2009, 00:52
Tak rózgami mnie bili i pewno przez to nauczyłem się czytać co pisze, a nie doczytywać złośliwości.
- Nie raz podkreślałem w materiałach, że Joomla nie jest oparty na stronach, ale na pozycjach menu. Widać nie doczytałeś albo nie zrozumiałeś!
- Nie raz podkreślałem w materiałach, jak działają moduły, w tym objaśniałem, co to jest i po co przypisanie modułu do pozycji menu/stron. Widać nie doczytałeś albo nie zrozumiałeś!
- Napisałem to w skrócie kilka wiadomości powyżej! Bez echa. Widać nie doczytałeś albo nie zrozumiałeś!
- Powtórzył Ci innymi słowy @moje ("Bo to ta sama pozycja menu."). Widać nie doczytałeś albo nie zrozumiałeś!
- Zasugerowałem, żebyś przeczytał ze zrozumieniem. Ale ponieważ w szkole Cię nie "lali" to nie nauczyłeś się, że oprócz znaczenia dosłownego, jest także przenośne, a ironia niekoniecznie oznacza złośliwość.

Współczuj więc przede wszystkim sobie!
Na "przepraszam" nie liczę, bo pewno nie tylko nie bili, ale w ogóle nie uczyli dobrego zachowania! Np. że do ludzi w wieku podeszłym smarkaczom nie wypada mówic "stary!"

trzepiz
24-11-2009, 08:47
Amen,

morphic
02-12-2009, 00:50
Widzę, że się offtopic zrobił. Mam ten sam problem. Mianowicie pod stronę główną jest podpięty SOBI2, a w górnym menu podlinkowany Sigsiu Online Business Index 2 jako strona główna. No i teraz sprawa wygląda tak, że po bokach strony podpięte są moduły, a na środku wyświetlają się wpisy jako v-card. Po wybraniu wpisu otwiera się karta produktu, a boczne moduły zostają dalej przyprawiając mnie nie powiem o co.

Kombinowałem już na różne sposoby. Podpięte moduły wyświetlać się mają wyłącznie na stronie głównej, no a tutaj jest podpięte SOBI i wyświetlają się na wszystkich podstronach obsługiwanych przez ten moduł.

Wie ktoś może jak to rozwiązać?

Link do strony: pensjonat-ok.pl

Jola
02-12-2009, 01:47
Witam,
w takich przypadkach pomocne jest dopisanie warunku do wyświetlania wybranej pozycji menu w pliku szablonu.
Załóżmy , że Twoje wymagające ingerencji moduły umieszczone są w pozycji nazwanej: right.
W kodzie pliku index.php szablonu zazwyczaj występuje kod typu:

<?php if($this->countModules('right')) : ?>
<div >
<jdoc:include type="modules" name="right" style="rounded" />
</div>
<?php endif; ?>Należy dodać warunek sprawdzający np. zmienną GET sobi2Task, pierwszą linijkę należy zamienić na:

<?php if($this->countModules('right') && !JRequest::getVar( 'sobi2Task', '' )) : ?>

morphic
02-12-2009, 02:24
Rozumiem, że wówczas, gdy mam np warunek:


<?php echo artxPositions($document, array('top1', 'top2', 'top3'), 'art-block'); ?>

to zastąpić go tym podanym przez Ciebie, w postaci:


<?php if($this->countModules('top1', 'top2', 'top3')) && !JRequest::getVar( 'sobi2Task', '' )) : ?>
<div >
<jdoc:include type="modules" name="top" style="rounded" />
</div>
<?php endif; ?>

czy też może zrobić to jakoś inaczej. Pytam z ciekawości, bo dla topów nie ma przypisanego żadnego diva

Jola
02-12-2009, 02:29
Napisałam zazwyczaj, u Ciebie o wyświetlaniu decyduje funkcja artxPositions(). To ją trzeba zmodyfikować. Nie jestem pewna czy mam szablon tego typu.

morphic
02-12-2009, 02:33
Czyli do

<?php echo artxPositions($document, array('top1', 'top2', 'top3'), 'art-block'); ?>
mam coś dodać?

Czy to będzie wyglądało tak?


<?php echo artxPositions($document, array('top1', 'top2', 'top3'), 'art-block' && !JRequest::getVar( 'sobi2Task', '' )); ?>

Pytam bo mam jutro zalkę i muszę to mieć gotowe :D

Jola
02-12-2009, 02:38
Nie - trzeba zmodyfikować funkcję artxPositions(). Prawdopodobnie znajduje się w pliku functions.php (przykładowo w szablonie horseblack).
Czy u Ciebie wszystkie (top1, top2, top3) mają się nie wyświetlać?

morphic
02-12-2009, 02:45
U mnie na stronie głównej ma się wyświetlać wszystko to co teraz jest. Po wybraniu np. Villa Orlik znika wszystko poza headerem, footerem, user3 (menu) i zostaje karta produktu na całą stronę.

W pliku functions mam takie cuś:


function artxModules($document, $position, $style = null)
{
if ($document == null) {
// for Joomla 1.0
ob_start();
mosLoadModules($position, -2);
$content = ob_get_clean();
if (null == $style || 'xhtml' == $style)
return $content;
$decorator = 'artblock' == $style ? 'artxBlock' : ('artpost' == $style ? 'artxPost' : null);
$result = '';
$modules = preg_split('~</div>\s*<div class="moduletable">~', $content);
$lastModule = count($modules) - 1;
if ($lastModule > -1) {
$modules[0] = preg_replace('~^\s*<div class="moduletable">~', '', $modules[0]);
$modules[$lastModule] = preg_replace('~</div>\s*$~', '', $modules[$lastModule]);
foreach ($modules as $module) {
if (preg_match('~^\s*<h3>([^<]*)</h3>~', $module, $matches, PREG_OFFSET_CAPTURE)) {
$result .= $decorator($matches[1][0], substr($module, 0, $matches[0][1])
. substr($module, $matches[0][1] + strlen($matches[0][0])));
} else {
$result .= $decorator(null, $module);
}
}
}
return $result;
}
// for Joomla 1.5
return '<jdoc:include type="modules" name="' . $position . '"' . (null != $style ? ' style="artstyle" artstyle="' . $style . '"' : '') . ' />';
}

$artxFragments = array();

function artxFragmentBegin($head = '')
{
global $artxFragments;
$artxFragments[] = array('head' => $head, 'content' => '', 'tail' => '');
}

function artxFragmentContent($content = '')
{
global $artxFragments;
$artxFragments[count($artxFragments) - 1]['content'] = $content;
}

function artxFragmentEnd($tail = '', $separator = '')
{
global $artxFragments;
$fragment = array_pop($artxFragments);
$fragment['tail'] = $tail;
$content = trim($fragment['content']);
if (count($artxFragments) == 0) {
echo (trim($content) == '') ? '' : ($fragment['head'] . $content . $fragment['tail']);
} else {
$result = (trim($content) == '') ? '' : ($fragment['head'] . $content . $fragment['tail']);
$fragment =& $artxFragments[count($artxFragments) - 1];
$fragment['content'] .= (trim($fragment['content']) == '' ? '' : $separator) . $result;
}
}

function artxFragment($head = '', $content = '', $tail = '', $separator = '')
{
global $artxFragments;
if ($head != '' && $content == '' && $tail == '' && $separator == '') {
$content = $head;
$head = '';
} elseif ($head != '' && $content != '' && $tail == '' && $separator == '') {
$separator = $content;
$content = $head;
$head = '';
}
artxFragmentBegin($head);
artxFragmentContent($content);
artxFragmentEnd($tail, $separator);
}

}

Jola
02-12-2009, 02:52
Może coś nie teges z moimi oczami, ale nie widzę tu funkcji, o której cały czas mowa. Nie odpowiedziałeś też na pytanie - które pozycje nie mają się wyświetlać. Wiedza, które mają - nie jest mi potrzebna.

morphic
02-12-2009, 02:56
Mają zniknąć top1, top2, top3, left, right i bottom1.

Fragment z index.php

<jdoc:include type="modules" name="user3" />
<jdoc:include type="modules" name="banner1" style="artstyle" artstyle="art-nostyle" />
<?php echo artxPositions($document, array('top1', 'top2', 'top3'), 'art-block'); ?>
<div class="art-contentLayout">
<?php if (artxCountModules($document, 'left')) : ?>
<div class="art-sidebar1"><?php echo artxModules($document, 'left', 'art-block'); ?>
</div>
<?php endif; ?>
<div class="art-<?php echo artxGetContentCellStyle($document); ?>">

<?php
echo artxModules($document, 'banner2', 'art-nostyle');
if (artxCountModules($document, 'breadcrumb'))
echo artxPost(null, artxModules($document, 'breadcrumb'));
echo artxPositions($document, array('user1', 'user2'), 'art-article');
echo artxModules($document, 'banner3', 'art-nostyle');
?>
<?php if (artxHasMessages()) : ?><div class="art-Post">
<div class="art-Post-body">
<div class="art-Post-inner">
<div class="art-PostContent">

<jdoc:include type="message" />

</div>
<div class="cleared"></div>

</div>

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

<?php echo artxModules($document, 'banner4', 'art-nostyle'); ?>
<?php echo artxPositions($document, array('user4', 'user5'), 'art-article'); ?>
<?php echo artxModules($document, 'banner5', 'art-nostyle'); ?>
</div>
<?php if (artxCountModules($document, 'right')) : ?>
<div class="art-sidebar2"><?php echo artxModules($document, 'right', 'art-block'); ?>
</div>
<?php endif; ?>

</div>
<div class="cleared"></div>

<?php echo artxPositions($document, array('bottom1', 'bottom2', 'bottom3'), 'art-block'); ?>
<jdoc:include type="modules" name="banner6" style="artstyle" artstyle="art-nostyle" />
<div class="art-Footer">
<div class="art-Footer-inner">
<?php echo artxModules($document, 'syndicate'); ?>
<div class="art-Footer-text">

Jola
02-12-2009, 03:12
Zamiast

<?php if (artxCountModules($document, 'right')) : ?>wstaw

<?php if (artxCountModules($document, 'right') && !JRequest::getVar( 'sobi2Task', '' )) : ?>zamiast

<?php if (artxCountModules($document, 'left')) : ?>wstaw

<?php if (artxCountModules($document, 'left') && !JRequest::getVar( 'sobi2Task', '' )) : ?>zamiast

<?php echo artxPositions($document, array('top1', 'top2', 'top3'), 'art-block'); ?>wstaw

<?php if (!JRequest::getVar( 'sobi2Task', '' ))
echo artxPositions($document, array('top1', 'top2', 'top3'), 'art-block'); ?>zamiast

<?php echo artxPositions($document, array('bottom1', 'bottom2', 'bottom3'), 'art-block'); ?>wstaw

<?php
if (!JRequest::getVar( 'sobi2Task', '' ))
echo artxPositions($document, array('bottom1', 'bottom2', 'bottom3'), 'art-block');
else
echo artxPositions($document, array( 'bottom2', 'bottom3'), 'art-block');
?>Oczywiście zanim zaczniesz zmieniać zrób kopię pliku. Myślę, że zmiany są zrozumiałe. :)

morphic
02-12-2009, 03:22
Jak najbardziej zrozumiałe. Tylko teraz karta szczegółowa zaczeła mi się wyświetlać na niecałe pół strony. To po tych zmianach, czy może grzebać w css dołączonym do SOBI?

Jola
02-12-2009, 03:27
Jak byś używał Firebuga - zajęłoby Ci to chwilkę.

morphic
02-12-2009, 03:31
Pracuję na Operze i Netscape, uroki Maców

Jola
02-12-2009, 03:41
plik components/com_sobi2/includes/com_sobi2.css linia 200
table.sobi2Details{
...
}

morphic
02-12-2009, 03:47
No u mnie to jest w linii 237. Bawię się tym plikiem już z 15 minut, mam zmienioną szerokość na 90% ale nie chce cholerstwo działać. Chyba, że serwer tak długo odświeża?

Wpadła mi do głowy jeszcze jedna myśl - nie dziedziczy ta tabela przypadkiem z głównego arkusza css szerokości tego środka?

adlibitum
07-12-2009, 22:45
dzięki Jola - u mnie pomogło ...

morphic
07-12-2009, 23:42
No i niby wszystko jest ok. Lewa i prawa kolumna mają zadeklarowane stałe szerokości w pikselach. Srodek ustwiony na width:auto. Wszystkie przeglądarki poza IE interpretują to prawidłowo. Jeśli środek zdefiniuję piskelami "na sztywno" to karta produktu wyświetla się w tej zadeklarowanej szerokości ( 497px na 900 mozliwych) i zajmuje pół strony. Numer dotyczy tylko i wyłącznie IE.