PDA

Zobacz pełną wersję : Dodawanie plików z grafiką do templateDetails.xml - co robię nie tak??



modzel
16-06-2014, 11:59
Witam,
walczę z przygotowaniem szablonu dla niewielkiej strony opartej na Joomla! 3.3. Początek był dość prosty- konstrukcja pliku templateDetails.xml, dodanie css, ustawienia pozycji modułów itd.. Dotarłem do miejsca, gdzie chciałbym wstawić kilka plików .jpg i tutaj pojawił się problem. Czytałem opisy na wiki, szukałem, ale jednak nadal coś robię nie tak. Sytuacja jest taka:

pliki:
images/banner_01.jpg
images/banner_02.jpg

fragment templateDetails.xml:
(...)
<files>
<folder>images</folder>
<folder>css</folder>
<folder>js</folder>
<filename>index.php</filename>
<filename>templateDetails.xml</filename>
<filename>images/favicon.png</filename>
<filename>images/banner_01.jpg</filename>
<filename>images/banner_02.jpg</filename>

<filename>css/core.css</filename>
</files>
(...)

i kod na stronie:
<ul>
<li><img src="images/banner_01.jpg" /></li>
<li><img src="images/banner_02.jpg" /></li>
</ul>

Na stronie zamiast obrazków slider_01.jpg i slider_02.jpg pojawia się tylko domyślna ikonka przeglądarki symbolizująca grafikę. Podpowiedzcie czego nie zrobiłem, albo co zrobiłem źle :)

zwiastun
16-06-2014, 13:04
Niepotrzebnie umieszczasz nazwy plików
W pakiecie instalacyjnym tworzysz foldery z plikami, w pliku manifestu deklarujesz jedynie folder. Instalator umieszcza w folderze wszystkle pliki, które się w nim znajdą.

modzel
16-06-2014, 13:16
Czyli, że powinno być tak:

<files>
<folder>images</folder>
<folder>css</folder>
<folder>js</folder>
<filename>index.php</filename>
<filename>templateDetails.xml</filename>
<filename>images/favicon.png</filename>

<filename>css/core.css</filename>
</files>


??
I teoretycznie Joomla powinna sobie z folderu "images" odczytać pliki? Bo jeśli o to chodzi, to tak już też sprawdzałem (znalazłem to na wiki), ale bezskutecznie. Niezależnie czy zdefiniuję tylko folder images, czy wypiszę w <filename></filename> jego zawartość, i tak nie wyświetlają się grafiki. Jakieś inne pomysły?

- - - Updated - - -

OK.. mam nowy "trop". Zajrzałem w źródło strony, i w miejscu gdzie w kodzie mam

<img src="images/banner_01.jpg">

jest:

<img src="/joomla33/images/banner_01.jpg">

wszystko edytuję lokalnie, więc adres Joomli to http://localhost/joomla33 czyli w tym momencie Joomla szuka grafiki w http://localhost/joomla33/joomla33/images/ co jest oczywiście bzdurą. Właściwa ścieżka to http://localhost/joomla33/images. Tylko jak ją osiągnąć?

zwiastun
16-06-2014, 13:41
Masz albo błędne odwołania do grafik w css, albo w index.php.
Plik manifestu nie ma tutaj żadnego znaczenia, jest jedynie instrukcja dla instalatora.

modzel
16-06-2014, 13:49
No właśnie- błąd jest w kodzie tak jak mówisz. Pytanie- gdzie?? Kod wygląda tak:

<img src="images/banner_01.jpg" />

i z punktu widzenia html jest poprawny. Odwołuje się do pliku banner_01.jpg w folderze images. Czyli teoretycznie jest OK. Joomla jakoś inaczej musi interpretować ten kod (??). CSS nic nie ma do ścieżki do grafik, nie ma tam żadnej konfiguracji przecież.

zwiastun
16-06-2014, 14:09
A nie tak to powinno wyglądać?
<img src ="<?php echo '/templates/' . $this->template . 'images/banner_01.jpg' />
albo
<img src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template; ?>/images/banner_01.jpg"

modzel
17-06-2014, 06:33
Zwiastun- możliwe że tak. Sprawdzę jak tylko siądę do właściwego kompa i dam znać :)

modzel
17-06-2014, 08:07
Sprawdziłem, nieco poprawiłem i ostatecznie kod powinien wyglądać tak:

<img src ="<?php echo $this->baseurl.'/templates/' . $this->template . '/images/banner_01.jpg';?>" />

I w takiej postaci działa poprawnie :)
Dzięki za pomoc Zwiastun.

modzel
24-06-2014, 14:02
Kolejny problem- powiązany z poprzednim więc napiszę dalej w tym temacie. Chciałem użyć pliku .jpg jako tła elementu div. Normalnie robi się to przez arkusz CSS, mniej więcej tak:

div {
background: url(images/tlo.jpg);
}

i taką też informację znalazłem na stronie wiki. Wpisałem w mój arkusz css i... oczywiście nie działa :) Tłe elementu jest białe, czyli domyślne. Plik oczywiście istnieje. Zgaduję, że samo background: url(images/tlo.jpg); nie zadziała. Czy ktoś może podpowiedzieć co z tym zrobić dalej?

tomaszek83
24-06-2014, 14:40
Czy ktoś może podpowiedzieć co z tym zrobić dalej?

Tak, zainstalować sobie Firebug'a i sprawdzić ścieżki. To na początek. A w wolnej chwili przerobić jakiś dobry kurs CSS-a.

zwiastun
24-06-2014, 19:15
jeśli masz tę deklaracje w pliku css, to ścieżka do katalogu images powinna prawdopodobnie wyglądać tak :
../images/tlo.jpg

modzel
24-06-2014, 23:08
Tak, zainstalować sobie Firebug'a i sprawdzić ścieżki. To na początek. A w wolnej chwili przerobić jakiś dobry kurs CSS-a.

wow.. cóż za niesamowicie merytoryczna pomoc. Tak mniej więcej na poziomie gimnazjum.
Tak na przyszłość- zanim będziesz się silił na ironie, zastanów się czy warto się wygłupiać, czy może lepiej pomóc- jak Zwiastun. A.. i jeszcze co do Twojej "rady"- dzięki, ale firebug nie potrafi zmienić ścieżki na poprawną (chyba że zmienia tylko ja nie wiem gdzie i jak to zrobić), a co do mojej znajomości CSS to nie musisz się martwić- moglibyśmy długo porozmawiać na temat CSS i jego komend.

Tyle klikania tylko po to, żeby odpowiedzieć na głupi post..

- - - Updated - - -


jeśli masz tę deklaracje w pliku css, to ścieżka do katalogu images powinna prawdopodobnie wyglądać tak :
../images/tlo.jpg

Ponownie dziękuję za pomoc. Faktycznie, brakowało '../' na początku. Na przyszłość będę wiedział jak poprawnie deklarować tło dla Joomli.

tomaszek83
25-06-2014, 10:17
Kolego @modzel czy deklarujesz tło dla Joomla, Wordpressa czy dla jakiejkolwiek innej witryny napisanej w jakiejkolwiek technologii to wpisywanie ścieżek w CSS zawsze jest takie same i zależy od struktury katalogów na serwerze. I niestety to są podstawy języka CSS. Podpowiedź @Zwiastuna w 99% jest trafna ale kiedy masz inną strukturę katalogów niż domyślna w Joomla (a tak już może być w mocno rozbudowanych szablonach i frameworkach) to już ścieżka może wyglądać inaczej i do tego jak ją poprawić służy np. Firebug plus trochę myślenia.

BTW. Skoro zadajesz pytanie na poziomie gimnazjum to odpowiedź powinna być adekwatna do pytania.