PDA

Zobacz pełną wersję : Sekcje, kategorie - obrazy je przedstawiajace przy wiadomosciach



bartspam
06-11-2009, 03:47
Witam mam pytanie do zaawansowanych użytkowników joomla. Otóż czy da się jakoś zrobić tak aby przy dodawaniu wiadomości obok tytułu wiadomości/newsa zaprezentowany został obrazek charakterystyczny dla danej sekcji/kategorii ?

Do sekcji i kategorii w joomla da się przypisać opis i obrazek. Stąd mój pomysł na to aby wiadomość należąca do danej sekcji/kategorii posiadała obok tytułu charakterystyczny dla niej obrazek.

Jeżeli istnieje jakiś komponent albo sposób aby to wymusić będę wdzięczny za podpowiedź.

Jola
06-11-2009, 04:38
Witam,
technika nadpisywania szablonów kryje w sobie ogromne możliwości.

bartspam
06-11-2009, 05:41
Jolas jesteś pomocny - można to zrobić w ten sposób ok, nie pomyślałem o tym ale nie ma czegoś prostszego ? Już mi baniak pęka od siedzenia nad kodem strony. Mam ochotę na 5 klików instalacyjnych kolejne 10 konfigurujących i wio... No ewentualnie ma mała zabawę z Photoshopem w celu stworzenia grafiki :)

zwiastun
06-11-2009, 10:30
@joolass: jak widać nawet podpis nie wystarcza, będziesz musiała umiścić śpiewające video z Jestem kobietą!

bartspam
06-11-2009, 15:33
O sorry, mam nadzieje, żę nie ujałem nic twojej kobiecości. Nie lepiej zmienić nick na Jola S., Jolcia, Jola ? Już chyba drugi raz zapomnialem/nie zwrocilem uwagi.

A zwiastuna popieram - tylko jakies kocie ruchy musza byc abysmy mieli pewnosc.

Nadal licze na jakiegos gotowca...

Jola
06-11-2009, 22:13
Jolcia? Ble - też mi coś.
Kocie to mogę pokazać - ale pazury!
Na gotowca będziesz musiał poczekać :)
Przykład wstawienia obrazka kategorii obok tytułu artykułu.
Plik article.php linia 578 zamiast

$query = 'SELECT a.*, u.name AS author, u.usertype, cc.title AS category, s.title AS section,' .dodajmy

$query = 'SELECT a.*, u.name AS author, u.usertype, cc.title AS category, cc.image, s.title AS section,' .Plik components/com_content/views/article/tmpl/default.php w wybranym miejscu (przed lub za tytułem) dodać:

<?php $cparams =& JComponentHelper::getParams('com_media'); ?>
<img src="<?php echo $this->baseurl . '/' . $cparams->get('image_path') . '/'. $this->article->image;?>" hspace="6" alt="<?php echo $this->article->image;?>" />Zmieniony plik zapisać w templates/twoj_szablon/html/com_content/article/
(metoda nadpisywania szblonów)

bartspam
07-11-2009, 21:59
Miód malina ! Zaraz przetestuje. Ogromne dzięki, bardzo mi na możliwości wstawiania obrazków zależało.

Swoją drogą może Jolanta ? i całe forum czeka na video :P

bartspam
08-11-2009, 02:37
Plik article.php (components\com_content\medels

Wszystko się zgadza tylko ja mam ten kod wpisany przy 512 linijce kodu (pewnie daltego, że nic tam nie zmianialem i większość użytkowników pewnie też tak ma).



Plik components/com_content/views/article/tmpl/default.php w wybranym miejscu (przed lub za tytułem) dodać:


<?php // no direct access
defined('_JEXEC') or die('Restricted access');

$canEdit = ($this->user->authorize('com_content', 'edit', 'content', 'all') || $this->user->authorize('com_content', 'edit', 'content', 'own'));
?>
<?php if ($this->params->get('show_page_title', 1) && $this->params->get('page_title') != $this->article->title) : ?>
<div class="componentheading<?php echo $this->escape($this->params->get('pageclass_sfx')); ?>">
<?php echo $this->escape($this->params->get('page_title')); ?>
</div>
<?php endif; ?>
<?php if ($canEdit || $this->params->get('show_title') || $this->params->get('show_pdf_icon') || $this->params->get('show_print_icon') || $this->params->get('show_email_icon')) : ?>
<table class="contentpaneopen<?php echo $this->escape($this->params->get('pageclass_sfx')); ?>">
<tr>
<?php if ($this->params->get('show_title')) : ?>

<td>
<?php $cparams =& JComponentHelper::getParams('com_media'); ?>
<img src="<?php echo $this->baseurl . '/' . $cparams->get('image_path') . '/'. $this->article->image;?>" hspace="6" alt="<?php echo $this->article->image;?>" />
</td>

<td class="contentheading<?php echo $this->escape($this->params->get('pageclass_sfx')); ?>" width="100%">
<?php if ($this->params->get('link_titles') && $this->article->readmore_link != '') : ?>
<a href="<?php echo $this->article->readmore_link; ?>" class="contentpagetitle<?php echo $this->escape($this->params->get('pageclass_sfx')); ?>">
<?php echo $this->escape($this->article->title); ?></a>
<?php else : ?>
<?php echo $this->escape($this->article->title); ?>
<?php endif; ?>
</td>

To jak chcecie miec obrazek po lewej stronie tytułu wiadomości.

Wszystko działa bardzo dobrze - ale obrazek pojawia sie po kliknieciu w wiadomosc. Chciałbym aby przegladajac liste wiadomosci widoczne byly obrazki przynaleznosci newsa do poszczegolnych kategorii.

czyli w components\com_content\models\section\section.php

w linijce 414 co dodac ? I nastepnie w:

components/com_content/views/section/tmpl/blog.php ?


AAaa ale to jest blog sekcji (w linku meny mam Section Blog Layout) więc chyba będzie wyświetlał obrazki sekcji a nie kategorii. Trzeba by było zmienić link menu na Category Blog Layout i wtedy wyświetlałby przy wiadomościach poszczególne obrazki danych kategorii (bo sekcja bedzie wyswietlac tylko poszczegolne obrazki sekcji ?).

W takim razie prosilbym o jakis link do informacji jak to zrobic albo gotowca pani Jolanto ^^ (sam w życiu bym nie zrobił tego w taki "prosty" sposób jak Ty).

P.S. A swoja droga to joomla powinna wyswietlac te obrazki standardowo. Gdy tylko dodamy jakis obrazek do kategorii to powinien on byc wyswietlany przy tytule (jak nie dodamy obrazka nic sie nie wyswietla). Mysle, ze tak by bylo prosciej - mozna to zasugerowac tworca - bo teraz jaki sens ma dodawanie obrazkow do kategorii/sekcji ?

Jola
08-11-2009, 04:25
Masz wymagania. A co jeśli będzie standardowa możliwość przypisania artykułu do wielu kategorii? Zresztą jakby wszystko było już zrobione to co wymyślaliby użytkownicy Joomla?
Podaję uzupełnienie z cyklu artykuł + obrazek kategrii:

pozycja menu: Lista - Kategorie artykułów w sekcji

plik: components/com_content/views/section/tmpl/default.php
w wybranym miejscu wewnątrz <li>:

<?php $cparams =& JComponentHelper::getParams('com_media'); ?>
<img src="<?php echo $this->baseurl . '/' . $cparams->get('image_path') . '/'. $category->image;?>" hspace="6" alt="<?php echo $category->image;?>" />pozycja menu: Przegląd - Artykuły w sekcji

plik: components/com_content/models/section.php linia 418 dodane cc.image,

' CHAR_LENGTH( a.`fulltext` ) AS readmore, u.name AS author, u.usertype, cc.title AS category, cc.image, g.name AS groups, u.email as author_email'.$voting['select'] .plik: components/com_content/views/section/tmpl/blog_item.php w wybranym miejscu:

<?php $cparams =& JComponentHelper::getParams('com_media'); ?>
<img src="<?php echo $this->baseurl . '/' . $cparams->get('image_path') . '/'. $this->item->image;?>" hspace="6" alt="<?php echo $this->item->image;?>" />strona startowa - pozycja menu: Przegląd - Artykuły w sekcji

plik: components/com_content/models/frontpage.php linia 133 dodane cc.image,

' u.name AS author, u.usertype, g.name AS groups, u.email as author_email, cc.title AS category, cc.image, s.title AS section, s.ordering AS s_ordering, cc.ordering AS cc_ordering, a.ordering AS a_ordering, f.ordering AS f_ordering'.plik: components/com_content/views/frontpage/tmpl/default_item.php w wybranym miejscu:

<?php $cparams =& JComponentHelper::getParams('com_media'); ?>
<img src="<?php echo $this->baseurl . '/' . $cparams->get('image_path') . '/'. $this->item->image;?>" hspace="6" alt="<?php echo $this->item->image;?>" />Pomijam kwestię formatowania obrazka i oczywistego faktu, że zmodyfikowane pliki szablonu należy umieścić zgodnie z zasadami nadpisywania szablonów w katalogu html swojego szablonu.

bartspam
08-11-2009, 19:05
Wszyscy ktorzy chca podejrzec zmiany plikow na szybcika musza w panelu admina wyczyscic cache (clean cache - com_content) przy grzebaniu i zmienianiu obrazkow.

Czy przy template overrides dodajemy tez pliki w katalogu MODELS (html/com_section/models/TUTAJ zmodyfikowane pliki.php) czy modufikujemy je bezposrednio w joomla (wtedy chyba po kazdym update bedzie trzeba je znowu modyfikowac?)?


"A co jeśli będzie standardowa możliwość przypisania artykułu do wielu kategorii?" - echh chociaz przez chwile chcialem byc mondryy. Wiem, że w joomla 1.6 nie będzie chyba sekcji tylko same kategorie.



Aaa jeszcze jedna sprawa - na stronce np. takiej jak www.diii.pl mam moduł newsflash z artykułami (bo tylko w taki sposób można było to zrobić aby artykuły były wyświetlane na starcie z innymi modułami - co niestety ogranicza sie do newsow z tylko jednej kategorii ale trudno). Gdybym chciał aby także tam pokazywały się obrazki z kategori do jakiej należy news to:

Rozumiem, że chodzi o plik modules/mod_newsflash/helper.php

zamiast:


// query to determine article count
$query = 'SELECT a.*,' .

ma być:


// query to determine article count
$query = 'SELECT a.*, cc.image,' .

i nastepnie (modules/mod_newsflash/)_item.php:

zamiast:


<table class="contentpaneopen<?php echo $params->get( 'moduleclass_sfx' ); ?>">
<tr>
<td class="contentheading<?php echo $params->get( 'moduleclass_sfx' ); ?>" width="100%">
<?php if ($params->get('link_titles') && $item->linkOn != '') : ?>
<a href="<?php echo $item->linkOn;?>" class="contentpagetitle<?php echo $params->get( 'moduleclass_sfx' ); ?>">
<?php echo $item->title;?></a>
<?php else : ?>
<?php echo $item->title; ?>
<?php endif; ?>
</td>
</tr>
</table>

ma być:


<table class="contentpaneopen<?php echo $params->get( 'moduleclass_sfx' ); ?>">
<tr>

<td>
<?php $cparams =& JComponentHelper::getParams('com_media'); ?>
<img src="<?php echo $this->baseurl . '/' . $cparams->get('image_path') . '/'. $category->image;?>" hspace="6" alt="<?php echo $category->image;?>" />
</td>


<td class="contentheading<?php echo $params->get( 'moduleclass_sfx' ); ?>" width="100%">
<?php if ($params->get('link_titles') && $item->linkOn != '') : ?>
<a href="<?php echo $item->linkOn;?>" class="contentpagetitle<?php echo $params->get( 'moduleclass_sfx' ); ?>">
<?php echo $item->title;?></a>
<?php else : ?>
<?php echo $item->title; ?>
<?php endif; ?>
</td>
</tr>
</table>

dobrze kombinuje ? - NIE bo obrazki sie nie wyswietlaja ale moze to jakis drobny błąd?

template overrides bedzie wygladal (dla modulów) tak -> html/mod_newsflash (albo modol ktory modyfikujecie)/XXX.php

Jola
08-11-2009, 19:16
Z tą cierpliwością - trafiłeś.
Przepraszam za błędy - zaraz poprawię, w wątku #6 nastąpiła poprawka- to prawda. Błąd nie miał wpływu na działanie tylko na wyświetlanie.
O module będzie - jak znajdę chwilę. Pewnie później pojawi się następny moduł! :)
Gdzie należy umieszczać zmodyfikowane pliki szablonu (nadpisywanie szablonów) najlepiej "zmałpować" z szablonu beez.

bartspam
08-11-2009, 19:35
NIe to już ostatni bo nigdzie indziej chyba nie można wyświetlać obrazków :) Wątek na pewno przyda się nie tylko mi, dlatego starałem się opisać wszystko jak najdokładniej wyjaśniając wszelkie wątpliwości.

Jola
08-11-2009, 19:54
W pliku: modules/mod_newsflash/_item.php powinno być:

<?php $cparams =& JComponentHelper::getParams('com_media'); ?>
<img src="<?php echo $cparams->get('image_path') . '/'. $item->image;?>" hspace="6" alt="<?php echo $item->image;?>" />Trzeba pamiętać, że umieszczenie obrazka obok tytułu spowoduje, że będzie wyświetlany tylko wtedy gdy w ustawieniach modułu będzie zaznaczone Tytuł pozycji:Tak.
W pliku modules/mod_newsflash/helper.php kod:

$query = 'SELECT a.*, cc.image, ' .jest dobrze.
Problem: "co niestety ogranicza sie do newsow z tylko jednej kategorii".
Rozwiązanie:
Plik modules/mod_newsflash/helper.php linia 92 wpis:

' AND cc.id = '. (int) $catid .zmienić na

' AND cc.id in (1,2 ) ' .gdzie 1 i 2 to id wybranych kategorii (ustawienia modułu nie mają wówczas znaczenia)

bartspam
08-11-2009, 21:10
"Problem: "co niestety ogranicza sie do newsow z tylko jednej kategorii".
Rozwiązanie:
Plik modules/mod_newsflash/helper.php linia 92 wpis:
Cytat:' AND cc.id = '. (int) $catid .

zmienić na
Cytat:' AND cc.id in (1,2 ) ' .

gdzie 1 i 2 to id wybranych kategorii (ustawienia modułu nie mają wówczas znaczenia)"

Nie no rewelacja ! Szacun dla wiedzy i cierpliwości. Wszystko gra tylko nie dziala template overrides z plikiem _item.php (html/mod_newsflash/_item.php), trzeba go nadpisac bezposrednio w joomla, co jest dziwne bo w templatce beez taka sciezka dziala.

Czy przy template overrides dodajemy tez pliki w katalogu które były edytowane w katalogu MODELS (html/com_section/models/TUTAJ zmodyfikowane pliki.php) czy modufikujemy je bezposrednio w joomla (wtedy chyba po kazdym update bedzie trzeba je znowu modyfikowac?)?

I w module newsflash newsy pojawiaja sie naprzemian (raz z jednaj kategorii raz z 2) zamiast wedlug daty ich dodania.

Jola
08-11-2009, 21:21
Zamiast:

' ORDER BY a.ordering';od najnowszych

' ORDER BY a.created DESC ';od najstarszych

' ORDER BY a.created ASC ';Warto poznać trochę sql :)
A o nadpisywaniu szablonów jest artykuł na wiki.joomla.pl - o ile pamiętam są podane tego typu informacje. Może inni się wypowiedzą.

bartspam
25-11-2009, 09:23
No to Jola już się chyba domyśla dlaczego odświeżam temat :) Mianowicie chodzi o link. Chciałbym aby ten obrazek, który dodałem był jednocześnie linkiem do reszty wiadomości z tej kategorii.

Modyfikujemy te same pliki dodając oprócz wcześniejszego kodu dodatkowo <a href="adress"></a> ale jestem za mało inteligentny aby ten adres zapisać tak aby linkowało do odpowiedniej kategorii.

Czyli obrazek np. koła linkuje do artykułów z kategorii koła z obrazek kwadratu do artykułów o kwadracie. Da się taki link odpowiednio zmodyfikować aby automatycznie linkowało do zbiory artykułów w odpowiedniej kategorii ?

Jola
25-11-2009, 20:44
Podaję jak wywołać zawartość a href=""
components/com_content/views/article/tmpl/default.php

<?php echo JRoute::_(ContentHelperRoute::getCategoryRoute($th is->article->catslug, $this->article->sectionid));?>components/com_content/views/section/tmpl/default.php

<?php echo $category->link;?>components/com_content/views/section/tmpl/blog_item.php

<?php echo JRoute::_(ContentHelperRoute::getCategoryRoute($th is->item->catslug, $this->item->sectionid));?>components/com_content/views/frontpage/tmpl/default_item.php

<?php echo JRoute::_(ContentHelperRoute::getCategoryRoute($th is->item->catslug, $this->item->sectionid));?>

bartspam
26-11-2009, 13:39
Czuje się nieswojo widząc taką przewagę kobiety, ale jestem zmuszony zapytać o moduł newsflash (mod_newsflash). Zastosowałem wcześniej podpowiedz z postu 13 i chyba ma ona wpływ na kształt linku w pliku _item.php (modules/mod_newsflash/_item.php).

JRoute::_(ContentHelperRoute::getCategoryRoute($th is->1,2, $this->sectionid))

również nie działa. Cała reszta chodzi jak w zegarku.

Jola
26-11-2009, 19:43
Zastanawiam się czy napisać - może wpadniesz w jakąś depresję.
Zaryzykuję:

<a href="<?php echo JRoute::_(ContentHelperRoute::getCategoryRoute($it em->catslug, $item->sectionid));?>"><img ...></a>

bartspam
27-11-2009, 10:02
Działa z newsflash. Sama przyznasz, że kobieta która zna się lepiej na kompach od faceta to dziwny (rzadki) widok :)

zwiastun
27-11-2009, 12:48
@bartspam!
Daruj sobie teksty ubliżające innym! Pan Bóg rzeczywiście najpierw stworzył mężczyznę, ale niektórym nie dodał piątej klepki!

bartspam
27-11-2009, 16:55
Zwiastun nikomu nie ubliżam, darować możesz sobie te komentarze, mam szacunek do wiedzy Joli i jestem jej wdzięczny za pomoc bo bez niej bym sobie na pewno z tym nie poradził. Jestem też zdziwiony, że posiada taką wiedzę jako kobieta bo środowisko informatyków kojarzy mi się z facetami a te, że jakaś dziewczyna zaszła w tym temacie tak daleko budzi tylko respekt i z mojej strony chęć dorównania wiedzą w tym temacie. Tworząc stronę w joomla żałuję, że takowej (rozległej wiedzy) nie posiadam bo bardzo by mi się przydała.

Jola doskonale zdaje sobie sprawę, że nie jestem jakimś męskim szowinistą nie staram się jej dogryźć tylko się od niej czegoś nauczyć.

Zresztą tobie nic do tego. Twoje płaskie komentarze wyglądają jak zazdrosnego dzieciaka. Naprawdę nie widzę w nich nic pomocnego. Przeczytaj cały ten topik jeszcze raz, może to Cię uświadomi jak pomocna okazała się Jola ile razy (poza PW) okazywałem wdzięczność za jej pomoc i cierpliwość i jak kiepsko wygląda twoja "pomoc"/moderacja na tym forum.

Może tego nie zauważyłeś ale jesteś jedyną osobą, która wręcz odrzuca stąd ludzi. Cała reszta w jakiś kontaktowy sposób potrafi przemówić do użytkowników. Czasami odnoszę wrażenie, że na siłę szukasz jakiegoś uznania i poddaństwa ze strony przeglądających to forum.

Ale jak zawsze - w przeciwieństwie do Ciebie - uznaję, że mogłem się gdzieś pomylić i ktoś poczuł się urażony/skrzywdzony, za co z góry przepraszam bo nie było to moim zamiarem. Jola jeszcze raz Ci dziękuję. Spadam stąd - możesz dać info na kerios83@o2.pl !

zwiastun
27-11-2009, 17:35
W takim razie pozwolę sobie raz jeszcze Wielki Pouczycielu: daruj sobie teksty ubliżające innym.
Radzę poczytać
a) o dyskryminacji i rasizmie - może się czegoś nauczysz!
b) o dobrym wychowaniu!
A ponieważ regulamin witryn PCJ wyraźnie
a) zabrania dyskryminacji innych,
b) pozwalając na krytykę, nie zezwala na obrażanie kogokolwiek
żegnam na co najmniej miesiąc!

ReVir23
24-05-2011, 20:34
Pani Jolanto, czy jest możliwość, aby zamiast nazwy kategorii wyświetlanej pod artykułem był obrazek kategorii?
Dot. to strony startowej. Co trzeba zmienić?

Jola
24-05-2011, 21:40
Rozwiązanie jest podane w # 9 tylko drugą część modyfikacji dla strony frontowej należy wstawić zamiast:

<?php echo $this->escape($this->item->category); ?>linia 76