Demo

Probiere ClanSphere aus und teste daran herum. Demo


Antworten: 17
Seite [1]
ven0m


Going for pro




Herkunft: Essen
Beiträge: 406
# Thema - 24.02.2014 um 12:54 Uhr
Hallo zusammen,

ich stehe aktuell leider vor einem kleinen Problem. Und zwar würde ich gerne in den News das Userpic des Erstellers anzeigen lassen.

Hab auch schon ein bisschen rumprobiert (wenn man das so nennen kann ohne PHP-Kenntnisse) aber leider außer Fehlermeldungen nichts hin bekommen.

In der recent.php habe ich bei den SQL-Abfragen schon diesen Teil hinzugefügt:
 
1.
1. / 2. / ... 
 usr.users_picture AS news_userpic


Ob das nun richtig ist, weiß ich ehrlich gesagt nicht so wirklich ^^



Wenn ich dann in dem news_loop folgende Zeile hinzufüge:
 
1.
1. / 2. / ... 
 $cs_news[$run]['news_userpic'] = cs_user($cs_news[$run]['news_userpic']);


Erhalte ich folgende Fehlermeldung über die debug seite:
 
1.
1. / 2. / ... 
 PHP-WarningWarningMissing argument 2 for cs_user(), called in /volume1/web/csp/mods/news/recent.php on line 100 and defined in /volume1/web/csp/system/core/tools.php on line 607


Wie oben schon erwähnt habe ich von PHP leider nur sehr begrenzt bis fast keine Ahnung und würde mich riesig freuen wenn mir jemand weiterhelfen könnte.


------------------
Gruß
ven0m
Inaktiv
Tom08 ClanSphere Team

Supporter
Supporter



Herkunft: Daheim
Beiträge: 2923
# Antwort: 1 - 24.02.2014 um 13:15 Uhr
Probier's mal ohne cs_user(). cs_user() ist eine Funktion, um einen Link auf einen Nutzeraccount zu erstellen. Das brauchst du hier aber ja gar nicht, da du nur die Grafikurl haben willst (bzw. erstmal bekommst):

 
1.
1. / 2. / ... 
 $cs_news[$run]['news_userpic'] = $cs_news[$run]['news_userpic'];


// edit:
Beim erneuten drüberschauen, fällt mir jetzt auf, dass obige Zuweisung sinnfrei ist und dementsprechend ohne Nachteile komplett eingespart werden kann, da sie genauso schon definiert ist. Das kam aber von dem überflüssigen cs_user().

Grüße



------------------
Bei Problemen mit Code von mir bitte eine Private Nachricht an mich


Zuletzt editiert von Tom08 ClanSphere Team am 24.02.2014 um 15:23 Uhr (1x Editiert)
Inaktiv
|
ven0m
Thread-Ersteller


Going for pro




Herkunft: Essen
Beiträge: 406
# Antwort: 2 - 24.02.2014 um 14:38 Uhr
Hey Tom,

danke für den Tipp. Jetzt ist zumindest mal die Fehlermeldung weg

Wenn ich nicht total falsch liege, sollte ich doch jetzt mit { news:userpic } die Ausgabe erhalten, oder?

Falls ja, funktioniert das ganze scheinbar nicht ^^
Der Platzhalter wird einfach im Template ausgegeben und nicht umgewandelt.


------------------
Gruß
ven0m

Inaktiv
|
Tom08 ClanSphere Team

Supporter
Supporter



Herkunft: Daheim
Beiträge: 2923
# Antwort: 3 - 24.02.2014 um 14:51 Uhr
Nein, weil du {news:news_userpic} definiert hast :-)

Grüße


------------------
Bei Problemen mit Code von mir bitte eine Private Nachricht an mich


Inaktiv
|
ven0m
Thread-Ersteller


Going for pro




Herkunft: Essen
Beiträge: 406
# Antwort: 4 - 24.02.2014 um 15:01 Uhr
Aaahhhh... da war also der Fehler

Jetzt sehe ich zumindest schon mal den Bildnamen (aktuell nopicture.jpg).


------------------
Gruß
ven0m

Zuletzt editiert von ven0m am 24.02.2014 um 15:01 Uhr (1x Editiert)
Inaktiv
|
Tom08 ClanSphere Team

Supporter
Supporter



Herkunft: Daheim
Beiträge: 2923
# Antwort: 5 - 24.02.2014 um 15:05 Uhr
Bisher fragst du ja auch nur den Namen ab.

Dann solltest du dir vielleicht mal anschauen, wie das an anderer Stelle gelöst ist :-)
https://github.com/ClanSphere/ClanSphere/blob/master/mods/users/view.php#L59 und folgende.

Grüße


------------------
Bei Problemen mit Code von mir bitte eine Private Nachricht an mich


Zuletzt editiert von Tom08 ClanSphere Team am 24.02.2014 um 15:06 Uhr (1x Editiert)
Inaktiv
|
ven0m
Thread-Ersteller


Going for pro




Herkunft: Essen
Beiträge: 406
# Antwort: 6 - 24.02.2014 um 15:19 Uhr
mh... jetzt steh ich irgendwie auf dem Schlauch.

Habe jetzt folgendes eingefügt, anstatt den "schnippsel" von mir oben:
 
1.
2.
3.
4.
5.
6.
7.
1. / 2. / ... 
 if(empty($cs_user['users_picture'])) {
    
$data['users']['picture'] = $cs_lang['nopic'];
  } else {
    
$place 'uploads/users/' $cs_user['users_picture'];
    
$size getimagesize($cs_main['def_path'] . '/' $place);
    
$data['users']['picture'] = cs_html_img($place,$size[1],$size[0]);
  }


Ob das so richtig ist, weiß ich ehrlich gesagt nicht so ganz xD

Ich denke aber eher nicht, weil ich mal wieder eine Fehlermeldung erhalte:
 
1.
1. / 2. / ... 
 PHP-WarningWarninggetimagesize(/volume1/web/csp/uploads/users/B): failed to open streamNo such file or directory in /volume1/web/csp/mods/news/recent.php on line 106


Woher das B am ende des Pfades bei getimagesize kommt, weiß ich auch nicht o0


------------------
Gruß
ven0m

Zuletzt editiert von ven0m am 24.02.2014 um 15:20 Uhr (1x Editiert)
Inaktiv
|
Tom08 ClanSphere Team

Supporter
Supporter



Herkunft: Daheim
Beiträge: 2923
# Antwort: 7 - 24.02.2014 um 15:23 Uhr
Naja, du solltest dir das anscaheun und es so ähnlich übernehmen, nicht aber einfach copy&paste machen.

$cs_user ist in deinem Context so ja gar ncih definiert. Woher das B kommt: gute Frage.

Aber statt $cs_user['users_picture'] musst du dann schon dein $cs_news[$run]['news_userpic'] nehmen.
Und natürlich muss das ganze dann auch in einer passenden Variable landen.

Also statt $data['users']['picture'] dann z.B. $cs_news[$run]['userpic'] (damit du news_userpic auch ggf. direkt verwenden kannst) und dann {news:userpic} als Platzhalter.

Grüße


------------------
Bei Problemen mit Code von mir bitte eine Private Nachricht an mich


Inaktiv
|
ven0m
Thread-Ersteller


Going for pro




Herkunft: Essen
Beiträge: 406
# Antwort: 8 - 24.02.2014 um 15:40 Uhr
Ok danke für den Tipp

Habe jetzt zumindest wieder alle Fehlermeldungen weg bekommen. Leider wird mir aber wieder nur "picture-1.jpg" ausgegeben aber kein Bild :-/

Wahrscheinlich hab ich wieder alles falsch gemacht -.-

 
1.
2.
3.
4.
5.
6.
7.
1. / 2. / ... 
 if(empty($cs_user['userpic'])) {
    
$data['users']['userpic'] = $cs_lang['nopic'];
  } else {
    
$place 'uploads/users/' $cs_news[$run]['userpic'] = ($cs_news[$run]['userpic']);
    
$size getimagesize($cs_main['def_path'] . '/' $place);
    
$data['users']['userpic'] = cs_html_img($place,$size[1],$size[0]);
  }


------------------
Gruß
ven0m

Inaktiv
|
sgraewe ClanSphere Team

Supporter
Supporter




Beiträge: 6116
# Antwort: 9 - 24.02.2014 um 15:46 Uhr
immer noch das gleiche problem, du musst das schon nen wenig an die news ausgabe anpassen.

$cs_user['userpic'], gibt es nicht, siehe tom.
$data['users']['userpic'], wird auch nicht gehen, musst das gleiche wie bei den news nehmen, kann gerade nicht nachgucken


Inaktiv
|
Tom08 ClanSphere Team

Supporter
Supporter



Herkunft: Daheim
Beiträge: 2923
# Antwort: 10 - 24.02.2014 um 15:50 Uhr
eql hat eigentlich schon alles gesagt.

 
1.
2.
3.
4.
5.
6.
7.
1. / 2. / ... 
 if(empty($cs_news[$run]['news_userpic'])) {
    
$cs_news[$run]['userpic'] = $cs_lang['nopic'];
  } else {
    
$place 'uploads/users/' $cs_news[$run]['news_userpic'];
    
$size getimagesize($cs_main['def_path'] . '/' $place);
    
$cs_news[$run]['userpic'] = cs_html_img($place,$size[1],$size[0]);
  }


Und nutze als Platzhalter {news:userpic}.

Nochmal ausführlich, was hier passiert:

Z. 1: Prüfen, ob ein Bild definiert ist. Wenn das nicht der Fall ist, packen wir in für die aktuelle News unter dem Key "userpic" den String aus der Lang, das kein Bild definiert ist. Ansonsten setzen wir in $place den Pfad zusammen. Der setzt sich zusammen aus dem Pfad uploads/users/ und dem entsprecehnden Bild. Für diesen Pfad bestimmen wir in der nächsten Zeile die Größe mit getimagesize(). Was getimagesize genau macht, kannst du in der php-Dokumentation nachlesen (http://php.net/manual/de/function.getimagesize.php).

Danach wird dann der HTML-Code zum einbinden der Grafik generiert mihilfe der Funktion cs_html_img() und das in die oben beschrieben Variable gepackt, sodass man das mit {news:userpic} im Loop aufrufen kann.

Grüße


------------------
Bei Problemen mit Code von mir bitte eine Private Nachricht an mich


Zuletzt editiert von Tom08 ClanSphere Team am 24.02.2014 um 15:53 Uhr (1x Editiert)
Inaktiv
|
ven0m
Thread-Ersteller


Going for pro




Herkunft: Essen
Beiträge: 406
# Antwort: 11 - 24.02.2014 um 15:52 Uhr
Ok, jetzt hat es mehr als nur "klick" gemacht. -.-

Hab's jetzt geschafft dass das Bild ausgegeben wird. Oh man... irgendwie peinlich das ich so was einfaches nicht selbst auf die reihe kriege ^^


Danke für eure Hilfe!

Btw. hier das "fertige" ergebnis:
 
1.
2.
3.
4.
5.
6.
7.
1. / 2. / ... 
 if(empty($cs_news[$run]['userpic'])) {
    
$data['users']['userpic'] = $cs_lang['nopic'];
  } else {
    
$place 'uploads/users/' $cs_news[$run]['userpic'] = ($cs_news[$run]['userpic']);
    
$size getimagesize($cs_main['def_path'] . '/' $place);
    
$cs_news[$run]['userpic'] = cs_html_img($place,$size[1],$size[0]);
  }


Das habe ich nach:
 
1.
1. / 2. / ... 
 $cs_news[$run]['users_link'] = cs_user($cs_news[$run]['users_id'],$cs_news[$run]['users_nick'], $cs_news[$run]['users_active'], $cs_news[$run]['users_delete']);

in der recent.php eingefügt.


------------------
Gruß
ven0m

Inaktiv
|
Tom08 ClanSphere Team

Supporter
Supporter



Herkunft: Daheim
Beiträge: 2923
# Antwort: 12 - 24.02.2014 um 15:54 Uhr
Vergleich das bitte nochmal mit meinem Code oben.

Bei dir wird folgendes nicht funktionieren:

1. Im Falle, dass kein Bild definiert ist, bekommst du eine Fehlermeldung, dass ein entsprechender Eintrag im Array nicht existiert.
2. In Z. 4 deine Zuweisung ist eigentlich so nicht gültig, aber auch überhaupt nicht notwendig (s.o.)

Grüße


------------------
Bei Problemen mit Code von mir bitte eine Private Nachricht an mich


Inaktiv
|
ven0m
Thread-Ersteller


Going for pro




Herkunft: Essen
Beiträge: 406
# Antwort: 13 - 24.02.2014 um 16:05 Uhr
Ok, hab das ganze nochmal überarbeitet

Danke Tom.
Hatte deinen Post gar nicht gesehen, als ich meinen verfasst hatte.

Ich bin mir grad nicht 100% sicher ob das nun so korrekt ist, es funktioniert allerdings (bis jetzt).

In der reihe 45 habe ich folgendes eingefügt:
 
1.
1. / 2. / ... 
 usr.users_picture AS userpic


Anschließend habe ich nach dieser Zeile:
 
1.
1. / 2. / ... 
 $cs_news[$run]['users_link'] = cs_user($cs_news[$run]['users_id'],$cs_news[$run]['users_nick'], $cs_news[$run]['users_active'], $cs_news[$run]['users_delete']);


folgendes eingefügt:
 
1.
2.
3.
4.
5.
6.
7.
1. / 2. / ... 
 if(empty($cs_news[$run]['userpic'])) {
    
$cs_news[$run]['userpic'] = $cs_lang['nopic'];
  } else {
    
$place 'uploads/users/' $cs_news[$run]['userpic'];
    
$size getimagesize($cs_main['def_path'] . '/' $place);
    
$cs_news[$run]['userpic'] = cs_html_img($place,$size[1],$size[0]);
  }


Und in der recent.tpl habe ich dann den Platzhalter
 
1.
1. / 2. / ... 
 {news:userpic}

eingesetzt

Ich hoffe das es so richtig ist. Wie gesagt, bekomme aktuell keine Fehlermeldung.


------------------
Gruß
ven0m

Zuletzt editiert von ven0m am 24.02.2014 um 16:06 Uhr (1x Editiert)
Inaktiv
|
Tom08 ClanSphere Team

Supporter
Supporter



Herkunft: Daheim
Beiträge: 2923
# Antwort: 14 - 24.02.2014 um 16:06 Uhr
Das sieht doch gut aus und sollte so auch funktionieren :-)

Grüße


------------------
Bei Problemen mit Code von mir bitte eine Private Nachricht an mich


Inaktiv
|
ven0m
Thread-Ersteller


Going for pro




Herkunft: Essen
Beiträge: 406
# Antwort: 15 - 24.02.2014 um 16:09 Uhr
Hey endlich^^

Eine kleine Sache hätte ich evtl. noch bei der ich grad am überlegen bin, wie ich es lösen kann. Wie kann ich die Größe des Bildes verändern?
Hab mir die Doku durchgelesen zum Thema getimagesize. Leider konnte ich da, bis jetzt, nicht heraus finden wie ich das Bild in der Größe verändern kann.


------------------
Gruß
ven0m

Zuletzt editiert von ven0m am 24.02.2014 um 16:10 Uhr (1x Editiert)
Inaktiv
|
Tom08 ClanSphere Team

Supporter
Supporter



Herkunft: Daheim
Beiträge: 2923
# Antwort: 16 - 24.02.2014 um 16:12 Uhr
getimagesize() liefert dir die Größe zurück, die das entsprechende Bild hat.
Wenn du die Größe ändern willst, kannst du das mit cs_html_img machen.
Doku dazu gibt's hier: cs_html_img() in Clansphere API

Grüße


------------------
Bei Problemen mit Code von mir bitte eine Private Nachricht an mich


Inaktiv
|
ven0m
Thread-Ersteller


Going for pro




Herkunft: Essen
Beiträge: 406
# Antwort: 17 - 24.02.2014 um 16:16 Uhr
Ich danke dir Tom

Hab es geschafft, war ja doch recht simpel


------------------
Gruß
ven0m

Inaktiv
|
Antworten: 17
Seite [1]


Sie müssen sich registrieren, um zu antworten.