Author Topic: Modifikationen in der Template index.php  (Read 663 times)

Offline LudwigSt

  • Posts: 258
Modifikationen in der Template index.php
« on: November 25, 2017, 11:19:35 AM »
Hallo Gemeinde,
ich nutze WB 2.10.0. Neben der WB Datenbank benutze ich auch eine andere MySQL Datenbank, in der meine Artikel enthalten sind. Artikel bezogene Seiten werden durch eine WB Seite aufgerufen, bei  der z. B. die Artikel-ID als PHP Parameter mit übergeben wird. Verkaufte Artikel werden in der Artikel-Datenbank als verkauft gekennzeichnet und können aber trotzdem noch über die WB Seite angezeigt werden, wenn sie z. B. durch eine Suchmaschine gefunden wurden. Die Seite enthält dann den Zusatz "dieser Artikel ist aufverkauft".

Jetzt hat es sich aber ergeben, dass ich einzelne Artikel komplett aus der Artikel-Datenbank gelöscht habe, weil sie überhaupt nicht mehr angzeigt werden sollen. Das Ergebnis war, dass die WB Seite von den Suchmaschinen aus weiterhin aufrufbar war, jedoch keinerlei Artikeldaten enthielt. Es war quasi dann nur noch das Gerüst dieser Seite. Da mir das nicht gefiel, kam ich auf die Idee, beim Aufruf einer Seite mit der Artikel-ID eines gelöschten Artikels den Error-Code 404 mit auszugeben und damit dann eine speziell dafür entwickelt Fehlerseite aus zu geben. Das klappt auch wunderbar.

Nun zum eingentlichen Problem. Ich gebe auf allen meinen Seiten einen canonical link mit aus. Im Falle dieser Seite entspricht der canonical link genau dem Link, den die Suchmaschine für diesen gelöschten Artikel im Index hat. Also z. B. www.meineSeite.php?var=ID4711. Das finde ich in dem Fall nicht zielführend, weil die Seiten mit den gelöschten Artikeln ja aus dem Suchmaschinen Index verschwinden sollen. Also wollte ich den canonical link nur dann ausgeben, wenn die Seite nicht den Fehler Code 404 ausgibt. Ich hatte mir das so vorgestellt, dass ich den 404 Fehlercode auswerte und den canonical link nur dann ausgebe, wenn die Seite keinen 404-Fehler ausgibt.
Code: [Select]
<?php $a http_response_code(); 
      if (
$a!=404){echo "<link rel='canonical' href=' "; .... ?>

Leider klappt das aber nicht.

Ausserdem hatte ich vor, in der selben Form den Meta Tag noindex, follow auszugeben. Das funktioniert ebensowenig. Wenn ich mir den Inhalt von $a ausgeben lasse, dann ist er korrekt 404. Was mache ich da falsch? 
Wissen ist Macht - aber nix wissen macht auch nix.

Offline jacobi22

  • Posts: 5843
  • Gender: Male
  • Support also via PM or EMail
    • Jacobi22
Re: Modifikationen in der Template index.php
« Reply #1 on: November 25, 2017, 12:57:06 PM »
Quote
Was mache ich da falsch? 
schlecht zu sagen ohne alles zu sehen, aber vom Grundprinzip her ist nichts falsch an deinem Code

als grundsätzlichen Funktionstest mache dir immer solche Abfragen, die in jedem Fall erst einmal eine Ausgabe erzeugen, z.b. so

Code: [Select]
<?php $a http_response_code(); 
      if (
$a != 404){
          echo 
"404 is nicht da ".$a
      }else{
          echo 
"404 is da ".$a;
      }
?>

und dann baust du den Teil der Abfrage entsprechend um, den du brauchst, also mit dem canonical und dem no-index erweitern

zwei Problemchen fallen mir zum Thema noch ein

#1 - ich glaube, der canonical wird in WB durch einen Filter gesteuert, bin da aber nicht sicher, ich benutz den nicht, wäre zu testen, ob er die Ausgabe manipuliert, also etwas anderes ausgibt, als du in der Abfrage hast

#2 - ähnliches trifft für no-index in Verbindung mit dem simplepagehead-Modul zu, da wäre es aber nur eine Ausgabe des meta-Tags, die im Fall des Falles hinzugefügt werden wird. Entweder im simplepagehead-Modul mal auskommentieren oder die Funktion testweise deaktivieren



Wer nicht will, findet Gründe, wer will, findet Wege.

Offline LudwigSt

  • Posts: 258
Re: Modifikationen in der Template index.php
« Reply #2 on: November 25, 2017, 01:45:41 PM »
Ich probiere jetzt auch schon eine Weile herum. und vermute, dass das Problem ist, dass ich den 404 Error so erzeuge, dass ich mit include eine externe php-Datei einbinde, für den Fall das die Artikel-ID nicht gefunden wird. Diese enthält am Anfang
Code: [Select]
header("HTTP/1.0 404 Not Found");. In dieser includierten Datei ergibt die Abfrage
Code: [Select]
echo "404 is da ".$a; 404.

Jetzt habe ich in der includierten Datei eingefügt
Code: [Select]
$code=404; und wenn ich in meiner WB Seite
Code: [Select]
echo $code; einfüge, erhalte ich auch dort die Ausgabe
Quote
404
.

Schreibe ich aber in der index.php z. B.
Code: [Select]
if (isset($code) && ($code==404)){echo "<meta name=\"robots\" content=\"noindex,nofollow\">\n";} else {echo "<meta name=\"robots\" content=\"index,follow\">\n";} wird der else-Wert ausgegeben.

Ich schließe jetzt daraus, daß zu dem Zeitpunkt, wenn dieser Meta Tag geschrieben wird, der Error Code noch nicht auf 404 steht. Sehe ich das richtig? Lösungsvorschlag?
Wissen ist Macht - aber nix wissen macht auch nix.

Offline LudwigSt

  • Posts: 258
Re: Modifikationen in der Template index.php
« Reply #3 on: November 25, 2017, 02:38:30 PM »
Ich habe das jetzt anders gelöst, indem ich vor die Ausgabe vom canonical link und dem robots Meta Tag auch noch eine Datenbankabfrage der Artikeldatenbank davor geschaltet habe und abhängig davon, ob der Artikel vorhanden ist oder nicht, gebe ich dann das entsprechende aus oder eben nicht. Das haut hin  :-D
Wissen ist Macht - aber nix wissen macht auch nix.

 

postern-length