"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Javascript und URL Abfrage

McDeath98 27.02.2014 - 10:13 4331 17
Posts

McDeath98

Dark Rider
Avatar
Registered: Jul 2000
Location: Schweiz
Posts: 724
Guten Morgen.

Ich bin in unserem Shop System auf ein kleines Hindernis gestossen, das ich mit php sehr gechillt lösen kann.

Das Shop System hat im Prinzip 2 Ebenen.

Ebene 1 ist der html Shop. Dort bewegt man sich mit einzelnen html Seiten wie auf einer normalen HP. Super für Google.

Sobald der Kunde aber etwas bestellen möchte, wechselt er automatisch in den dynamischen Shop, welcher halt für Google nicht wirklich optimal ist.

Funktioniert auch alles perfekt.

Nun muss ich an einer Stelle einen url ändern, was ich mittels folgendem Script vor hatte.

Code: PHP
<?php               
		$url=$_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF'];
				
		if (!strpos($url,'cgi-bin')) {
	    $homeurl="http://www.sutertech-shop.ch/shop_s/";
		} else {
		$homeurl="http://__xxpath__?show0,__xxsession__";
		}
	?>
...
...
<li><a href=<?php echo $homeurl; ?>>Home</a></li>

Dummerweise hab ich natürlich nicht bedacht, dass das ja ein html Shop ist, und dort nicht funktioniert.

Nun bräuchte ich das selbe in JS, und davon hab ich soviel Ahnung wie ... ka mir kommt grad kein passender Vergleich in den Sinn.

tia

McDeath
Bearbeitet von McDeath98 am 27.02.2014, 10:32

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Ich verstehe nicht, was du nun eigentlich willst. Wieso soll der PHP-Code nicht funktionieren?

McDeath98

Dark Rider
Avatar
Registered: Jul 2000
Location: Schweiz
Posts: 724
weil der html shop komplett aus html files besteht, und darum keinen php code ausführt.

http://www.sutertech-shop.ch/shop_s

wenn du rechts auf anmelden klickst landest du im dynamische Shop
Bearbeitet von McDeath98 am 27.02.2014, 10:33

ill

...
Avatar
Registered: Nov 2003
Location: Salzburg
Posts: 2059
Ich versteh's auch nicht ganz, das wird doch alles auf dem gleichen Server liegen und von dem auch ausgeliefert werden? Dann sollte doch der PHP-Parser ganz normal funktionieren.

Anyways:

Code: HTML
<script>
    (function(){
        var url = window.location.href,
            homeUrl = "";

        if(url.indexOf('test') !== -1){
            homeUrl="http://www.sutertech-shop.ch/shop_s/";
        }else{
            homeUrl="http://__xxpath__?show0,__xxsession__";
        }

        var link = document.getElementById('homelink');
        link.setAttribute('href', homeUrl);
    })();
</script>


So oder so ähnlich sollts funktionieren, wenn der Link die ID "homelink" bekommt. Geht natürlich ohne auch, is aber halt ein kleines bisschen komplizierter.
Script in der Form muss nach dem auftauchen des Elements im Markup eingebunden werden, weil das Element sonst noch nicht im DOM vorhanden ist und nicht selektiert werden kann.
Bearbeitet von ill am 27.02.2014, 10:37

Obermotz

Fünfzylindernazi
Avatar
Registered: Nov 2002
Location: OÖ/RI
Posts: 5262
Hui das ist schon ein altes System.. Ist der Shop eine Eigenentwicklung?
Wenn die Google-Ergebnisse ausschlaggebend sind, wirds früher oder später wohl nicht ausbleiben, auf eine modernere Software mit Rewrite-Engine zurückzugreifen oder entsprechende Funktionalitäten in die Alte einzubauen.

McDeath98

Dark Rider
Avatar
Registered: Jul 2000
Location: Schweiz
Posts: 724
Genau sowas in der Art.
Aber wie gesagt, wirklich 0 Plan von Java.

Wie binde ich dann die Link ID in ein ?

McDeath98

Dark Rider
Avatar
Registered: Jul 2000
Location: Schweiz
Posts: 724
Zitat von Obermotz
Hui das ist schon ein altes System.. Ist der Shop eine Eigenentwicklung?
Wenn die Google-Ergebnisse ausschlaggebend sind, wirds früher oder später wohl nicht ausbleiben, auf eine modernere Software mit Rewrite-Engine zurückzugreifen oder entsprechende Funktionalitäten in die Alte einzubauen.

Chefe mag ihn, und Chefe ist Chefe. Wir versuchen seit sicher 3 Jahren den Shop umzustellen auf xcommerce oder ein anderes System, aber er will nicht.

Sobald ein Artikel neu eingetragen wird bzw. sich irgendwas ändert wird halt die entsprechende html Seite generiert und verlinkt.

Aber ja, er ist uralt. Aber kein Eigenentwicklung sondern von einer Firma aus Deutschland. Unser Hauptproblem ist ja, das wir mit der Firma keine direkten Kontakt habe, sondern alles über eine Partnerfirma hier in der Schweiz läuft die entsprechende Verträge hat

ill

...
Avatar
Registered: Nov 2003
Location: Salzburg
Posts: 2059
Naja, der Link müsste halt dann folgendermaßen aussehen:

Code: HTML
<li><a id="homelink" href="http://www.sutertech-shop.ch/shop_s/">Home</a></li>

Wennst die id nicht ins System bringst wär ein bisschen mehr Markup rundherum interessant, dann würd man schon einen passenden Selektor zusammenstecken können, wird halt hässlich dann...

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25423
Ich würde es nicht nachträglich mit Javascript machen, das ist ein furchtbarer Workaround, der ohne Javascript oder für Bots nicht funktioniert.

Wenn das gecachte HTML-Seiten sind, an denen sich nichts rütteln lässt, dann ersetze einfach die vorkommenden URLs und für die neuen HTML-Seiten ändere den PHP-Code.

Alternativ könntest du noch mit mod_rewrite arbeiten und die URLs umschreiben.

othan

Layer 8 Problem
Avatar
Registered: Nov 2001
Location: Switzerland
Posts: 4226
Uiii ein Nachbar, nicht an der Tagwache?

Ich bekomme schöne Javascript Fehler wenn ich mir die Referenzen ansehe.
Die solltest Du eventuell auch mal beachten.

Grüsse vom Ruopigenplatz :)

/EDIT: Browser IE9, mit dem IE11 gehts.

ill

...
Avatar
Registered: Nov 2003
Location: Salzburg
Posts: 2059
Zitat von mat
Ich würde es nicht nachträglich mit Javascript machen, das ist ein furchtbarer Workaround, der ohne Javascript oder für Bots nicht funktioniert.

Ja, absolut, ich hab mir eingebildet eh geschrieben zu haben, dass das eigentlich auf keinen Fall so gemacht werden sollt. Dafür ist JS wirklich nicht da

McDeath98

Dark Rider
Avatar
Registered: Jul 2000
Location: Schweiz
Posts: 724
Zitat von othan
Uiii ein Nachbar, nicht an der Tagwache?

Ich bekomme schöne Javascript Fehler wenn ich mir die Referenzen ansehe.
Die solltest Du eventuell auch mal beachten.

Grüsse vom Ruopigenplatz :)

/EDIT: Browser IE9, mit dem IE11 gehts.

Ne. Das versuche ich seit Jahren erfolgreich zu vermeiden :D
Bin kein Freund von Guugemusik ;)

Und ja, das mit JS lassen wir.
Für den Moment werde ich die Sache relativ brachial lösen, in dem ich die Templates einfach doppelt benutze.

Für den dynamischen Shop halt die dynamischen. Soll der statische generiert werden, was auf dem Server direkt passiert, benenne ich den Template Ordner einfach um, und stelle Ihm einen mit shop_s Links zum generieren zur Verfügung. Danach wechsel ich die auf die dynamischen Templates.

Ist zwar ein gebastel, aber in der Not frisst der Teufel Fliegen. Immerhin sieht Chefe langsam ein, dass der Shop Schrott ist und schaut sich nach einer alternative um ;)

McDeath98

Dark Rider
Avatar
Registered: Jul 2000
Location: Schweiz
Posts: 724
Mittlerweile funktioniert das Ganze ohne Gewaltsmassnahmen.

Trotzdem ist da noch ein weiteres Problem ausgetaucht. Unser Chef hat eine Firma beauftragt, welche den Shop optimieren soll. Kostet unglaublichviel Geld und bringt nicht viel. Aber das ist seine Sache.

Unglücklicherweise, machen die mir damit das Leben richtig schwer.

Nun soll in jeden Header, welcher nicht cgi aufgerufen wird (also den *dynamischen* Shop*)
<meta name="robots" Content="noindex, nofollow" /> eingefügt werden. Aber nur in die Header vom dynamischen, was nicht geht, weil es die selben Vorlagen Dateien sind.

Per PHP lässt sich das nicht lösen, weil kein php in html files. Hat irgend jemand ne Idee wie es vielleicht doch funktionieren könnte ?

Im Prinzip muss für jeden URL der cgi enthält <meta name="robots" Content="noindex, nofollow" /> freigeschaltet werden, für die anderen URL nicht.

mir dröhnt der Schädel

McDeath98

Dark Rider
Avatar
Registered: Jul 2000
Location: Schweiz
Posts: 724
Hmmm. Bereitet ein php include im Header, welcher im html eh nicht ausgeführt hat, irgendwelche Probleme ?
Sonst pack ich einfach in jedes File einen Include, welcher den entsprechenden meta tag importiert. Und da in den html files eh keine php ausgeführt wird, steht halt der Meta Tag dort nicht drin. Nur der include Befehl.

Sollte doch auch funktionieren oder ?

edith meint: verdammt. der führt auch kein php aus. Da steht nur der komplette Code im Header
Bearbeitet von McDeath98 am 15.07.2014, 12:45

-=Willi=-

The Emperor protects
Avatar
Registered: Aug 2003
Location: ~
Posts: 1624
Ich versteh gar nix :D.

Der Webshop besteht jetzt aus zwei Teilen; einem statischen der old-school über echte HTML-Files navigiert wird und einen dynamischen mit PHP. Und jedes HTML-File des statischen Teils welches einen Link enthält, dessen href 'cgi' enthält, soll diesen meta-Tag bekommen?

Edit: Ja, <?php [...] ?> wird einfach vom Browser ignoriert aber es hat einen extrem bitteren Beigeschmack :eek:. Vielleichts wirds Zeit den Shop endgültig einzuschläfern.
Bearbeitet von -=Willi=- am 15.07.2014, 12:46
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz