Beiträge von h.drees
-
-
Hallo,
mit meinem eigenen Plugin möchte ich Daten von einer anderen Seite herunterladen (welche dort dafür angeboten werden). Angefangen habe ich mit "file_get_contents", bin dann nach einigen negativen Aussagen zu curl_exec gewechselt. Nach einem Testserver-Wechsel habe ich dann festgestellt, dass diese Funktion nicht überall vorhanden ist. Mittlerweile sieht mein Test-Code wie folgt aus:
PHP
Alles anzeigenif (function_exists('curl_init')) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_USERAGENT, 'xyz'); $widget_html = curl_exec($ch); curl_close($ch); } elseif (ini_get('allow_url_fopen')) { ini_set('user_agent', 'xyz'); $widget_html = file_get_contents($url); } else { $elems = explode("?", $url); exec("/usr/bin/curl -d \"$elems[1]\" $elems[0]", $tmp_response); $curl_result = ''; foreach ($tmp_response as $value) { $curl_result .= $value; } // foreach $widget_html = $curl_result; } // elseIst das wirklich so kompliziert bzw. gibt es evtl. einen einfacheren Weg? Die Suche im www hat mich leider (noch) nicht wirklich weiter gebracht, vielleicht auch einfach durch falsche Suchbegriffe.
-
An das add_filter wollte ich ja gerade nicht dran, da dies das Plugin ist, welches ggf. aktualisiert wird und somit meine Anpassungen überschrieben werden.
Eine Lösung für mich hätte ich dann doch eher zufällig gefunden:
"Text hover" ersetzt mit diesem Code:
Zitat$new_text = "$1<acronym title='" . esc_attr( addcslashes( $hover_text, '\\$' ) ) . "'>$2</acronym>$3";
Die mehrfachen einfachen Anführungsstriche machen Probleme. AusZitat[kfz art='PKW' ...]
wird durch das PluginZitat[kfz art='<acronym title='Personenkraftwagen'>PKW</acronym>' ...]
Dadurch gibt es bei
Zitatextract(shortcode_atts( array('art' => '', ... ), $atts));
Fehler.Lösung:
Zitat[kfz art="PKW" ...]
Trotzdem würde es mich interessieren, ob es noch andere sinnvolle Lösungen gibt, da es für den Benutzer/Redakteur nicht unbedingt eindeutig ist, ob er einfach oder doppelte Anführungsstriche nutzen kann/soll.
-
Hallo,
ich benutzte seit einiger Zeit das Plugin "Text Hover", mit welchem ich auch recht zufrieden bin (bei anderen ähnlichen Plugins hatte ich häufig Probleme beim Ersetzten von Zeichenketten mit Umlauten).
Vor kurzem habe ich in meinem Theme einen neuen Shortcode 'kfz' erstellt:
[kfz art='pkw' ...]
'pkw' ist auch im "Text Hover Plugin" hinterlegt und wird somit ersetzt.
Das Problem ist, dass zuerst die Funktion add_filter vom Plugin "Text Hover" ausgeführt wird und damit der Shortcode beschädigt wird, der erst danach bearbeitet wird.
Kann man die Reihenfolge irgendwie steuern?
Das Plugin würde ich ungern umschreiben, da sonst alle Änderungen nach einem Update verloren sind. Der Shortcode wir im Theme definiert, welches eine eigene Entwicklung ist, d.h. Anpassungen wären hier am besten aufgehoben.
-
Prima, dann passt das. Ich hatte befürchtet, dass ähnlich wie beim SVN, Dateien die nicht geliefert werden, gelöscht werden.
Danke für die schnelle Hilfe!
-
Klasse, was für Reaktionszeiten! :-)
Zitatwieso lagerst du die änderungen nicht in eine user.css aus? beim update wird diese immer ignoriert und alles ist gut.
D.h. Dateien mit dem Namen "user.css", egal wo sie stehen, werden bei einem Update generell nicht gelöscht?
Zitatfalls vieles geändert werden kann/darf, ist zu überlegen ob eine css datei (im Pluginordner) angelegt wird.
da kannst du eine datei als vorgabe nehmen und eine neue durch usereingaben anlegen, bei update wird nur die vorgabe css überschriebenMein größtest Problem ist, dass ich nicht weiß, wie der Update-Prozess vorgeht.
Beispiel, ob ich die Aussage richtig verstanden habe:
style.css stammt vom Plugin bzw ist im SVN, style_user.css wird von Benutzer bzw. dem Plugin dynamisch angelegt bzw. ist nicht im SVN.
style.css wird bei einem Plugin-Update ggf. überschrieben und style_user.css bleibt erhalten?!
Dann wäre das optimal für mich und ich könnte das auf die User-Templates so übertragen.
-
Hallo,
ich bin gerade dabei mein erstes Plugin zu erstellen, welches ich auch später im offiziellen Plugin-Verzeichnis veröffentlich möchte. Hierbei hat sich die Frage ergeben, wie man am sinnvollsten Benutzeranpassungen im Bereich des Layouts realisieren kann
Erklärung:
Der Shortcode im Text wird durch einen recht umfangreichen HTML-Code ersetzt, welcher sich in einem div-Container befindet. Über eine CSS-Datei, welche sich im Plugin-Ordner befindet, wurde ein Grundlayout realisiert, z.B. dass der Rahmen des div-Containers rot ist.
Wie gibt man dem Plugin-Nutzer jetzt am besten die Möglichkeit, das Layout (z.B. Rahmen in grün) zu ändern.
a) über die CSS-Datei, die sich im Plugin-Ordner befindet, in welcher auch das Grundlayout enthalten ist
Nachteil: bei einem Plugin-Update wird diese Datei überschrieben, somit sind die Änderungen weg
b) in einer neuen CSS-Datei, die sich auch im Plugin-Ordner befindet, die aber nicht zur Grundinstallation der Plugins gehört, sonder ggf. dynamisch beim ersten Aufruf erzeugt wird
??? Was passiert mit dieser neuen Datei bei einem Plugin-Update?
c) Benutzer gibt CSS in ein HTML-Feld ein. Diese Daten werden in der DB und in einer CSS-Datei gespeichert. Beim Aufruf des Plugins wird geprüft, ob die CSS-Datei vorhanden ist (könnte beim Update gelöscht worden sein) und diese wird ggf. erstellt.
??? DB-Inhalte bleiben beim Plugin-Update erhalten?
Fände ich sehr kompliziert. Bei den CSS wäre das noch ein mögliche Weg, ich habe aber vor, dass der Benutzer auch Templates für das Plugin anpassen kann.
d) CSS im Theme-CSS speichern
Fände ich sehr unglücklich, da hier ggf. wieder das Update-Problem beim Theme vorhanden wäre bzw. die CSS eigentlich zum Plugin gehören.
Viel habe ich zu dem Thema Plugin-Update in dem Bereich nicht gefunden, daher sind das hier viele Vermutungen. Würde mich freuen, wenn diese bestätigt oder wiederlegt werden würde bzw. man mir eine Quelle nennt, wo ich entsprechende Antworten dazu finden kann (google war leider (noch) nicht sehr hilfreich).
Oder ob es einen bessere Alternative gibt, die ich noch nicht gefunden habe.