ukryj moduł, jeśli pusty
Wyniki 1 do 7 z 7

Temat: ukryj moduł, jeśli pusty

  1. #1
    Debiutant
    Dołączył
    16-08-2007
    Wpisy
    3
    Punkty
    10

    Domyślny ukryj moduł, jeśli pusty

    Witam wszystkich, jako że to mój pierwszy post.
    Szukałem i szukałem, a odpowiedzi nie znalazłem, więc pozwoliłem sobie opisać mój problem:

    Z tego co mi wiadomo, joomla pozwala jedynie na publikowanie / ukrywanie modułów na konkretnych podstronach. Ja chciałbym wyświetlać je warunkowo, np. jeżeli dla danego artykułu nie ma żadnych tematów pokrewnych, to niech się ten moduł nie wyświetla... Jak to zrobić?

    Rada, gotowy hack - wszystko mile widziane...

    -----------------------------------------------------

    Póki co rozwiązałem to po stronie klienta przy pomocy jQuery:

    1) Drobna modyfikacja pliku includes/frontend.html.php
    w funkcji: modoutput_xhtml
    zamiast: <div class="moduletable<?php echo $moduleclass_sfx; ?>">
    zrobiłem: <div id="<?php echo $module->module; ?>" class="moduletable<?php echo $moduleclass_sfx; ?>">

    - dzięki temu mogę zidentyfikować każdy moduł, a później w js sprawdzić jego zawartość i ewentualnie ukryć.
    2) Kod jquery wykonywany po załadowaniu dokumentu:
    if (!$("#mod_related_items > ul").length) $("#mod_related_items").hide();

    Działa tylko dla modułu mod_related_items, dla każdego innego trzeba by dodać odpowiednią linijkę...

    Jeżeli ktoś wymyśli coś lepszego, niech się podzieli.
    Ostanio edytowane przez bigos : 16-08-2007 16:59 Powód: znalezienie rozwiązania

  2. Pani Reklamowa
    Pani Reklamowa jest aktywna
    Avatar Panny Google

    Dołączył
    19-08-2010
    Skąd
    Internet
    Postów
    milion
    Pochwał
    setki
  3. #2
    Senior zwiastun awatar
    Dołączył
    20-09-2005
    Wpisy
    27 315
    Punkty
    1142

    Domyślny

    Bo tak zawzięcie szukałeś!
    Umieszczanie modułów
    Ukrywanie kolumn
    Ukrywanie modułów
    Ukrywanie modułów
    Forum to nie podręcznik to nie jedyne i nie podstawowe miejsce, które trzeba przeszukać.
    Wszystkie cztery tytuły łatwe do odszukania na Pomocy

    => Szablony => podręcznik => lista tytułów
    => Programowanie => Zaawansowane projektowanie szablonów => Lista tytułów

    Masz pomysł, ja to można zrobić prościej? Bo ja już nie mam!
    Podane przez Ciebie rozwiązanie nadaje się tylko do tego modułu - choć można by szukać rozwiązania w poprawie kodu modułu
    Korzystaj i ciesz się!
    ===============
    Zwiastun
    Biblioteka Elektronicznej Dokumentacji Joomla!

  4. #3
    Debiutant
    Dołączył
    16-08-2007
    Wpisy
    3
    Punkty
    10

    Domyślny

    Tak, szukałem zanim zadałem pytanie na forum.
    Forum traktuję jako miejsce, gdzie można się wymienić hackami, sposobami na rozwiązanie czegoś co nie jest rozwiązane przez system... A to nie jest rozwiązane przez system.

    Jeśli przeczytasz proponowane przez Ciebie materiały, to też będziesz wiedział że domyślne ukrywanie modułów w joomli polega jedynie na wykorzystaniu funkcji mosCountModules(), która sprawdza czy w podanym obszarze są jakieś moduły. Nie ma możliwości sprawdzenia, czy dany moduł nie wyświetli żadnej treści.


    Tak, proponowany przeze mnie sposób zadziała tylko dla podanego modułu, ale nie ma problemu, żeby zastosować go dla każdego innego - wystarczy lekka modyfikacja...

    Aha, gdyby ktoś chciał mój sposób wykorzystać, to go poprawiłem:

    1) w pliku .css wyłączamy widoczność danego modułu, np:
    #mod_related_items{ display:none; }
    2) kod jQuery włącza widoczność gdy moduł jest niepusty (odwrotnie niż w pierwszej wersji sztuczki):
    if ($("#mod_related_items > ul").length) $("#mod_related_items").show();

    Dzięki temu nie ma efektu pojawienia się na chwilę pustego modułu i jego zniknięcia, gdy już załaduje się cała strona.
    Ostanio edytowane przez bigos : 17-08-2007 00:29

  5. #4
    Senior zwiastun awatar
    Dołączył
    20-09-2005
    Wpisy
    27 315
    Punkty
    1142

    Domyślny


    Gdy skończyłem (a właściwie kończyłem, to pojąłem do końca, o co Ci chodzi. Potem szkoda było wpisu - zawiera przydatne odnośniki! Powinienem pewno jeszcze dopisać dla jasności jakieś zdanie, co czynię właśnie.
    Korzystaj i ciesz się!
    ===============
    Zwiastun
    Biblioteka Elektronicznej Dokumentacji Joomla!

  6. #5
    Debiutant
    Dołączył
    17-03-2008
    Wpisy
    2
    Punkty
    10

    Domyślny Brawo Bigos

    ... a masz może jakiś pomysł, żeby tematy pokrewne wyświetlały się od najnowszego do najstarszego?

  7. #6
    Debiutant
    Dołączył
    16-08-2007
    Wpisy
    3
    Punkty
    10

    Domyślny Tematy pokrewne

    Hej,
    No, niestety trzeba hackować moduł - autorzy systemu tego nie przewidzieli.

    plik: modules/mod_related_items.php

    w linijce #46 zaczyna się zapytanie do bazy danych:

    $query = "SELECT a.id, a.title, a.sectionid, a.catid, cc.access AS cat_access, s.access AS sec_access, cc.published AS cat_state, s.published AS sec_state"
    . "\n FROM #__content AS a"
    . "\n LEFT JOIN #__content_frontpage AS f ON f.content_id = a.id"
    . "\n LEFT JOIN #__categories AS cc ON cc.id = a.catid"
    . "\n LEFT JOIN #__sections AS s ON s.id = a.sectionid"
    . "\n WHERE a.id != " . (int) $id
    . "\n AND a.state = 1"
    . "\n AND a.access <= " . (int) $my->gid
    . "\n AND ( a.metakey LIKE '%" . implode( "%' OR a.metakey LIKE '%", $likes ) ."%' )"
    . "\n AND ( a.publish_up = " . $database->Quote( $nullDate ) . " OR a.publish_up <= " . $database->Quote( $now ) . " )"
    . "\n AND ( a.publish_down = " . $database->Quote( $nullDate ) . " OR a.publish_down >= " . $database->Quote( $now ) . " )"
    ;

    trzeba je leciutko zmienić - jeżeli chcesz sortować po dacie modyfikacji:

    $query = "SELECT a.id, a.title, a.sectionid, a.catid, cc.access AS cat_access, s.access AS sec_access, cc.published AS cat_state, s.published AS sec_state, a.modified"
    . "\n FROM #__content AS a"
    . "\n LEFT JOIN #__content_frontpage AS f ON f.content_id = a.id"
    . "\n LEFT JOIN #__categories AS cc ON cc.id = a.catid"
    . "\n LEFT JOIN #__sections AS s ON s.id = a.sectionid"
    . "\n WHERE a.id != " . (int) $id
    . "\n AND a.state = 1"
    . "\n AND a.access <= " . (int) $my->gid
    . "\n AND ( a.metakey LIKE '%" . implode( "%' OR a.metakey LIKE '%", $likes ) ."%' )"
    . "\n AND ( a.publish_up = " . $database->Quote( $nullDate ) . " OR a.publish_up <= " . $database->Quote( $now ) . " )"
    . "\n AND ( a.publish_down = " . $database->Quote( $nullDate ) . " OR a.publish_down >= " . $database->Quote( $now ) . " )"
    . "\n ORDER BY a.modified DESC; "
    ;

    Dopisałem tylko dwie rzeczy - a.modified w pierwszej linijce i na końcu wiersz z ORDER BY. Nie mam czasu testować, ale powinno działać. W razie czego odezwij się na priva, albo w tym temacie.

  8. #7
    Debiutant
    Dołączył
    17-03-2008
    Wpisy
    2
    Punkty
    10

    Wielkie dzięki

    Zero połajanek dla szóstoklasistów - same konkrety. To lubię. Tym bardziej, że działa.
    A może dałoby się z sortowaniem po dacie publikacji?

Reguły pisania

  • Nie możesz zakładać nowych tematów
  • Nie możesz dodawać wypowiedzi
  • Nie możesz dodawać załączników
  • Nie możesz poprawiać swoich postów
  •