PDA

Zobacz pełną wersję : google tracking id we własnym szablonie



qrdziel
06-01-2023, 22:47
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

Bazyl
07-01-2023, 09:54
Pracuje się zawsze na kopii szablonu, by zmiany nie były nadpisywane przy aktualizacji...

qrdziel
07-01-2023, 19:40
ale chciałbym się dowiedzieć jak to zrobić we własnej templatce.

Bazyl
07-01-2023, 21:08
Kopiujesz cały katalog szablonu
Zmieniasz mu nazwę
Zmieniasz nazwę w xml-u

Uruchamiasz wykrywanie dodatków i już powinieneś mieć własny szablon.

qrdziel
09-01-2023, 20:33
nie o to mi chodziło.
Jak wpisać google tracking id od strony zaplecza wchodząc na ustawienia templatki.

siristru
09-01-2023, 22: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.

qrdziel
10-01-2023, 14:58
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, 15: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')

qrdziel
12-01-2023, 23:24
możesz dokładniej opisać jak to dział:

<jdoc:include type="head" />
dodaje jakiś kod head - ale gdzie on jest?

siristru
12-01-2023, 23: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" />

qrdziel
14-01-2023, 13:22
polecenie:

<jdoc:include type="metas" />

skąd pobiera dane?

rkonik
14-01-2023, 13:29
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.

terra
15-01-2023, 19:49
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.

qrdziel
19-01-2023, 17:56
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.

rkonik
20-01-2023, 12:50
Pierwsza lepsza aktualizacja i od nowa musisz wprowadzać zmiany

zwiastun
20-01-2023, 13: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 ).