News - Features - Downloads - Forum - Team - Support - Switch View: Screen
Login - Registrierung - Passwort vergessen

Antworten: 37
Seite [1] 2 >
Sheppard


Rock the board




Beiträge: 48
# Thema - 16.09.2010 um 18:43 Uhr
Hallo ihr lieben,

ich habe eben eine Funktion geschrieben für unsere Facebook Freunde. Jeder der auf Facebook aktiv ist, der kennt ja diesen schönen "Gefällt mir" Button. Den kann man auf jeder beliebigen Seite einbauen und so evtl noch mehr Besucher generieren...

 
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.
1. / 2. / ... 
 
function cs_html_fb($url$faces 0$font 'verdana'$width 450$action 0$layout 0){
  
$fb_vars '';
  
$fb_vars .= $faces == '' ' show_faces="false"';
  
$fb_vars .= $width == 450 '' ' width="'.$width.'"';
  
$fb_vars .= $action == '' ' action="recommend"';
  
$fb_vars .= $layout == '' ' layout="'.$layout.'"';
  
  
$fb_string '<div id="fb-root"><fb:like href="'.$url.'" '.$fb_vars.'></fb:like></div>';
  
$var "<script>
              window.fbAsyncInit = function() {
                FB.init({appId: 'your app id', status: true, cookie: true,
                xfbml: true});
              };
              (function() {
              var e = document.createElement('script'); e.async = true;
              e.src = document.location.protocol +
              '//connect.facebook.net/de_DE/all.js';
              document.getElementById('fb-root').appendChild(e);
              }());
            </script>"
;
            
  return 
$fb_string.$var;
}





Diese Funktion haut ihr einfach in die /system/output/xhtml_10.php einfach ganz unten anhängen....

Hier mal ein Anwendungsbeispiel:

Die Funktion oben habt ihr wie beschrieben eingepflegt und nun wollt ihr z.B. dass alle Newsbeiträge so einen Button bekommen:

Öffnet /mods/news/view.php

sucht nach z.B.
 
1.
1. / 2. / ... 
 $data['news']['comments_count'] = cs_sql_count(__FILE__,'comments',$com_where);


fügt da drunter ein:
 
1.
1. / 2. / ... 
 $data['news']['facebook'] = cs_html_fb(urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']));


alle die Clansphere 2010 final haben können auch folgendes nutzen:

 
1.
1. / 2. / ... 
 $data['news']['facebook'] = cs_html_fb(rawurlencode(cs_url_self(101)));



Jetzt nur noch an passender Stelle in eurem Theme einbauen. In diesem Beispiel wäre es die:

/themes/base/news/view.tpl

Einfach {news:facebook} an die für euch passende Stelle schreiben und das wars...


Ich hoffe einige von euch können es gebrauchen

Greetz euer Shepp


Zuletzt editiert von Sheppard am 21.09.2010 um 20:39 Uhr (6x Editiert)
Inaktiv
duRiel ClanSphere Team


Weltmeister




Herkunft: Cambridge
Beiträge: 7300
# Antwort: 1 - 16.09.2010 um 20:12 Uhr
nice!


Inaktiv
|
dieSeuche


Beginner




Beiträge: 1
# Antwort: 2 - 16.09.2010 um 20:44 Uhr
N1


Inaktiv
|
Swifter


Specialist





Beiträge: 1841
# Antwort: 3 - 16.09.2010 um 22:00 Uhr
ganz am ende fehlt eine Klammer

hier: +-
function cs_html_fb($url, $faces = 0, $font = 'verdana', $width = 450, $action = 0, $layout = 0){
$fb_vars = '';
$fb_vars .= $faces == 1 ? '' : ' show_faces="false"';
$fb_vars .= $width == 450 ? '' : 'width="'.$width.'"';
$fb_vars .= $action == 0 ? '' : ' action="recommend"';
$fb_vars .= $layout == 0 ? '' : ' layout="'.$layout.'"';

$fb_string = '<div id="fb-root"><fb:like href="'.$url.$fb_vars.'></fb:like></div>';
$var = "<script>
window.fbAsyncInit = function() {
FB.init({appId: 'your app id', status: true, cookie: true,
xfbml: true&#125;
};
(function() {
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol +
'//connect.facebook.net/de_DE/all.js';
document.getElementById('fb-root').appendChild(e);
&#125));
</script>";

return $fb_string.$var;


}


wie is das, wenn ich den button schon in der recent haben möchte... wo pack ichs dann hin? hab schon gebastelt, aber er schmeisst mir nur den platzhalter raus...

Link: www.orbiamortis.com


------------------
Greetz Swifter


Wenn du dich klein, nutzlos, beleidigt und depressiv fühlst, denke immer daran: Du warst einmal das schnellste und erfolgreichste Spermium deiner Gruppe!


Zuletzt editiert von Swifter am 16.09.2010 um 22:20 Uhr (1x Editiert)
Inaktiv
|
Sheppard
Thread-Ersteller


Rock the board




Beiträge: 48
# Antwort: 4 - 16.09.2010 um 23:19 Uhr
Sry für die fehlende Klammer habe ich mal hinzugefügt

recent dann bitte die variable in der /mods/news/recent.php setzen:

 
1.
1. / 2. / ... 
  $data['news']['facebook'] = cs_html_fb(urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']));




Zuletzt editiert von Sheppard am 16.09.2010 um 23:20 Uhr (1x Editiert)
Inaktiv
|
Swifter


Specialist





Beiträge: 1841
# Antwort: 5 - 17.09.2010 um 00:21 Uhr
$data['news']['facebook'] = cs_html_fb(urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']));


habe ich so eingefügt, aber er wills nich übernehmen... hiermal die recent.php:

Dateianhänge:
php recent.php (5.85 KiB - 56 mal heruntergeladen )


------------------
Greetz Swifter


Wenn du dich klein, nutzlos, beleidigt und depressiv fühlst, denke immer daran: Du warst einmal das schnellste und erfolgreichste Spermium deiner Gruppe!


Inaktiv
|
astmaih


Rock the board




Beiträge: 95
# Antwort: 6 - 17.09.2010 um 01:19 Uhr
Der Eintrag in der recent.php muss an vorletzter Stelle sein, ansonsten wird es wieder überschrieben, es muss also so aussehen:

 
1.
2.
3.
4.
5.
1. / 2. / ... 
 
$data
['news'] = $cs_news;
$data['news']['facebook'] = cs_html_fb(urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']));
echo 
cs_subtemplate(__FILE__$data'news''recent');


Inaktiv
|
Swifter


Specialist





Beiträge: 1841
# Antwort: 7 - 17.09.2010 um 01:35 Uhr
hat leider auch keinen Erfolg erzielt... noch ne Idee?


------------------
Greetz Swifter


Wenn du dich klein, nutzlos, beleidigt und depressiv fühlst, denke immer daran: Du warst einmal das schnellste und erfolgreichste Spermium deiner Gruppe!


Inaktiv
|
astmaih


Rock the board




Beiträge: 95
# Antwort: 8 - 17.09.2010 um 01:44 Uhr
hmm, das sollte eigentlich klappen, wo hast du den Platzhalter denn in der recent.tpl platziert?


Inaktiv
|
Swifter


Specialist





Beiträge: 1841
# Antwort: 9 - 17.09.2010 um 01:47 Uhr
schau selbst...
Dateianhänge:
tpl recent.tpl (1.71 KiB - 55 mal heruntergeladen )


------------------
Greetz Swifter


Wenn du dich klein, nutzlos, beleidigt und depressiv fühlst, denke immer daran: Du warst einmal das schnellste und erfolgreichste Spermium deiner Gruppe!


Inaktiv
|
duRiel ClanSphere Team


Weltmeister




Herkunft: Cambridge
Beiträge: 7300
# Antwort: 10 - 17.09.2010 um 01:48 Uhr
ne, so kann das nicht klappen.

wenn man das in der recent haben will, muss das ein button für jede einzelne news sein und sich deshalb innerhalb des loop-arrays befinden.
man muss das also innerhalb der schleife (also for oder foreach oder was das ist) mit $cs_news[$run] = cs_html_fb machen.


Inaktiv
|
Swifter


Specialist





Beiträge: 1841
# Antwort: 11 - 17.09.2010 um 01:57 Uhr
hmm also soviel ahnung hab ich leider nich von php... sry...
könntest du mir die Zeile schreiben? wäre echt super...


------------------
Greetz Swifter


Wenn du dich klein, nutzlos, beleidigt und depressiv fühlst, denke immer daran: Du warst einmal das schnellste und erfolgreichste Spermium deiner Gruppe!


Inaktiv
|
hajo ClanSphere Team


VIP - Poster




Herkunft: Barsbüttel
Beiträge: 9411
# Antwort: 12 - 17.09.2010 um 01:58 Uhr
betreffend clansphere 2010.0 final und neuer:

siehe http://trac.csphere.eu/csp/browser/trunk/system/core/tools.php#L568

die funktion cs_url_self hat 3 paramter: full, ignore_post, decode

full = 0 für endteil der url, 1 für die volle url

ignore_post = 0 um false als resultat zu liefern wenn $_ POST inhalte hat, 1 um dies zu übergehen

decode = 0 um html escapedte ausgaben zu erhalten, 1 um alles im reinformat geliefert zu bekommen, besser für (raw)urlencode

dementsprechend sollte cs_url_self in diesem fall so aufgerufen werden:

 
1.
1. / 2. / ... 
 urlencode(cs_url_self(111))


es sei angemerkt, dass cs_url_self gegenüber dem anderen diverse vorteile hat:

1. es ist der funktion egal ob ajax an oder aus ist, sowie ob mod_rewrite an oder aus sind. die funktion bricht dies optimal und passend für einen überall herunter

2. die url ist in jedem fall "stabil", zeigt also wirklich auf die aktuelle quelle und kann daher auch z.b. als nav-datei verwendet werden wie bei ajax/navbookmark oder auch ajax/navaddthis der fall die bei csp als beispiele beiliegen

3. die erzeugte url ist zu 99,99% frei von ajax. falls ajax also mal deaktiviert ist funktionieren die links also noch immer. es ist in jedem fall zu bevorzugen aus technischer sicht bookmarks wie diese ohne ajax zu verwenden


------------------
ClanSphere - professional clan care starts here

Zuletzt editiert von hajo ClanSphere Team am 17.09.2010 um 02:01 Uhr (1x Editiert)
Inaktiv
|
Swifter


Specialist





Beiträge: 1841
# Antwort: 13 - 17.09.2010 um 02:09 Uhr
nutze bei betreffender seite noch 2009.0.3.1 ...
und mir is grad aufgefallen, das ich zwar auf Gefällt mir klicken kann, aber bei erneutem aufrufen der news das ganze wieder zurückgesetzt wurde... bei FB selbst wird mir auch nichts angezeigt nach dem klick darauf...

Edit: hat etwas gedauert aber nun zeigt FB es auch an


------------------
Greetz Swifter


Wenn du dich klein, nutzlos, beleidigt und depressiv fühlst, denke immer daran: Du warst einmal das schnellste und erfolgreichste Spermium deiner Gruppe!


Zuletzt editiert von Swifter am 17.09.2010 um 04:20 Uhr (1x Editiert)
Inaktiv
|
duRiel ClanSphere Team


Weltmeister




Herkunft: Cambridge
Beiträge: 7300
# Antwort: 14 - 17.09.2010 um 02:13 Uhr
ich kenne mich mit der facebook api nicht aus, deshalb bin ich mir nicht sicher, wie es umzusetzen ist. ich denke mal, dass die url, die zu übergeben ist, die des speziellen eintrags sein muss, und nicht, wie ihr es versucht habt, einfach bei jeder news die aktuelle url, also news recent.

mein tipp wäre also:
 
1.
1. / 2. / ... 
 $cs_news[$run]['facebook'] = cs_html_fb(cs_url('news''view''id=' $cs_news[$run]['news_id']));


Inaktiv
|
Swifter


Specialist





Beiträge: 1841
# Antwort: 15 - 17.09.2010 um 04:18 Uhr
17.09.2010 um 02:13 Uhr - duRiel:
ich kenne mich mit der facebook api nicht aus, deshalb bin ich mir nicht sicher, wie es umzusetzen ist. ich denke mal, dass die url, die zu übergeben ist, die des speziellen eintrags sein muss, und nicht, wie ihr es versucht habt, einfach bei jeder news die aktuelle url, also news recent.

mein tipp wäre also:
 
1.
1. / 2. / ... 
 $cs_news[$run]['facebook'] = cs_html_fb(cs_url('news''view''id=' $cs_news[$run]['news_id']));


Klappt leider auch nicht... und bitte meinen Vorpost beachten


------------------
Greetz Swifter


Wenn du dich klein, nutzlos, beleidigt und depressiv fühlst, denke immer daran: Du warst einmal das schnellste und erfolgreichste Spermium deiner Gruppe!


Inaktiv
|
astmaih


Rock the board




Beiträge: 95
# Antwort: 16 - 17.09.2010 um 09:54 Uhr
hmm, also der Befehl von duriel ist wohl der richtige. damit kann man (wie er schon sagt) jede einzelne news als "gefällt mir" angeben will. Aber dieser Befehl muss wieder in die for Schleife, also an die Stelle, wo du den alten Befehl eingefügt hast. Dann sollte alles richtig sein


Inaktiv
|
Sheppard
Thread-Ersteller


Rock the board




Beiträge: 48
# Antwort: 17 - 17.09.2010 um 11:15 Uhr
GAAAAAAAAANZ WICHTIG!!!!!

So ein Facebookbutton darf nur einmal pro Seite vorkommen!!! Nicht für jede News in der recent!!! Das geht natürlich auch aber dann muss man dafür sorgen, dass immer eine andere, richtige URL übergeben wird (siehe duriel) und die Funktion cs_html_fb() muss geändert werden. Dort wird nämlich mit einem div-Layer und einer css ID gearbeitet und die Javascript API von FB wird dann immer wieder reingeladen... das ist sinnfrei und wird in einigen Browsers sicher Probleme verursachen


Also wenn ihr das in schleifen macht dann etwa so:

 
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.
1. / 2. / ... 
 
function cs_html_fb($url$faces 0,$layerid $id$font 'verdana'$width 450$action 0$layout 0){
  
$fb_vars '';
  
$fb_vars .= $faces == '' ' show_faces="false"';
  
$fb_vars .= $width == 450 '' 'width="'.$width.'"';
  
$fb_vars .= $action == '' ' action="recommend"';
  
$fb_vars .= $layout == '' ' layout="'.$layout.'"';
  
  
$fb_string '<div id="fb-root.'$id'."><fb:like href="'.$url.$fb_vars.'></fb:like></div>';
  
$var "<script>
              window.fbAsyncInit = function() {
                FB.init({appId: 'your app id', status: true, cookie: true,
                xfbml: true});
              };
              (function() {
              var e = document.createElement('script'); e.async = true;
              e.src = document.location.protocol +
              '//connect.facebook.net/de_DE/all.js';
              document.getElementById('fb-root"
.$id."').appendChild(e);
              }());
            </script>"
;
            
  return 
$fb_string.$var;
}


in der Schleife dann:

 
1.
1. / 2. / ... 
 $cs_news[$run]['facebook'] = cs_html_fb(cs_url('news''view''id=' $cs_news[$run]['news_id']),$cs_news[$run]['news_id'] );


und dann in der tpl innerhalb von {loop:...} mit {...:facebook} arbeiten...

Natürlich sollte man sich dabei überlegen ob es sinn macht immer wieder die Javascriptapi von FB für jeden Button zu laden. Die sollte man dann besser auslagern und "document.getElementById('fb-root".$id."')" für eine CSS-Klasse umwandeln...

Keine Ahnung im Moment wie das geht


Wer nicht klarkommt schreibt mich einfach im ICQ an 281450219 dann helfe ich gerne...


Inaktiv
|
Swifter


Specialist





Beiträge: 1841
# Antwort: 18 - 17.09.2010 um 12:18 Uhr
Ok hast nich ganz unrecht das mit der recent... ich lass es dann dort mal weg...
2 Fragen bleiben dennoch:

1. Warum wird bei erneutem Aufruf der jeweiligen News der Klick quasi "zurückgesetzt", so das dort immer wieder steht: Gefällt mir...?

2. Bei Facebook steht nun: Usergefällt ..:: OrbiaMortis MultiGaming since 2006 ::.. und nicht User gefällt News soundso auf www.orbiamortis.com? War das nicht eigentlich Sinn der Sache? So steht ja jedesmal, wenn jemand auf Gefällt mir klickt, das oben genannte und macht wenig Sinn, oder?


------------------
Greetz Swifter


Wenn du dich klein, nutzlos, beleidigt und depressiv fühlst, denke immer daran: Du warst einmal das schnellste und erfolgreichste Spermium deiner Gruppe!


Inaktiv
|
Sheppard
Thread-Ersteller


Rock the board




Beiträge: 48
# Antwort: 19 - 17.09.2010 um 14:04 Uhr
gib mal den link wo einer deiner facebook buttons ist dann guck ich mal ob wirklich die richtige url angegeben wird


Inaktiv
|
Swifter


Specialist





Beiträge: 1841
# Antwort: 20 - 17.09.2010 um 16:28 Uhr
ok hier der Link:
http://www.orbiamortis.com/index.php?mod=news&action=view&id=117&start=0#com0

Hat sich aber teilweise erledigt... hab anscheinend die ganze Zeit in der falschen News geschaut... in dieser, in der ich draufgeklickt habe, wird es auch angezeigt...
Bleibt also nur noch das Facebook Problem mit der Ausgabe auf FB selbst...
Dort steht zwar: Daniel gefällt ..:: OrbiaMortis MultiGaming since 2006 ::.. auf orbiamortis.com.
Aber man kann nicht daraus ersehen, dass es die News ist, die einem gefällt... die Verlinkung davon ist allerdings richtig, denn bei einem Klick darauf, kommt man zu der News...
Und dort wiederum steht nur der Gefällt mir Button und nich mehr, Daniel gefällt das... schon komisch iwie ^^


------------------
Greetz Swifter


Wenn du dich klein, nutzlos, beleidigt und depressiv fühlst, denke immer daran: Du warst einmal das schnellste und erfolgreichste Spermium deiner Gruppe!


Inaktiv
|
Antworten: 37
Seite [1] 2 >


Sie müssen sich registrieren, um zu antworten.


ClanSphere Project - Mailus - Imprint - Disclaimer - Scriptinfo