Grundkurs Plugins schreiben

  • Seite 5 von 11
10.03.2014 16:19
avatar  Olaf
#61 RE: Grundkurs Plugins schreiben - Grundlagen
Ol
Mitglied

Zitat von Christian im Beitrag #60
ja dann stimmt bei dir was nicht und die plugin.js wird nicht richtig geladen

Woran kann es denn liegen,daß das Plugin-Javascript nicht "richtig" geladen wird?
Alle Config Variablen im Plugin Script werden ja richtig verarbeitet...
Und die werden ja auch vom plugin.js gesteuert.Daher bin ich der Meinung,daß das plugin.js schon,ich will mal sagen vollständig,geladen ist.

Gruß
Olaf

__________________________

http://138600.homepagemodules.de/

 Antworten

 Beitrag melden
10.03.2014 16:28 (zuletzt bearbeitet: 10.03.2014 16:30)
#62 RE: Grundkurs Plugins schreiben - Grundlagen
avatar
Techniker

also in deinem Testforum 138600 geht es doch einwandfrei

1
2
3
 

xobor.plugin('countzaehler').getDeepList({target_type: 3, limit:'all'},function(a){alert(Object.keys(a).length)})
 
 




edit: bei deinem anderen Forum ist sehr viel am Template verändert.
vergleiche mal bitte deine Version der "Oberen Leiste" mit dem aktuellen Original


 Antworten

 Beitrag melden
10.03.2014 16:38
avatar  Olaf
#63 RE: Grundkurs Plugins schreiben - Grundlagen
Ol
Mitglied

Wo setzt Du das denn ein?
Die Konsole sagt:
Fehler in Plugin: 138600_plugin_countzaehler_count_haupt Fehlermeldung: ReferenceError: xobor is not defined

Gruß
Olaf

__________________________

http://138600.homepagemodules.de/

 Antworten

 Beitrag melden
10.03.2014 16:48
avatar  Olaf
#64 RE: Grundkurs Plugins schreiben - Grundlagen
Ol
Mitglied

Zitat von Christian im Beitrag #62
edit: bei deinem anderen Forum ist sehr viel am Template verändert.
vergleiche mal bitte deine Version der "Oberen Leiste" mit dem aktuellen Original


In meinem Testforum ist die Template unverändert und dort mache ich auch die Tests.
Wie hast Du denn die Funktion in meinem Testforum getestet,bzw.wo hast Du das eingesetzt?

Gruß
Olaf

__________________________

http://138600.homepagemodules.de/

 Antworten

 Beitrag melden
10.03.2014 17:16
#65 RE: Grundkurs Plugins schreiben - Grundlagen
avatar
Techniker



eventuell hilft das dir weiter.

Also in deinem Testforum funktioniert die API korrekt


 Antworten

 Beitrag melden
10.03.2014 17:40 (zuletzt bearbeitet: 10.03.2014 17:42)
avatar  Olaf
#66 RE: Grundkurs Plugins schreiben - Grundlagen
Ol
Mitglied

So ganz ist mir diese Funktion nicht logisch.
Ich verstehe das so:
Es wird das Plugin mit der ID aufgerufen,Parameter übergeben(target_type: 3, limit:'all') und mit der funktion(a) die Ausgabe in der Variable a gestartet.
Ich denke,das es im script so gehen müsste:

1
2
3
4
 
<script type="text/javascript">
xobor.plugin('countzaehler').getDeepList({target_type: 3, limit:'all'},function(a){Object.keys(a).length})
document.write(a);
</script>
 



Gruß
Olaf

__________________________

http://138600.homepagemodules.de/

 Antworten

 Beitrag melden
10.03.2014 17:51
avatar  Ingmar
#67 RE: Grundkurs Plugins schreiben - Grundlagen
avatar
Technik

Zitat von Olaf im Beitrag #66
Ich verstehe das so:
Es wird das Plugin mit der ID aufgerufen,Parameter übergeben(target_type: 3, limit:'all') und mit der funktion(a) die Ausgabe in der Variable a gestartet.


Fast richtig. Der dritte Parameter (in diesem Fall "function(a){...}") ist die so genannte "Success Function".
Diese wird aufgerufen, wenn der "getDeepList"-Befehl erfolgreich abgeschlossen wurde und erhält als Übergabeparameter (a) das Ergebniss der getDeepList-Funktion.

Innerhalb der Success-Function kannst du dann mit a machen was du willlst. Christian gibt das eben Beispielhaft in die Console aus. Du willst vermutlich eher etwas sinnvolleres damit tun.

Dein Ansatz - Object.keys(a).length} - produziert allerdings keine Ausgabe.

Viele Grüße,
Ingmar


 Technik · Homepagemodules.de · Miranus GmbH

 Antworten

 Beitrag melden
10.03.2014 17:58 (zuletzt bearbeitet: 10.03.2014 17:58)
avatar  Olaf
#68 RE: Grundkurs Plugins schreiben - Grundlagen
Ol
Mitglied

Ich danke Euch beiden erstmal für die Geduld mit mir.
Ich werde es nochmal probieren und wenn ich noch Fragen habe,dann belästige ich Euch nochmal.l

Gruß
Olaf

__________________________

http://138600.homepagemodules.de/

 Antworten

 Beitrag melden
10.03.2014 19:17 (zuletzt bearbeitet: 10.03.2014 19:19)
#69 RE: Grundkurs Plugins schreiben - Grundlagen
avatar
Techniker

Ahhh jetzt versteh ich erstmal wo dein Problem liegt.

Erst einmal das ganze ohne Variablen, sondern was wie die Parameter generell heißen.

METHODE = die jeweilige Methode, welche eine bestimmte Funktion bereitstellt
PARAMETER-OBJECT (kann ein oder mehrere Parameter haben … siehe Doc) = die Parameter die deine Aktion beschreiben (sozu sagen dem Server sagen was du willst)

CALLBACK-FNC/SUCCESS-FUNC = viele Methoden haben eine sogenannte Callback-Function. Diese Funktion wird ausgeführt, sobald der Server die Anfrage zurückgibt

1
 
xobor.plugin('PLUGINID').METHODE(PARAMETER-OBJECT, CALLBACK-FNC/SUCCESS-FUNC);
 



So und noch noch etwas mit Kommentaren .... bitte alles komplett lesen!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 

var blubb = false;
 
xobor.plugin('countzaehler').getDeepList({target_type: 3, limit:'all'},function(result){
// gibt in der Console aus was sich in result befindet
console.log(result);
// wir zählen die Keys ... also Einträge von result
alert(Object.keys(result).length)
// ganz normales js ... wir speichern den Inhalt von result in blubb
blubb = result;
// oder auch nur einen Teil
var bli = result[key];

// das ist so extrem böse, dass hier eigentlich der PC anfangen müsste zu brennen :D
// der Teil wird im schlimmsten Fall erst ausgeführt, wenn die Seite schon komplett geladen wurde
// demzufolge ist die komplette dann Seite weiß => alles kaputt :O
// deshalb ist diese Methode nicht dafür geeignet etwas in den DOM zu schreiben!
// Tip document.write aus dem Wortschatz entfernen ;) ... ich habe in den letzten Jahren nicht einmal diese
// Methode verwendet und mir fällt (bis auf alte Scripte) kein wirklicher Grund ein diese zu nutzen!
// Stichwort Jquery (was hier verfügbar ist) oder andere libs
document.write(blubb);

});
// wir geben blubb in der Console aus. Ausgegeben wird "false"
// wieso? weil die Function oben Asynchron ist. Sprich der Browser führt diese Zeile schon aus
// obwohl er noch keine Antwort vom Server bekam und somit die obere function noch nicht ausgeführt hat
// blubb haben wir zum Anfang mit false initalisiert ... also wird hier false bei rauskommen!
console.log(blubb);
 
// das ist so böse
// wir schreiben hier ein false in den DOM oO
// da wie oben beschrieben, blubb mit extrem hoher Wahrscheinlichkeit noch false ist, da der server bis hier noch nicht
// geantwortet hat
document.write(blubb);
 
 



So ein Aufruf ist im Hintergrund halt ein Ajax-Call und sowas ist halt (wie der Name schon sagt => Asynchronous JavaScript and XML) Asynchron zum Seitenaufbau! Sprich Logiken die sowas nutzen, müssen sehr gut durchdacht werden. Man macht bei sowas dann, sozusagen ein hangeln von function zu function.

Hier mal ein simples Beispiel wie ich mir erst die IDs aller verfügbaren user eines forums hole und dann dazu deren Userdaten!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 

xobor.plugin('countzaehler').getDeepList({target_type: 3, limit:'all'},getUserlist);
 
function getUserlist(result) {
var userids = [];
// eine foreach mit Hilfe von Jquery da result ein object ist und KEIN Array!
$.each(result, function(key, value) {
userids.push(key);
});

// super wir haben nun alle ids der user aus dem Forum ... nun wollen wir deren userinfos haben
xobor.plugin("countzaehler").getDeep({target_id: userids, target_type: "3"},getUserinformation);
}
 
function getUserinformation(result) {
// yaaaay und hier haben wir die meisten userinfos zu den jeweiligen ids! :D
// key = userid value = daten-object
console.log(result);
}
 

 



ps. natürlich gibt dir die Plugin-Api auch nur die gewünschten Daten zurück, wenn du als user die nötigen Rechte hast diese Daten überhaupt zu sehen.


 Antworten

 Beitrag melden
10.03.2014 21:19
avatar  Olaf
#70 RE: Grundkurs Plugins schreiben - Grundlagen
Ol
Mitglied

Uiiii,da hast Du mir jetzt aber eine Menge Info um die Ohren gehauen.
Mit "document.write" wollte ich auch nur sagen,daß das Ergebnis ausgeben werden sollte.Hät auch alert() sein können.

Ich habe Dein Beispiel mal in ein Plugin gesetzt,wobei mir die Konsole wieder den bekannten Fehler ausgibt.Setze ich den Code in der Kopfzeile,dann funktioniert die Ausgabe in der Konsole einwandfrei.Wieso ist das so?Muß der Code im Plugineditor anders geschrieben werden?

Gruß
Olaf

__________________________

http://138600.homepagemodules.de/

 Antworten

 Beitrag melden
11.03.2014 10:39 (zuletzt bearbeitet: 11.03.2014 10:40)
#71 RE: Grundkurs Plugins schreiben - Grundlagen
avatar
Techniker

ich sehe gerade, du hast ein Element "Obere Leiste Header" angelegt .... bedeutet, du bindest deinen Code noch VOR der Doctype-Definition ein, was natürlich falsch ist.

In der oberen Leiste Header sollte man natürlich maximal mit Template-Methoden arbeiten, um z.B. das laden des Templates zu verhindern oder dergleichen. Eine Ausgabe sollte dort nie erfolgen.


 Antworten

 Beitrag melden
11.03.2014 18:34
avatar  Olaf
#72 RE: Grundkurs Plugins schreiben - Grundlagen
Ol
Mitglied

Nun habe ich Dein Beispielscript nach den "<!DOCTYPE>" im Pluginelement "Obere Leiste Footer" eingesetzt und dort meckert auch meine Konsole,das die "getUserlist" nicht definiert ist.
Ich glaube,meine Konsole mag mich nicht...

Gruß
Olaf

__________________________

http://138600.homepagemodules.de/

 Antworten

 Beitrag melden
12.03.2014 09:46 (zuletzt bearbeitet: 12.03.2014 09:59)
#73 RE: Grundkurs Plugins schreiben - Grundlagen
avatar
Techniker

edit:

also eigentlich functioniert alles ... im FF (natürlich mit FireBug) und dem Chrome


 Antworten

 Beitrag melden
12.03.2014 19:53
avatar  Olaf
#74 RE: Grundkurs Plugins schreiben - Grundlagen
Ol
Mitglied

Zitat von Christian im Beitrag #73
edit:

also eigentlich functioniert alles ... im FF (natürlich mit FireBug) und dem Chrome


...eigentlich...

So sieht es bei mir aus.

Bild "Kopfzeile" zeigt die korrekte Ausgabe,wo ich Deinen Code in die "Kopfzeile" eingesetzt habe.

Gruß
Olaf

__________________________

http://138600.homepagemodules.de/
Bildanhänge
imagepreview

1 Plugin.jpg

download

imagepreview

2 Editor.jpg

download

imagepreview

3 Firebug.jpg

download

imagepreview

4 Kopfzeile.jpg

download


Aufgrund eingeschränkter Benutzerrechte werden nur die Namen und (falls vorhanden) Vorschau-Grafiken der Dateianhänge angezeigt Jetzt anmelden!

 Antworten

 Beitrag melden
12.03.2014 22:38
#75 RE: Grundkurs Plugins schreiben - Grundlagen
avatar
Techniker

ändere mal die Reihenfolge

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 

function getUserinformation(result) {
// yaaaay und hier haben wir die meisten userinfos zu den jeweiligen ids! :D
// key = userid value = daten-object
console.log(result);
}


function getUserlist(result) {
var userids = [];
// eine foreach mit Hilfe von Jquery da result ein object ist und KEIN Array!
$.each(result, function(key, value) {
userids.push(key);
});

// super wir haben nun alle ids der user aus dem Forum ... nun wollen wir deren userinfos haben
xobor.plugin("countzaehler").getDeep({target_id: userids, target_type: "3"},getUserinformation);
}


 

xobor.plugin('countzaehler').getDeepList({target_type: 3, limit:'all'},getUserlist);

 
 


 Antworten

 Beitrag melden
Bereits Mitglied?
Jetzt anmelden!
Mitglied werden?
Jetzt registrieren!