Zurück   WordPress Deutschland Forum > Support > Plugins und Widgets
Registrieren Hilfe Benutzerliste Suchen Heutige Beiträge Alle Foren als gelesen markieren Threads ohne Antworten


Antwort
 
Themen-Optionen Ansicht
Alt 12.05.2008, 11:23   #1 (permalink)
Susanne81
PostRank: 1
 
Registriert seit: 27.03.2008
Beiträge: 42
php / js Frage

Hi.
Ist wohl das falsche Board, aber hier kann mir bestimmt jemand helfen.

Es gibt da dieses JS:

Code:
var win=null;
function NewWindow(mypage,myname,w,h,scroll,pos){
if(pos=="random"){LeftPosition=(screen.width)?Math.floor(Math.random()*(screen.width-w)):100;TopPosition=(screen.height)?Math.floor(Math.random()*((screen.height-h)-75)):100;}
if(pos=="center"){LeftPosition=(screen.width)?(screen.width-w)/2:100;TopPosition=(screen.height)?(screen.height-h)/2:100;}
else if((pos!="center" && pos!="random") || pos==null){LeftPosition=0;TopPosition=20}
settings='width='+w+',height='+h+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+',location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=no';
win=window.open(mypage,myname,settings);
if(win.focus){win.focus();}}
function CloseNewWin(){if(win!=null && win.open)win.close()}
Der Code, um ein Popup zu öffnen sieht z.B. so aus:

Code:
<a href="test/test.jpg" onclick="NewWindow(this.href,'image','850','578','yes','center');return false" onfocus="this.blur()"  name="image" alt="image">test</a>
Funktioniert wunderbar.
Nun möchte ich das automatisiert auf alle Links anwenden, die auf ein Bild verweisen. Dazu habe ich mir ein Plugin geschnappt, welches eigentlich nur das rel="lightbox" Attribut hinzufügt und anstelle dessen versucht das
Code:
onclick="NewWindow(this.href,'image','850','578','yes','center');return false" onfocus="this.blur()"
einzusetzen.

so, z.B.

Code:
add_filter('the_content', 'addlightboxrel_replace');
function addlightboxrel_replace ($content)
{   global $post;
	$pattern = "/<a(.*?)href=('|\")([^>]*).(bmp|gif|jpeg|jpg|png)('|\")(.*?)>(.*?)<\/a>/i";
    $replacement = '<a$1href=$2$3.$4$5 onclick="NewWindow(this.href,image,850,578,yes,center);return false" onfocus="this.blur()" name="image" alt="image">$7</a>';
    $content = preg_replace($pattern, $replacement, $content);
    $content = str_replace("%LIGHTID%", $post->ID, $content);
    return $content;
}
Behalte ich die ' ' bei image, 850, usw drin gibt es einen php Error, nehme ich sie raus, so wie oben zu sehen, oder ersetze sie durch " " passiert leider nichts.

Wie mache ich das denn nun, meine Lieben?

Einen sonnigen Tag,
su*
Susanne81 ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Alt 12.05.2008, 16:32   #2 (permalink)
codestyling
PostRank: 5
 
Benutzerbild von codestyling
 
Registriert seit: 30.03.2008
Beiträge: 455
Hallo,

es gibt da einige Möglichkeiten, das zu automatisieren. Da du sowieso Javascript voraussetzt, ist es unnötiger Rechenaufwand, die Fenster auf dem Server reincodieren zu lassen. Das kann auch ein weiteres Script auf dem Client erledigen und verringert deine Serverbeanspruchung.

Allerdings müsste man wissen, ob du immer nur jpg oder auch andere Bildformate benutzt, welche WP Version du einsetzt und ob das für alle <a> gilt, deren href auf ein Bild verweist.

Der Vorteil in clientseitigen Bearbeitung (per Script) liegt in der weiterhin gegebenen Validierung und für Leute, die kein Javascript angeschaltet haben, in der Benutzung der Links, die dann trotzdem funktionieren sollten (könnte man ja noch einen target='_blank' reinmachen).

Du kannst die o.g. Informationen hier posten oder mir eine PM schicken, dann kann ich dir die max. 10 Zeilen JS Code anpassen und bereitstellen.
codestyling ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Alt 12.05.2008, 18:09   #3 (permalink)
Susanne81
PostRank: 1
 
Registriert seit: 27.03.2008
Beiträge: 42
hi!
ich habe es jetzt zwar hinbekommen, das o.g. script läuft, aber wenn du noch eine bessere Lösung weisst, dann immer her damit!

Hier die Infos:
- wp: 2.5.1
- jpg, gif, png
- alle a innerhalb des contents

Zwei Fragen: bekommst Du es auch hin, dass das Popup genausogroß wie das zu öffnende Bild ist? Und kannst Du dem Popup auch css styles zuweisen?

s.
Susanne81 ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Alt 12.05.2008, 18:28   #4 (permalink)
codestyling
PostRank: 5
 
Benutzerbild von codestyling
 
Registriert seit: 30.03.2008
Beiträge: 455
Bei diesen Zusatzwünschen und möglichen Blockierung der Popup Windows durch Popup Blocker, wäre es vermutlich eine bessere Option, eines der Plugins zu verwenden, die Bilder in div overlays darstellen.
So was wie Gallery Plugins usw.

Ich selbst benutze diese Plugins allerdings nicht, denn ich habe keine Gallerien. Allenfalls ein Bild, das ich gezoomed in einem div als Overlay haben will. Dafür hab ich eigene Scripts, die allerdings etwas Ballast mit sich bringen, denn das ist nicht das Einzige, was ich mit Scripts mache.

Wenn du dennoch auf der window.open( Variante bestehts, dann kann ich dir das Script bereitstellen. Aber Freude macht das dann den Besuchern deiner Seite nicht, denn der Popup Blocker wird da u.U. eingreifen.
codestyling ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Alt 12.05.2008, 18:34   #5 (permalink)
Susanne81
PostRank: 1
 
Registriert seit: 27.03.2008
Beiträge: 42
Danke für die schnelle Antwort!

Leider kann ich keine Lightbox o.ä. benutzen, da der Blog in einem Iframe (ja, muss so, leider) läuft. Dazu gibt es auch schon einen Thread: myGallery: Problem mit der Anzeige des Bildtitels...

Bin jetzt mit popups auch ganz zufrieden und finde sie auch hinsichtlich der großen Verbreitung von Lightbox und co. schon wieder ganz cool.

Würde also bei win.open bleiben wollen, ja.
Aber Danke für den Tipp!
Susanne81 ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Alt 12.05.2008, 21:03   #6 (permalink)
codestyling
PostRank: 5
 
Benutzerbild von codestyling
 
Registriert seit: 30.03.2008
Beiträge: 455
Anbei ein kleines Plugin (kannst je gern umbenennen), das alle Links in einer Seite, deren href auf png | jpg | gif enden, in einem Popup darstellen.
Um die Größen korrekt automatisch zu ermitteln, müsste ich mehr Zeit reinstecken in die Entwicklung, wäre aber machbar.

In dieser Version ist deshalb die Größe der Öffnung halbautomatisch:
HTML-Code:
<a href="/media/bug.jpg" alt="500|300" title="was auch immer">TEST BILD</a>
Im alt Attribute musst du Breite und Höhe als erstes mit | getrennt angeben, dann wird das Fenster in dieser Größe geöffnet.
Wenn das nicht geht bei dir, dann im javascript des Plugins wieder feste Wert weiterhin benutzen.

Geändert von codestyling (14.05.2008 um 11:33 Uhr).
codestyling ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Alt 12.05.2008, 21:13   #7 (permalink)
Susanne81
PostRank: 1
 
Registriert seit: 27.03.2008
Beiträge: 42
Oh Wow!
Danke Dir!

Selten, dass sich jemand so viel Mühe gibt! Ich teste das gleich morgen früh.

bussi,
su*
Susanne81 ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Alt 12.05.2008, 22:09   #8 (permalink)
codestyling
PostRank: 5
 
Benutzerbild von codestyling
 
Registriert seit: 30.03.2008
Beiträge: 455
... Anhang geupdated, jetzt sollte es auch automatisch die richtigen Größen als alt Attribute in die <a> Tags reinschreiben.
Also nun braucht's nur so zu sein:
HTML-Code:
<a href="http://www.bmeise.test/media/bug.jpg">Testbild</a>
und daraus macht das Plugin dann:
HTML-Code:
<a title="Bugfix: WordPress 2.3.3 und TinyMCE 2.1.1.1" alt="300|200" name="image" href="http://www.bmeise.test/media/bug.jpg">Testbild</a>
Der Title des Bildes ist dann zusätzlich der Post Title, wenn du das nicht möchtest, nimms raus.
Ist so konzipiert, das es auch mit relativen URI Angaben zurechtkommen sollte, hängt aber im Einzelfall davon ab, woher die Bilder kommen, ob es dann auch geht.
codestyling ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Alt 13.05.2008, 09:48   #9 (permalink)
Susanne81
PostRank: 1
 
Registriert seit: 27.03.2008
Beiträge: 42
Gerade getestet. (OS X - FF, Safari, Opera, jeweils neueste Verision)
Leider führt das Popup zu einem 404.

Der Code, der im Frontend generiert wird, sieht so aus:

Code:
<a href=".../wp-content/uploads/2008/05/test.jpg" name="image" alt="850|580" title="Bild Test"><img class="alignnone size-medium wp-image-14" title="lykke-li1" src=".../wp-content/uploads/2008/05/test-500x341.jpg" alt="" width="500" height="341" /></a>
Geändert habe ich nichts ausser, dass ich das Plugin und die Dateien von Susanne81 in img_popup umbenannt habe. (Ebenfalls in der php Zeile 31)

Läuft das bei Dir?

Einen schönen Wochenstart,
die su*
Susanne81 ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Alt 13.05.2008, 10:36   #10 (permalink)
codestyling
PostRank: 5
 
Benutzerbild von codestyling
 
Registriert seit: 30.03.2008
Beiträge: 455
Also nun wundere ich mich aber.
Wie kommt es denn zu dieser Ausgabe ?
Code:
href=".../wp-content/uploads/2008/05/test.jpg"
Dies ist keine gültige, relative Angabe für das Bild. 2 Punkte würde ich ja noch verstehen, aber wie kommt es zu 3 Punkten ?
Es ist dadurch natürlich nicht möglich, das Bild zu finden und somit kommt ein 404. Werden die Bilder mit einem anderen Plugin in den Post integriert oder schreibst du das selbst in den Post ?
codestyling ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Antwort


Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge anzufügen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist Aus.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are Aus
Refbacks are Aus


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:00 Uhr.


Sponsoren:

Powered by vBulletin® Version 3.6.8 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0  — ImpressumEin Inpsyde.com Projekt