Zobacz pełną wersję : google tracking id we własnym szablonie
casiopea mnie denerwuje bo za każdą aktualizacją trzeba dokonywać zmian np wpisywać google tracking id i inne rzeczy.
chciałbym stworzyć wlasną templatkę, gdzie byłoby pole w które wpisuję te ID i skrypt dopisuje je do pliku index.php
Jak to ogarnąć? prawdopodobnie trzeba utworzyć FIELD w pliku XML i odpowiednie polecenie w index.php
Pracuje się zawsze na kopii szablonu, by zmiany nie były nadpisywane przy aktualizacji...
ale chciałbym się dowiedzieć jak to zrobić we własnej templatce.
Kopiujesz cały katalog szablonu
Zmieniasz mu nazwę
Zmieniasz nazwę w xml-u
Uruchamiasz wykrywanie dodatków i już powinieneś mieć własny szablon.
nie o to mi chodziło.
Jak wpisać google tracking id od strony zaplecza wchodząc na ustawienia templatki.
siristru
09-01-2023, 21:12
Jak wpisać google tracking id od strony zaplecza wchodząc na ustawienia szablonu.
No samego ID nie wpiszesz... chyba, że twój szablon to umożliwia.
Ale zawsze możesz w szablonie (nawet przez zaplecze) edytować plik główny szablonu (często to index.php) i dodać cały kod śledzący.
Możesz również zainstalować dodatek do Google Analitics i wtedy tam sobie dodać tracking ID.
Ale IMO instalować rozszerzenie by dodać tak prostą sprawę? Nie ma sensu.
No samego ID nie wpiszesz... chyba, że twój szablon to umożliwia.
jak zrobić to w szablonie - aby to umożliwiał? Właśnie o to chodzi - tworzę szablon który chcę wykorzystać na wielu stronach i chcę aby każdy mógł sobie zmienić tacking ID:
1 bez ingerencji w kod szablonu
2 bez instalacji dodatku
jeśli dowiem się jak to zrobić to będę mógł też inne rzeczy dodawać - chcę się nauczyć.
z tego co się domyślam to muszę w pliku xml zamieścić opis:
<field name="trackingID"
type="text"
label="TPL_SIMPLE_TRACKING_ID"
description="TPL_SIMPLE_TRACKING_ID"
default=""
filter="string"
/>
później w pliku index.html:
if ($this->params->get('trackingID'))
{
<!-- Google tag (gtag.js) --><script async src="https://www.googletagmanager.com/gtag/js?id=".$this->params->get('trackingID'></script><script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date());
gtag('config', .$this->params->get('trackingID');</script>}
coś takiego gdzieś - tylko nie wiem, gdzie i jak
siristru
10-01-2023, 14:48
A, skoro tak, to jesteś na dobrym tropie.
Masz właściwie wszystko.
Kod wklejasz do pliku szablonu, gdzie masz dane do <head>.
Może to być index.php tam gdzie ładujesz
<jdoc:include type="head" />
Upewnij się, że kod śledzący jest poprawny.
Ta zmienna przechowuje twoje ID wpisane w polu w szablonie:
$this->params->get('trackingID')
możesz dokładniej opisać jak to dział:
<jdoc:include type="head" />
dodaje jakiś kod head - ale gdzie on jest?
siristru
12-01-2023, 22:47
To zależy od twojego szablonu. W szablonie Cassiopeia jest rozbity na trzy elementy:
<jdoc:include type="metas" />
<jdoc:include type="styles" />
<jdoc:include type="scripts" />
I to jest bardzo dobre bo można dodać swoje skrypty i style oraz meta zaraz pod ich wywołaniem przez Joomlę.
Google zaleca by kod śledzący umieścić ZARAZ ZA tagiem otwierającym <head>.
Ale to może nie być do końca dobre bo wywoła błąd dla zbyt późno zdeklarowanej strony kodowej języka dokumentu.
Myślę, że spoko możesz dodać kod zaraz pod <jdoc:include type="scripts" />
polecenie:
<jdoc:include type="metas" />
skąd pobiera dane?
Nie pamiętam dokładnie ale od pewnego czasu istnieje taki mechanizm w Joomli jak szablon potomka. Nie korzystałem jeszcze z tego i nie pamiętam czy to nie dotyczy wyłącznie css i js. Tutaj mogę się mylić, jednak warto sprawdzić wówczas ominiesz problem aktualizacji.
Zresztą do zaplecza możesz zmodyfikować kod mojego pluginu https://github.com/rkonikpl/rkonik-GTM/raw/main/rkonikgtm.php
usuń
if ( $app->isClient('administrator') )
{
return;
}
Po tej zmianie możesz dodać do frontu i backendu ten sam kod.
Plugin jest przygotowany do wdrażania Google Tag Manager ale nic nie szkodzi na przeszkodzie by go zmodyfikować do własnych celów.
Wszystko jest podane w tym "nielubianym" szablonie Cassiopea :) (pewnie dlatego że jest tam użyty grid a nie fluid)
Korzystasz z klasy Web AssetManager.
oraz np metody odpowiedzialnej za dodawanie skryptu https://api.joomla.org/cms-4/classes/Joomla-CMS-WebAsset-WebAssetManager.html#method_addInlineScript
danymi źródłowymi są pliki js and css umieszczone w katalogu szablonu "media" (w przypadku Cassiopei dane początkowe pobierane są z definisji w pliku json).
co do "metas" to są to dane pobierane z tagów <meta>, więc jeśli zdefiniujesz te parametry to zostaną one zaciągniete właśnie tym poleceniem
<jdoc:include type="metas" />
co do szablonu potomnego, to jest on możliwy tylko jeśli szablon główny jest prawidłowo do tego przygotowany. Szablon potomny dotyczy wszystkiego nie tylko js i css, w ten sposób można dokonać override'a szablonu, w pełnym zakresie.
Zrobiłem. Dla potomnych:
do pliku index.html przed znacznikiem </Head> wkleić:
<!-- Google tracking script -->
<?php if ($this->params->get('trackingID')) : ?>
<!-- Google tag (gtag.js) -->
<script
async
src="https://www.googletagmanager.com/gtag/js?id=<?php echo $this->params->get('trackingID'); ?>"
></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '<?php echo $this->params->get('trackingID'); ?>');
</script>
<?php endif; ?>
i w pliku templateDetails.xml przed znacznikiem </extension>
<config> <fields name="params">
<fieldset name="Advanced">
<field
name="trackingID"
type="text"
label="TPL_SIMPLE_TRACKING_ID"
description="TPL_SIMPLE_TRACKING_ID"
default=""
filter="string"
/>
</fieldset>
</fields>
</config>
i teraz w opcjach templatki w advanced pojawi się dodatkowe pole w które wpisujem tracking ID wygenerowany przez google analitics.
Pierwsza lepsza aktualizacja i od nowa musisz wprowadzać zmiany
zwiastun
20-01-2023, 12:11
Nie musisz. Utwórz szablon potomny (robisz to na zapleczu). Tworzenie szablonu potomnego jest bardzo proste. Tworzysz, dodajesz własny plik index.php i inne, w których dokonujesz zmian, których potrzebujesz. Szablon potomny korzysta z plików szablonu rodzica (czyli w tym przypadku Cassiopei) i z Twoich zamiast oryginalnych (Twoje "nadpisują" pliki oryginalne ).
vBulletin® v4.2.5, Prawa przedruku © 2024 vBulletin Solutions, Inc. Wszystkie prawa zastrzeżone.
Tłumaczenie: Polskie Centrum Joomla!