Website spidern --> phpwcms zu vollen pfadangaben zwin

Hier bekommst Du deutschsprachigen Support. Keine Fehlermeldungen oder Erweiterungswünsche bitte!
Post Reply
Talin
Posts: 25
Joined: Mon 21. Feb 2005, 19:31
Contact:

Website spidern --> phpwcms zu vollen pfadangaben zwin

Post by Talin »

Naaabend alle miteinander :)

Da ich für diverse Clubs und Discotheken sowohl die Webseitenprogrammierung als auch die damit einhergehende Betreuung erledige, komme ich um das Thema NEWSLETTER nicht drumherum. Dafür benutze ich allerdings nicht das phpwcms-newslettertool sondern ein externes Programm.

Da ich mit diesem Programm komplette Websites spidern kann und gerne den von PHPWCMS erzeugten Code nutzen möchte, frage ich mich nun: WIE kann man PHPWCMS dazu kriegen, das es mir komplette Pfadangaben für Grafiken ausspuckt, damit ich nicht jedesmal den gespiderten HTML-Code noch händisch umstricken darf, bevor ein Newsletter rausgeht.

Wäre suuuuper wenn da jemand was wüsste :)

lg

der uwe :)
User avatar
marcus@localhorst
Posts: 815
Joined: Fri 28. May 2004, 11:31
Location: localhorst
Contact:

Post by marcus@localhorst »

Lösungsansatz für mich wären reguläre ausdrücke und frontend_render folder.

erstelle darin eine datei.php und schreibe folgendes rein:

Code: Select all

<?php

$pattern[0] = '#<img([^>]+)src="([^>"\s]+)"#i';
$pattern[1] = '#<a([^>]+)href="([^>"\s]+)"#i';
$replacement[0] =  '<img$1src="'.PHPWCMS_URL .'$2"';
$replacement[1] =  '<a$1href="'.PHPWCMS_URL .'$2"';

$content["all"] = preg_replace($pattern, $replacement, $content["all"]);
	
?>

das ersetzt dir alle relativen bilderlinks in absolute urls und gleichzeitig auch all internen Links auf absolute und du könntest die stylesheet links etc auf die gleiche art behandeln, in dem du die beiden arrays $pattern und $replacement erweiterst.

ich würde die datei allerdings nach getaner arbeit in den disabled ordner schieben, damit im normalbetrieb die bilderlinks weiterhin relativ bleiben und das skript nicht weiter ausgeführt wird. soweit ich weiss werden bilder mit absoluten links nicht aus dem browsercache sondern jedesmal neu vom server geladen.
ausserdem ist es unnötiger rechenaufwand.

hoffe das half weiter...
marcus

infos: http://www.php-faq.de/ch/ch-regexp.html
Talin
Posts: 25
Joined: Mon 21. Feb 2005, 19:31
Contact:

Post by Talin »

Hi und erstmal danke :)

So, und das ganze jetzt nochmal so, das ich das auch verstehe! *lol* Ich bin in PHP nicht so bewandert....vielleicht könntest Du das also nochmal so formulieren, das ich das einigermaßen verstehe :)
User avatar
marcus@localhorst
Posts: 815
Joined: Fri 28. May 2004, 11:31
Location: localhorst
Contact:

Post by marcus@localhorst »

hätte ich es nur gleich gemacht ;-) - aber es hätte auch klappen können ;-)

aaalso.
es gibt einen ordner template/inc_script/frontend_render

darin erstellst du eine datei namens link_convert.php
und schreibst da den obrigen code rein.

wenn du deine seite jetzt aufrufst, sollte das stück code alle relativen pfade in <img> und <a> tags mit der absoluten URL ersetzt werden.

wenn du deine seite gespidert hast, dann schiebe diese datei in den ordner disabled oder benenne die dateiendung *.php in *.php_ um. Dann wird diese nicht mehr ausgeführt.

zum verständnis: dieser frontend_render ordner erlaubt es, darin beliebige skripte auszuführen, für eigene replacement tags z.B.

dieses script sucht halt in $content['all'] - die variable, die die gerenderte Seite enthält - also im seiten content nach bilder + links und ersetzt diese durch einen absoluten link.

wenn du dir die ersten 4 zeilen anschaust, dann kannst du vielleicht ungefähr ableiten was da vor sich geht. ;-) oder halte dich an die obrige anleitung und es funktioniert einfach (ohne gewähr! ich habs aber getestet ;-))
http://de.wikipedia.org/wiki/Regul%C3%A ... r%C3%BCcke

grüße
marcus
Talin
Posts: 25
Joined: Mon 21. Feb 2005, 19:31
Contact:

Post by Talin »

ok, DAS habe ich verstanden, hehe :)

Und wie mache ich das nun mit den CSS-Links? Die werden ja nicht umgewandelt, oder?


ok...also generell werden links umgewandelt, aber die ganzen grafiken aus dem GT-Mod sowie die CSS-relevanten sachen werden nicht als komplette Pfade ausgegeben :) Wie löse ich DAS nun? :)
User avatar
marcus@localhorst
Posts: 815
Joined: Fri 28. May 2004, 11:31
Location: localhorst
Contact:

Post by marcus@localhorst »

die GT Mod links werden nicht umgewandelt?
sollten sie aber schon... :?

deine stylesheets kannste so in absolute urls erweitern:

$pattern[2] = '#<link([^>]+)href="([^>"\s]+)"#i';
$replacement[2] = 'na? ;-) ';

wenn du in deinem css allerdings hintergrund oder listenbilder verwendest, dann wird da nichts umgewandelt, da musst du das per hand reinschreiben (die absolute url)
background:#ffff url(http://www.absolu.te/bg.jpg) no-repeat;
Talin
Posts: 25
Joined: Mon 21. Feb 2005, 19:31
Contact:

Post by Talin »

marcus@localhorst wrote:die GT Mod links werden nicht umgewandelt?
sollten sie aber schon... :?

deine stylesheets kannste so in absolute urls erweitern:

$pattern[2] = '#<link([^>]+)href="([^>"\s]+)"#i';
$replacement[2] = 'na? ;-) ';

wenn du in deinem css allerdings hintergrund oder listenbilder verwendest, dann wird da nichts umgewandelt, da musst du das per hand reinschreiben (die absolute url)
background:#ffff url(http://www.absolu.te/bg.jpg) no-repeat;

Ich hab ehrlich gesagt KEINE ahnung was da hin muss *lol*
User avatar
marcus@localhorst
Posts: 815
Joined: Fri 28. May 2004, 11:31
Location: localhorst
Contact:

Post by marcus@localhorst »

tja...
dann mach dir mal nen kopf ;-) - ne war n scherz...
reguläre ausdrücke sind erstmal nur zeichensalat - ;-)

die stylesheet "absolution" sieht dann einfach so aus:

Code: Select all

$pattern[2] = '#<link([^>]+)href="([^>"\s]+)"#i';
$replacement[2] = '<link$1href="'.PHPWCMS_URL .'$2"';


geht das nun mit dem GT Mod?

m.

edit. ich sehe gerade, das die stylesheets in phpwcms nicht über <link href="style.css"> eingebunden werden :oops:
m.
Last edited by marcus@localhorst on Fri 28. Sep 2007, 14:24, edited 1 time in total.
Talin
Posts: 25
Joined: Mon 21. Feb 2005, 19:31
Contact:

Post by Talin »

Soooo.....ich habs nun mal getestet.....also läuft alles soweit, ABER:

css-dateien werde nicht mit komplettem Link angezeigt
die grafiken aus dem GT-Mod auch nicht


*grübel*
User avatar
marcus@localhorst
Posts: 815
Joined: Fri 28. May 2004, 11:31
Location: localhorst
Contact:

Post by marcus@localhorst »

so, also ich habs jetzt nochmal getestet.
mit den stylesheets das lässt sich über diesen weg nicht ändern, weil das nicht in der variable $content[all] enthalten ist.

alternativ könntest du aber die stylesheetdateien über deine vorlage mit der absoluten url neu einbinden -> quick & dirty!

--

wg GT Mod...
hast du die GT Mod ganz normal eingebunden oder verwendest du das in einem menü?
(es kann sein, das die ersetzungen für GTMod erst nach der ersetzung der links passiert)

---

und ganz zum schluss, frage ich mich, ob es nicht möglich ist, mit einem <base href="http://absolu.te" /> HTML Tag nicht diesen ganzen regEx quatsch überflüssig zu machen?
http://de.selfhtml.org/html/kopfdaten/basis.htm

schreib das mal in den Kopf deiner Vorlage/template in phpwcms und teste das mit deinem spider tool (dieses phpscript deaktivierst du, damit die ausgabe mit relativen pfaden erfolgt)

vielleicht klappt das ja?
Talin
Posts: 25
Joined: Mon 21. Feb 2005, 19:31
Contact:

Post by Talin »

Ja, ich werde die Stylesheetdateien wohl in der Vorlage schon entsprechend mit der absoluten URL einbinden. Scheint das beste zu sein.

Der GT-Mod wird teilweise für ein Menü benutzt (was aber im Newsletter nicht vorkommt) und für die Headlines der einzelnen Artikel.

Der Trick mit base href funktioniert leider nicht. Habe ich eben getestet. Schade eigentlich :)

Trotzdem erstmal vielen Dank :)
Post Reply