Domain-URL in einer js-Datei

Hallo,

 

ich möchte gern den Domainnamen in js-Dateien nutzen, die ich einbinden möchte.

$( document ).ready(function() {
	$(".sb_hotline").click(function(){
		console.log("11");
		window.location.href = "{$smarty.server.HTTP_HOST}/kontakt";
	});
});

 

Heraus kommt dann das:

%7B$smarty.server.HTTP_HOST%7D/kontakt

 

Wo ist mein Fehler?

@Schumiel schrieb:

Hallo,

 

ich möchte gern den Domainnamen in js-Dateien nutzen, die ich einbinden möchte.

( document ).ready(function() { (".sb_hotline").click(function(){
console.log(„11“);
window.location.href = „{$smarty.server.HTTP_HOST}/kontakt“;
});
});

 

Heraus kommt dann das:

%7B$smarty.server.HTTP_HOST%7D/kontakt

 

Wo ist mein Fehler?

Hallo,

der Fehler wird wohl daran liegen, dass man überhaupt kein Smarty in JavaScript - Dateien verwenden kann.

Man könnte aber beispielsweise ein div in einem Shopware Block erstellen, bei dem man ein data-Attribut mit der URL setzt und dann in der JavaScript-Datei das data - Attribut wieder auslesen.

Beste Grüße

Sebastian

1 Like

Moin, Geht das nicht mit location.hostname + ‘/kontakt’, also purem JS ?

window.controller.register.replace(‘register’, ‘kontakt’);

Simple und einfach :smiley:

@Shyim schrieb:

window.controller.register.replace(‚register‘, ‚kontakt‘);

Simple und einfach :D

Sehr einfacher Ansatz von Shyim  Grin

Ich mache es immer auf die Art, dass ich mir einen eigenen DatenLayer für die Variablen mache. Diese kann ich dann überall verwenden (z.B. auch im Script).

Beispiel mit meinem Plugin „MyPlugin“:

eine index/header.tpl anlegen mit folgenden Inhalt

{extends file="parent:frontend/index/header.tpl"}

{block name="frontend_index_header_javascript_tracking"}
	{$smarty.block.parent}
	
        var myPluginDataLayer = {ldelim}
            'url': '{url controller="myPlugin" action="ajaxSaveTheWorld"}',
            'message': 'World is saved'
			{rdelim};
	
{/block}

Anschließend verwende ich die Daten in meinem JS-Script. Beispiel:

.....
    if (window['myPluginDataLayer'] === undefined) {
        return;
    }
    $.ajax({
        'url': myPluginDataLayer.url+ getBy,
        'success': function (result) {
            alert(myPluginDataLayer.message)
        },
        'error': function (e, error) {
            console.log('error', e, error);
        }
    });
......

Natürlich nur ein kleines Beispiel. Aber ich denke als ein Anhaltspunkt sollte es helfen. und Somit erstellt Shopware für mich auf jeden Fall die URL richtig.

Somit kann ich auch Einstellungen aus den Backend mit übergeben, aber das ist eine andere Geschichte :wink:

Gruß
daMardl