Nette Framework – Like Button

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

Zdravim vsetkych :-) Mozete mi pomoct s Like Button-om? Snazil som sa pridat vsetko podla stranky https://componette.org/search/?… ale zjavne niekde robim chybu … teda spravil som nasledovne:

⇒ stiahol som si „https://github.com/…tte-plugins/“ a nakopiroval som ho do libs/Nette (neviem ci je to spravne)

⇒ do config suboru som si nakopiroval kod, co je na stranke https://componette.org/search/?… pod „DI“

⇒ a nakoniec do Presenteru a Jemu prisluchajuce sablony potrebne kody

… viete mi poradit nejaky step-by-step navod? Po dlhom case sa vraciam k Nette, tak sa musim zorientovat :-) Dakujem

Petr Hudík
Člen | 49
+
0
-

Samotná stránka addonu je vlastně takový step-by-step návod, pravděpodobně ti tu nikdo nenapíše podrobnější postup.

Místo toho sem napiš, jakou chybu Ti to píše? co se zobrazuje? nebo kde ses zasekl? Rádi Ti poradíme.

Takeshi
Člen | 596
+
0
-

No prvý problém som si našiel, akonáhle som skopíroval nasledovný kód do config.neon, pod „factories“:

<?php
factories:
        fbToolsScript:
            class: \FbTools\Script

        fbToolsLikeButton:
            class: \FbTools\LikeButton
            setup:
                - setContext(...)
                - setUrl('http://www.mojestranka.cz')
                - setWidth(150)
                .. or ..
                - setAll([
                    url: 'http://www.mojestranka.cz',
                    font: 'netusim',
                    send: false,
                    ])
?>

Problém: Server error … teda ERROR 500

Editoval Takeshi (7. 5. 2013 12:03)

Petr Hudík
Člen | 49
+
0
-

Obávám se, že „Problém: Server error … teda ERROR 500“ je nic neříkající, to může znamenat téměř cokoliv. Na lokále by ti laděnka měla vyhodit srozumitelnou chybovou zprávu, na produkci se chybové zprávy ukládají do složky /log. Vlož sem prosím obsah chybové zprávy.

Takeshi
Člen | 596
+
0
-

No ako som zistil, ono to ma problem s rozlozenim. Teda nespravny pocet medzier a tak .. sak tu je ten error.log :

[2013–05–07 12–25–45] Nette\Utils\NeonException: Either tabs or spaces may be used as indenting chars, but not both. on line 35, column 21. in /www/sites/6/site17826/public_html/libs/Nette/Utils/Neon.php:367 @ http://www.trajan.php5.sk/www/ @@ exception-2013–05–07–12–25–45–6f47db8e2b464ceb2bdbe1e8670d9a70.html

… zatial sa s tym hram a upravujem miesta aby sa mu to lubilo :-)

Petr Hudík
Člen | 49
+
0
-

Pro konfiguraci se používá neon, je důležité, abys použil buď pouze mezery nebo pouze tabelátory, způsob odsazení nesmíš kombinovat.

Pro tip: v složce /log by měl být soubor exception-2013–05–07–12–25–45–6f47db8e2b464ceb2bdbe1e8670d9a70.html v tomto souboru nalezneš opravdu vychytanou chybovou zprávu, které vypadá třeba takto s její pomocí nalezneš chybu daleko snáze. Možná se to neprojeví v tomto případě, ale usnadní ti práci do budoucna.

Něco mi říká, že stránky testuješ jen na produkci (na serveru php5.sk), věnuj chvíli času a nastav si domácí prostředí, to Ti ušetří ještě víc práce.

Editoval Petr Hudík (7. 5. 2013 12:40)

Takeshi
Člen | 596
+
0
-

Dakujem za radu :-) Ked som odstranil iste medzery, tak mi hodilo chybu na riadku ← v nasledujucom zneni : „Duplicated key ‚class‘ on line 38, column 27“

<?php
	factories:
fbToolsScript:
class: \FbTools\Script

fbToolsLikeButton:
class: \FbTools\LikeButton                <-----------------------------
setup:
                - setContext(...)
                - setUrl('http://127.0.0.1:8887/trajan.php5.sk/www/')
                - setWidth(150)
?>
enumag
Člen | 2118
+
0
-

To odsazení je podstatné, nemůžeš ho jen tak odstranit. Ta chyba předtím jasně říkala, že pro odsazování mícháš tablátory s mezerama. Nech si v editoru zobrazit bílé znaky a uvidíš kde je co špatně.

Editoval enumag (7. 5. 2013 13:18)

Takeshi
Člen | 596
+
0
-

enumag napsal(a):

To odsazení je podstatné, nemůžeš ho jen tak odstranit.

No to je pekne povedane a aj mne to napadlo, lenze ked som to jednoducho skopiroval zo stranky nette , tak mi pise uz spominanu chybu … ale pre istotu este raz „Either tabs or spaces may be used as indenting chars, but not both. on line 34, column 9“ … preto som sa snazil odstranit tie medzery … insie ma nenapadlo … lepsie riesenie len uvitam :-)

enumag
Člen | 2118
+
0
-

Nemáš mezery odstranit ale nahradit tabulátorama. Nebo naopak. Svůj předchozí příspěvej jsem ještě editoval.

Petr Hudík
Člen | 49
+
0
-

Prosím vyzkoušej si, jak funguje NEON, na této stránce je to velice pěkně vidět, co se stane, když to změníš jak jsi popsal. Můžeš živě vidět jak se změní, když odebereš nějaký tabulátor/mezeru.

Takeshi
Člen | 596
+
0
-

OK, tak dalsia vec … predosli problem sa mi podarilo rozbehat (Vdaka) ale je tu dalsi … ked dam vsetky funkcie, podla stranky, na spravne miesto, tak ..

<?php
{control likeButton, url => "http://127.0.0.1:8887/trajan.php5.sk/www/", send => false}
?>

mi pise chybu

<?php
Call to undefined method FbTools\LikeButton::setContext().
?>

… teda neviem co mam dat do funkcie setContext() … nejaky priklad?

Editoval Takeshi (7. 5. 2013 14:02)

Takeshi
Člen | 596
+
0
-

Alebo som este skusal nasledovne

namiesto

<?php

                - setContext(...)
                - setUrl('http://www.mojestranka.cz')
                - setWidth(150)
?>

som dal toto

<?php

			- setAll([
			url: 'http://127.0.0.1:8887/trajan.php5.sk/www/',
			font: 'Arial',
			send: false,
			])
?>

…ale tu mi zase vyhadzuje chybu >>>

<?php
Service 'fbToolsLikeButton': Unknown key '0' in definition of service
?>

Viete co s tym?

piskotek
Člen | 35
+
0
-

ahoj, včera jsem to řešil …

config

fbToolsScript:
			class: \FbTools\Script
		likeButton:
			class: \FbTools\LikeButton
			setup:
				- setAll([
				    url: 'http://mojestranka.cz',
				    font: 'arial',
				    send: true,
				    display: recommend,
				    ])

toto v navodu není, úspěšně jsem na to zapoměl

<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/cs_CZ/all.js#xfbml=1&appId=_____ID_TVOJI_APLIKACE____";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

presenter

protected function createComponentLikeButton()
{
    $fb = $this->context->createLikebutton();
    $fb->setUrl('http://www.mojestranka.cz');
    return $fb;
}

protected function createComponentFbScript()
{
    return $this->context->createFbscript();
}

a ještě je třeba upravit v libs/…/likebutton.latte

{$url|url} na {!$url}

snad ti to pomůže