Zgodnie ze stroną wiki Dodawanie Javascript i CSS do strony , możesz dodać arkusz stylów w addStyleSheet
następujący sposób:
$document = JFactory::getDocument();
$document->addStyleSheet($url);
Lub w JHtml::stylesheet
ten sposób:
JHtml::stylesheet($url, array(), true);
Ale strona wiki Tworzenie szablonu podstawowego instruuje ucznia, aby zawierał takie arkusze stylów:
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/system/css/system.css">
</head>
To omija addStyleSheet
i JHtml::stylesheet
. Czy to dobry pomysł? Kiedy użyjesz pierwszego, a kiedy drugiego?
Uwaga: JHtml::_("script", …)
i JHtml::_("stylesheet", …)
są prawie dokładnie takie same jak JHtml::script
i JHtml::stylesheet
. Zobacz Co JHtml::_
zrobić .
Odpowiedzi:
JHtml
jest zwykle używany w rozszerzeniach, ponieważ oznacza to, że można wykonać przesłonięcia, co jest naprawdę dobrą funkcją, jeśli jesteś programistą. Rozciąga się również$document->...
poprzez dodanie dodatkowej funkcjonalności.Oto przykład:
Podczas korzystania
JHtml
, zminimalizowana wersja skryptu zostanie załadowana, aby skrócić czas ładowania strony. Po włączeniu trybu debugowania w konfiguracji globalnej załaduje on nieuprawnioną wersję pliku, aby był czytelny.Nie można zastąpić szablonu w taki sam sposób, jak w przypadku rozszerzeń, dlatego używa się wielu szablonów,
<link>
ponieważ wszelkie zastąpienia można po prostu zrobić, dodająccustom.css
plik, a następnie dodając do niego kod. W ten sposób użycie<link>
tagów rodzimych jest szybsze niż użycie API Joomla do załadowania pliku CSSźródło
JHtml
z szablonu jest uzyskanie minimalizacji?<link ...>
kod bezpośredni.Oprócz innych, największą zaletą, jaką znalazłem, jest to, że wszystkie pliki CSS / JSS są jednocześnie w tej samej tablicy.
Może to nie brzmieć jak korzyść, ale fragment z innego przykładu
Później, gdy chcesz zmienić
system.css
, dokonasz zmian, a następnie uświadomisz sobie, że Twoi użytkownicy mają starąsystem.css
pamięć podręczną z nową treścią, co oznacza, że będziesz musiał zmienić kod, aby był nieco innym adresem URL (lub skrócić czas buforowania i spraw, aby użytkownik pobierał częściej)Kiedy używasz metody JHTML podczas generowania szablonu, możesz następnie wygenerować „wersję” pliku CSS / JS (dobry czas na plik lub użyć identyfikatora git commit itp.), Więc zmiana zawartości natychmiast daje nowy css do wszyscy ludzie, aby zobaczyć twoją stronę. Długi czas buforowania + natychmiastowe ponowne generowanie oznacza mniej pobrań na stronę.
Przykładowy kod (NIE TESTOWANE DZIAŁANIE, chociaż używam podobnego kodu)
Ten kod będzie wymagał ulepszenia w systemie, aby upewnić się, że ścieżki zostały poprawnie znalezione
źródło
Joomla zapewnia własne API z fabryki, którą możemy nazwać JFactory.
Korzystanie z:
nad:
Jeśli jednak dołączasz swoje arkusze stylów do powyższej metody, zostanie to automatycznie włączone do
<head>
sekcji szablonu<jdoc:include type="head" />
. Idąc dalej, jeśli tworzymy własne rozszerzenie i jeśli wyraźnie chcesz mieć własny CSS lub JavaScript, możesz to zadeklarować powyższą metodą. Ponownie doda go do twojej<head>
sekcji i pozwoli ci uniknąć aktualizacji szablonuindex.php
Czasami chcesz, aby skrypty pojawiały się na końcu twojego ciała, aby załadować wszystkie elementy DOM. W tej sytuacji możesz dołączyć swoje skrypty na końcu
<body>
elementu z następującymi elementami:Otrzymasz również dodatkową kontrolę nad obsługą CSS i skryptów, np. Możesz programowo usuwać skrypty i arkusze stylów, jeśli nie są potrzebne.
źródło
JFactory
arkusz stylów<jdoc:include type="head" />
, moje pytania brzmią: po co męczyć się z użyciem go w szablonie, skoro możesz po prostu napisać<link ...>
wiersz?<link...>
w szablonie. Ale każdy framework / CMS ma swój własny sposób implementacji. Joomla nie jest wyjątkiem. Jest to sposób Joomla do renderowania skryptów i arkuszy stylów. O ile nie ma sposobu na zastąpienie szablonu, nadal możemy polegać na starych<link...>
znacznikach.Istnieje kilka dodatkowych korzyści z używania metod „addXxxxx” do ładowania arkuszy stylów i skryptów javascript.
Istnieją rozszerzenia, które można zainstalować, które poskładają te pliki razem i rozpakują je do jednego pliku, co poprawi szybkość strony (zmniejszając żądania HTTP i rozmiary plików).
Można ich również użyć w nadpisaniach szablonów i układów, aby zapewnić załadowanie wymaganych plików. Na przykład, jeśli kilka elementów treści wymaga określonej biblioteki javascript (takiej jak biblioteka do wykonywania masowych zdjęć), możesz utworzyć specjalny układ dla tych typów artykułów, które będą używać tego mechanizmu do ładowania biblioteki js i arkusze stylów specyficzne dla tego rodzaju wyświetlaczy. Oznacza to, że dodatkowy ciężar jest dodawany tylko do stron, które go potrzebują, ale nadal utrzymuje informacje o wersji w jednym miejscu, więc jedna edycja zmieni wiele wyświetlanych stron, zamiast konieczności wprowadzania wielu zmian, gdy rzeczy się zmieniają (i wszyscy wiemy, że oni będzie zmienić).
Osobiście uważam te zalety, a także możliwość zastąpienia tych plików różnymi kopiami, gdy jest to wymagane, aby było to moim ulubionym sposobem ich dodawania.
źródło
jeśli użyjesz
<link >
swojej głowy joomla, nie będzie ona uporządkowana, ponieważ<link >
będzie wyświetlana pod blokiem javascript, outsite<jdoc:include type="head" />
i joomla ponownie wrócą do folderu css. Wpłynie to na wydajność joomla. A jeśli użyjesz<link >
, otrzymasz wiele echa zmiennej w zwykłym indeksie. Php :(Używam,
$doc->addStyleSheet
ponieważ.css
będą wyświetlane w bloku css, wewnątrz<jdoc:include type="head" />
. to samo dotyczy użycia javascript$doc->addScript
. Po<jdoc:include type="head" />
joomla przyjmie wszystko skończone i wykona ważniejszą pracę. :)Niektóre osoby używają
<link >
do nieobsługiwanej przeglądarki, nppokaże się na dole
<jdoc:include type="head" />
.źródło
<link>
tag pojawi się po<jdoc:include type="head" />
, ale dzieje się tak tylko wtedy, gdy dodasz kod po nim. Jeśli dodasz go wcześniej, pojawi się on wcześniej. Co do echa zmiennych PHP w pliku index.php, nie mam pojęcia, co masz na myśli mówiąc to. Używanie<link>
tagów to podstawowy HTML, a Joomla nie zmienia sposobu, w jaki to działa