Social Plugins – Facebook, Twitter a G+

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Pavel Macháň
Člen | 282
+
0
-

Vytvořil jsem si komponenty pro sociální sítě a to pro jejich Social Pluginy. Vim, že je už podobných komponent hodně, ale proč si nenapsat svoji že :)
Kdo by měl zájem tak sem to zveřejnil https://github.com/…ocialPlugins

Verze:

Použití:
Nette Addons: https://componette.org/search/?…
Git Readme: https://github.com/…er/README.md

Editoval EIFEL (15. 4. 2014 9:41)

David Matějka
Moderator | 6445
+
0
-
Pavel Macháň
Člen | 282
+
0
-

matej21 napsal(a):

https://github.com/…omponent.php#L42 tohle opravdu ne :)

Mno fuj co sem to tam nechal… Díky za postřeh :)
Upraveno https://github.com/…30f3858b6c4d

Verze 1.0.1
Přidána podpora pro Twitter

  • Embedded timeline
  • Embedded favorites
  • Embedded search

Komponenta přidána na Packagist pro composer https://packagist.org/…cial-plugins

Editoval EIFEL (9. 12. 2013 22:37)

regiss
Člen | 61
+
0
-

Vytvořte komponentu (třeba továrničkou) v presenteru

Ahoj muzes ukazat vzorovy priklad jak vytvorit tovornicku?

Pavel Macháň
Člen | 282
+
0
-

regiss napsal(a):

Vytvořte komponentu (třeba továrničkou) v presenteru

Ahoj muzes ukazat vzorovy priklad jak vytvorit tovornicku?

Verze: 1.1.x
Přidal sem továrničky a jsou rozdělené podle služeb (FB, TW, G+)

Config

services:
	# Configs
	- HostBox\Components\Facebook\SocialPlugins\Config('vaseAppId')
	- HostBox\Components\Twitter\SocialPlugins\Config
	- HostBox\Components\Google\SocialPlugins\Config
	# Factories
	- HostBox\Components\Facebook\SocialPlugins\FacebookFactory
	- HostBox\Components\Twitter\SocialPlugins\TwitterFactory
	- HostBox\Components\Google\SocialPlugins\GoogleFactory

Presenter

// vypisovat sem "use" nebudu
class HomepagePresenter extends BasePresenter {

    /** @var FacebookFactory */
    protected $facebookFactory;

    /** @var TwitterFactory */
    protected $twitterFactory;

    /** @var GoogleFactory */
    protected $googleFactory;

    // dostaneme tovarnicky do presenteru
    // samozrejme to jde i injectem
    public function __construct(FacebookFactory $facebookFactory, TwitterFactory $twitterFactory, GoogleFactory $googleFactory) {
        $this->facebookFactory = $facebookFactory;
        $this->twitterFactory = $twitterFactory;
        $this->googleFactory = $googleFactory;
    }

    // vytvotime pomoci tovarnicky komponentu Like button
    public function createComponentFacebookLikeButton() {
        return $this->facebookFactory->createLikeButton();
    }

    // parametr slouzi pro defaultni nastaveni komponenty
    public function createComponentFacebookLikeBox() {
        return $this->facebookFactory->createLikeBox(array(
            'colorScheme' => LikeBox::COLOR_SCHEME_DARK,
            'showFaces' => TRUE
        ));
    }

    // pokud to neudelam parametrem metody pri vytvareni lze to
    // dodatecne nastavit assign metodou na jiz vytvorene komponente
    public function createComponentTwitterShareButton() {
        $component = $this->twitterFactory->createFollowButton();
        $component->assign(array(
            'size' => FollowButton::SIZE_LARGE,
            'showCount' => TRUE
        ));

        return $component;
    }

    // a nebo jednotlive
    public function createComponentGooglePlusOneButton() {
        $component = $this->googleFactory->createPlusOneButton();
        $component->size = PlusOneButton::SIZE_SMALL;

        return $component;
    }

}

Šablona

{control facebookLikeButton}
{control facebookLikeBox}
{control twitterShareButton}
{control googlePlusOneButton}

{control twitterShareButton:jsScript}
{control facebookLikeButton:jsScript}
{control googlePlusOneButton:jsScript}

Editoval EIFEL (10. 12. 2013 0:50)

regiss
Člen | 61
+
-1
-

Super vsechno funguje jak ma. Jenom bych dodal, ze je nutne mit Nette ve verzi 2.1dev
Chvili mi trvalo, nez mi doslo ze musim nastavit attribut href, nebot jsem testoval plugin na localhostu. Bez toho se proste ‚Like button‘ nezobrazi a clovek si lame hlavu nad tim co dela spatne.

Jeste jsem si vsiml, ze mas nastvenou konstantu na LAYOUT_STANDART = ‚standart‘ na Facebook strance je ‚standard‘

$this->facebookFactory->createLikeButton(array('href' => 'http://www.google.com'));

Jinak dekuji za super plugin, jak je na tom nova verze portalu pro pluginy?

Editoval regiss (10. 12. 2013 1:14)

Pavel Macháň
Člen | 282
+
0
-

regiss napsal(a):

Super vsechno funguje jak ma. Jenom bych dodal, ze je nutne mit Nette ve verzi 2.1dev
Chvili mi trvalo, nez mi doslo ze musim nastavit attribut href, nebot jsem testoval plugin na localhostu. Bez toho se proste ‚Like button‘ nezobrazi a clovek si lame hlavu nad tim co dela spatne.

Jeste jsem si vsiml, ze mas nastvenou konstantu na LAYOUT_STANDART = ‚standart‘ na Facebook strance je ‚standard‘

$this->facebookFactory->createLikeButton(array('href' => 'http://www.google.com'));

V composeru to upravím na >= v2.0.13 neměl by stím být problém (ještě to otestuju). Osobně to testuju na nette 2.1RC tak proto to tam je.

href parametr pokud je prázdný tak FB, G+ berou aktuální URL kde je zobrazené tlačítko (na locale sem to zkoušel a tlačítka se zobrazovala, ale mám překuchané DNS takže používám vhost a tím pádem adresu ala socialplugins.local … ale jestli to je tím netuším)

EDIT: Opraveno (composer balík: v1.1.2)

regiss napsal(a):

Jinak dekuji za super plugin, jak je na tom nova verze portalu pro pluginy?

Tak to netuším :)

Editoval EIFEL (10. 12. 2013 12:42)

Pavel Macháň
Člen | 282
+
0
-

Nová verze 1.2.0

Přidána podpora sociální sítě Pinterest a to částí:

  • Pin It button
  • Follow button
  • Pin widget
  • Profile widget
  • Board widget

Composer balík:

"hostbox/nette-component-social-plugins": "v1.2.0"

Editoval EIFEL (17. 12. 2013 23:44)

Pavel Macháň
Člen | 282
+
0
-

Nová verze 1.3.2

Přidána podpora profesní sítě LinkedIn a to částí:

  • Company insider
  • Company profile
  • Member profile
  • Share button
  • Recommend button

Composer balík:

"hostbox/nette-component-social-plugins": "v1.3.0"

Editoval EIFEL (17. 12. 2013 2:03)

regiss
Člen | 61
+
0
-

Umoznuje tento balicek postovat clanky na socialni site? Mam na mysli tento scenar.
Napisi clanek a pred ulozenim do databaze ho pomoci tohoto balicku poslu na Facebook, Twitter a Google+
Samozrejme by se posilal jenom nejaky vytah z tohoto clanku s adresou na moje webovky na kterych si ho mohou precist cely.

Pavel Macháň
Člen | 282
+
0
-

regiss napsal(a):

Umoznuje tento balicek postovat clanky na socialni site? Mam na mysli tento scenar.
Napisi clanek a pred ulozenim do databaze ho pomoci tohoto balicku poslu na Facebook, Twitter a Google+
Samozrejme by se posilal jenom nejaky vytah z tohoto clanku s adresou na moje webovky na kterych si ho mohou precist cely.

Tato komponenta má za úkol pouze zobrazovat pluginy (like tlačítko, share, komentáře, embendded atd viz seznam podporovaných pluginů https://forum.nette.org/…-twitter-a-g#…) sociálních sítí nikoliv využívat jejich API pro tvorbu akcí na sociálních sítí.

Pavel Macháň
Člen | 282
+
0
-

Nová verze 1.4.0

  • Přídány Testy (pomocí nette/tester)
  • Opravena LinkedIn továrnička

Composer balík:

"hostbox/nette-component-social-plugins": "v1.4.0"

Editoval EIFEL (17. 12. 2013 23:44)

Pavel Macháň
Člen | 282
+
0
-

Nová verze 1.5.0

  • Přidány testy pro výsledné data komponent
  • Opraveno dočasné nastavení pro template

Composer balík:

"hostbox/nette-component-social-plugins": "v1.5.0"
fucikm
Člen | 4
+
0
-

regiss napsal(a):

Super vsechno funguje jak ma. Jenom bych dodal, ze je nutne mit Nette ve verzi 2.1dev
Chvili mi trvalo, nez mi doslo ze musim nastavit attribut href, nebot jsem testoval plugin na localhostu. Bez toho se proste ‚Like button‘ nezobrazi a clovek si lame hlavu nad tim co dela spatne.

Jeste jsem si vsiml, ze mas nastvenou konstantu na LAYOUT_STANDART = ‚standart‘ na Facebook strance je ‚standard‘

$this->facebookFactory->createLikeButton(array('href' => 'http://www.google.com'));

Jinak dekuji za super plugin, jak je na tom nova verze portalu pro pluginy?

Já se snažím vykreslit like_box a prostě ne a ne se zobrazit

v BasePresenteru mám továrnu:

public function createComponentFacebookLikeBox($name) {

        return $this->facebookFactory->createLikeBox(array(
            'colorScheme' => LikeBox::COLOR_SCHEME_LIGHT,
            'showFaces' => TRUE,
	    'stream'	=> false,
	    'header' => true,
	    'href' => 'http://www.google.com'
        ));
    }`

a v šabloně:

{control facebookLikeBox}
{control facebookLikeBox:jsScript}

Co jsem přehlédl, či nedomyslel?

Kaliver
Člen | 12
+
0
-

Ahojte, v prvom rade chcem pochvalit autora za vydarenu komponentu. Mam otazku, akym sposobom viem nastavit jazyk pre facebook like button? Nasiel som v configu premennu $locale…aku ju viem ovbplyvnit?

Michal Vyšinský
Člen | 608
+
0
-

Podle letmého projití kódu bych řekl, že jako pole v konstruktoru.

Pavel Macháň
Člen | 282
+
0
-

Kaliver napsal(a):

Ahojte, v prvom rade chcem pochvalit autora za vydarenu komponentu. Mam otazku, akym sposobom viem nastavit jazyk pre facebook like button? Nasiel som v configu premennu $locale…aku ju viem ovbplyvnit?

Michal Vyšinský napsal(a):

Podle letmého projití kódu bych řekl, že jako pole v konstruktoru.

@Kaliver Jak píše @MichalVyšinský Změna se provádí při vytváření instance Config a nebo ji můžeš ovlivnit pomocí

PHP

use HostBox\Components\Facebook\SocialPlugins;

// Konstruktorem: Musíš ale vyplnit i $status a $xfbml
$config = new SocialPlugins\Config('myAppId', TRUE, TRUE, 'en_US');

// Nebo pomocí setteru
$config->setLocale('en_US');

NEON

services:
		# Konstruktorem
		- HostBox\Components\Facebook\SocialPlugins\Config('myAppId', true, true, 'en_US')
		# Setterem
		-
			class: HostBox\Components\Facebook\SocialPlugins\Config('myAppId')
			setup:
				- setLocale('en_US')

V plánu je této komponentě přidat Extension pro snadnější konfiguraci, ale bohužel zatím není čas :/

Editoval Pavel Macháň (25. 1. 2015 0:33)