Derzeit arbeite ich an einem Projekt, wo aus einer alten Typo3-Installation die Seitenstruktur in eine neue Installation übernommen werden sollen. Dabei gilt es, den kompletten Page-Tree zu exportieren als *.t3d und ihn auf der neuen Installation wieder zu importieren. Wie es der Zufall nun so will hab ich auf die Option unter „Weitere Seiteneinstellungen …“ –> „Als Startpunkt für den Seitenbaum festlegen“ erwischt, statt der darunterliegenden „Exportieren in *.t3d“:
Bevor ichs wieder vergesse, muss ich es kurz festhalten: Wer testen möchte, ob in seinem XML – Dokument ein Knoten existiert, braucht keine komplizierte Anweisung (so wie ich es grad ewig versucht habe … mit string-length() oder count() – Anweisungen …). Es geht ganz einfach so: oder aber so: Wer hätte das gedacht, dass das so einfach ist?! 🙂 Hoffe, es hilft auch anderen! Achtung! Dieser Beitrag ist ursprünglich vom Januar 2009 und damit schon sehr alt. Die hier veröffentlichten Informationen zum Umziehen berücksichtigen keine URLs, die serialisiert abgelegt werden. Bei serialisierten Daten können nicht einfach die URLs ersetzt werden, da hier die Zeichenlänge mit abgespeichert wird. Eine sicherere Variante gibt es hier: https://interconnectit.com/products/search-and-replace-for-wordpress-databases/ (in Englisch) Der ursprüngliche Artikel: Gerade ein akuter Fall bei mir gewesen: ich hatte zwecks Domainumzug (nicht bei mir, ich bleib hier! 🙂 ) das Problem, dass ich Artikel eines anderen Blogs in den neuen Blog importiert hatte, in denen Bilder verlinkt waren, welche jedoch noch zur alten Domain verlinkten. Via FTP hab ich das upload-Verzeichnis direkt in den neuen Blog übertragen können und somit alle hochgeladenen Bilder des alten Blogs bereits auf dem neuen Blog gehabt, jedoch nur physisch und nicht verlinkt. Nun wollte ich aber nicht die über 100 Artikel bearbeiten und die Bild-URLs aktualisieren, sondern suchte nach einer anderen Lösung. Ich wollte in der Datenbank in der Tabelle in der Spalte alle URLs mit der neuen Domain ersetzen. Auf der Suche nach einer Lösung suchte ich als erstes in der MySQL-Doku nach der -Funktion, diese jedoch liefert keine allzu guten Beispiele :-(. Glücklicherweise traf ich auf den Blog des Pfannenwenders, welcher in seinem Artikel „Suchen und Ersetzen in MySQL-Tabellen“ mir die Lösung auf dem Teller präsentierte. Der entscheidende Befehl, welcher auf der MySQL-Datenbank auszuführen ist, lautet also: Dieser Befehl ersetzt alle vorkommenden www.altedomain.de mit www.neuedomain.de, beispielsweise: Im Artikel steht noch der alte Link: . Nach dem Ausführen des Update-Befehls steht dann statt dem alten Link dort: . Und genauso wollte ich es haben! 🙂 Zu beachten sind die Backticks ( ` ) und die einfachen Anführungszeichen ( ‚ ). Die Tabelle und die Spalte der Tabelle müssen in Backticks geschrieben werden, die Suchstrings in einfachen Anführungszeichen. Falsch gesetzt wirft die Datenbank einen Fehler und führt den Update-Prozess nicht durch. Und, wie schon in Pfannenwenders Artikel: BACKUP der Datenbank vorher machen! Denn sonst ist alles schlimmstenfalls verpfuscht und nicht wiederherstellbar! So, nun hoff ich mal, dass das jemandem hilft :-). Mir hats sehr geholfen und mindestens 600 Klicks erspart und ca. 2,5 Stunden Arbeit! Problem: Ich habe einen String, welchen ich auseinandernehmen will. Der String beinhaltet ein Sonderzeichen als Trenner. Ich möchte alle Zeichen, welche VOR diesem Trenner stehen als Teilstring bekommen. Die Funktion strstr() bzw. stristr() (Groß- und Kleinschreibung ist mir egal) liefert mir jedoch nur den Teilstring NACH dem gefundenen Sonderzeichen. Sie verfügt jedoch über den Zusatzparameter "before_needle". Wenn ich den auf TRUE setze, sollte die Funktion den Teilstring vor dem gefundenen Sonderzeichen (Suchstring "needle") zurückgeben, stattdessen passierte mir folgendes: Gerade beim Auseinandernehmen von Strings und dem Versuch, den Teilstring eines Strings vor dem gefundenen Suchstring zu bekommen mittels der PHP-Funktion strstr() oder stristr(), kam folgender Fehler zustande: "Wrong parameter count for stristr()". Leider gibts die Funktion erst ab PHP Version 5.3, die ist aber noch nicht veröffentlicht. Wer einen Teilstring haben möchte, der VOR dem gefundenen Parameter steht, kann stattdessen mb_stristr() benutzen. Das funktioniert, wobei ich nicht weiß, ob diese Funktion, da Multibyte-String-Funktion, speicherintensiver ist. Da ich nur einen ganz kleinen String auseinandernehmen musste, stört mich dies jedoch nicht ;-). Vielleicht hilfts ja noch jemandem weiter! Ach ja: Frohes neues Jahr allen Lesern und denen, die auf diesen Artikel stoßen! 🙂 Nach langem Suchen hab ich endlich die Lösung dafür gefunden. Wie schon früher berichtet gab es ja auf Clims Blog Probleme mit dem Plugin WordPress Stats. Nach einer Änderung am Theme hat das WordPress Stats Plugin immer 0 Views angezeigt, obwohl er Kommentare zu den Posts bekam. Nach diversen oben nachzulesenden Änderungen fehlten jedoch immernoch die Klicks auf die Artikel und Seiten. Da ich seit kurzem wieder intensiv an der Theme-Programmierung für WordPress arbeite, kam mir der Gedanke, dass ich ja im Forum von WordPress nochmal danach suchen kann. Siehe da, dort fand ich den Artikel, welcher besagt, dass das WP-Stats Plugin in der
Veröffentlicht am Kategorien MySQL, Typo3, Webprogrammierung1 Kommentar zu [Typo3] „Als Startpunkt für den Seitenbaum festlegen“ wieder rückgängig machen
Überprüfen, ob ein Knoten einer XML existiert mit XSL und xsl:if oder xsl:when
<xsl:choose>
<!-- gibt TRUE zurück, wenn Knoten vorhanden -->
<xsl:when test="knoten">
<!-- liefert Inhalt des Knoten -->
<xsl:value -of select="knoten">
</xsl:value></xsl:when>
<!-- wenn FALSE, ist kein Knoten vorhanden -->
<xsl:otherwise>Knoten nicht vorhanden</xsl:otherwise>
</xsl:choose>
<xsl:if test="knoten">Knoten ist vorhanden, mach etwas ... </xsl:if>
Links in Posts von WordPress ersetzen in der Datenbank mit MySQL-Anweisung
wp_posts
post_content
REPLACE()
UPDATE `wp_posts` SET `post_content` = REPLACE (
`post_content`,
'www.altedomain.de',
'www.neuedomain.de'
)
<img src="http://www.altedomain.de/wp-content/uploads/bild.jpg" alt="" />
<img src="http://www.neuedomain.de/wp-content/uploads/bild.jpg" alt="" />
strstr() / stristr() – „Bug“: Wrong parameter count for stristr() – mögliche Lösung?
WordPress Stats Plugin zeigt keine Klicks für Posts und Seiten an – Gelöst!
footer.php
– Datei des Themes den Aufruf der wp_footer()
– Funktion benötigt. Also flugs den Code oberhalb des schließenden -Tags in die
footer.php
gepackt und endlich geht alles wieder wie normal. Endlich werden die Klicks auf die Seiten und Posts wieder angezeigt! 🙂