Autor | Zpráva | ||
---|---|---|---|
jval Profil * |
#1 · Zasláno: 2. 4. 2015, 14:08:22
Zdravím, snažím se rozběhnout sdílecí tlačítko na fecebook, když debuggeru předhodím třeba tuhle adresu http://hrdlicka-reality.cz/nemovitost/chalupa-v-male-vesnicce-svojnice-okr-prachatice tak huláká:
Object at URL 'http://hrdlicka-reality.cz/nemovitost/chalupa-v-male-vesnicce-svojnice-okr-prachatice' of type 'website' is invalid because a required property 'og:title' of type 'string' was not provided. Nicméně v kódu je to správně: <meta property="og:type" content="article"/> <meta property="og:title" content="Chalupa v malé vesničce Svojnice okr. Prachatice"/> <meta property="og:site_name" content="Hrdlička reality"/> <meta property="og:description" content="Chalupa se nachází v malé vesničce Svojnice 10 km od Prachatic.Obytnou část tvoří veranda, velká obytná kuchyně, obývací pokoj, dvě ložnice, WC, koupelnu nutno dostavět. (Stavební materiál včetně vany je v ceně nemovitosti). V domě jsou vybudovány nové odpady - svedené do veřejné kanalizace, voda v plastu, elektřina v mědi, plastová okna, nové podlahy, nové ústřední topení, včetně radiátorů. Celý objekt je odizolován od spodních vod. Součástí nemovitosti je technická místnost a sklep. Dále se vedle domu nachází zahrada, kterou je možno pronajmout od obecního úřadu za 300 Kč ročně nebo lze také odkoupit. Veškerá občanská vybavenost v nedalekých Prachaticích. "/> <meta property="og:image" content="http://hrdlicka-reality.cz/uploads/products/13n163-03.jpg" /> <meta property="og:url" content="http%3A%2F%2Fhrdlicka-reality.cz%2Fnemovitost%2Fchalupa-v-male-vesnicce-svojnice-okr-prachatice" /> Nevíte někdo co se mu nelíbí? |
||
juriad Profil |
#2 · Zasláno: 2. 4. 2015, 14:11:48
Neřešíš něco podobného jako kolega KOM? Přečti si to vlákno, zda tam nemáš podobnou chybu.
Meta tagy Open Graph Protocol Mimochodem, ta adresa hrdlicka-reality.cz/nemovitost/chalupa-v-male-vesnicce-svojnice-okr-prachatice vrátí prázdnou stránku se stavem 200. |
||
jval Profil * |
#3 · Zasláno: 2. 4. 2015, 14:30:38
Prázdnou stránku?
|
||
juriad Profil |
Ano, úplně prázdnou, ani byte.
[adam@judy ~]$ wget -S http://hrdlicka-reality.cz/nemovitost/chalupa-v-male-vesnicce-svojnice-okr-prachatice --2015-04-02 14:32:38-- http://hrdlicka-reality.cz/nemovitost/chalupa-v-male-vesnicce-svojnice-okr-prachatice Resolving hrdlicka-reality.cz (hrdlicka-reality.cz)... 46.28.105.83, 2a02:2b88:1:4::35 Connecting to hrdlicka-reality.cz (hrdlicka-reality.cz)|46.28.105.83|:80... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Date: Thu, 02 Apr 2015 12:34:13 GMT Server: Apache Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Set-Cookie: PHPSESSID=a5b4dec79dfd4cab3f5e758542f28fe8; path=/ Vary: Accept-Encoding Content-Length: 0 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html Length: 0 [text/html] Saving to: ‘chalupa-v-male-vesnicce-svojnice-okr-prachatice’ chalupa-v-male-vesnicce-svojnice-okr-prachatice [ <=> ] 0 --.-KB/s in 0s 2015-04-02 14:32:38 (0.00 B/s) - ‘chalupa-v-male-vesnicce-svojnice-okr-prachatice’ saved [0/0] |
||
jval Profil * |
#5 · Zasláno: 2. 4. 2015, 14:59:19
Ale stránky se normálně zobrazují.
|
||
Joker Profil |
#6 · Zasláno: 2. 4. 2015, 15:00:19
jval:
Návštěvník dostane obsah jen když odešle hlavičku Accept-language s hodnotou, která se webu líbí. Jinak nedostane nic, viz [#4] juriad. To bude dost možná příčina problému. PS.: „tlačítko na fecebook“ Ble, to musí být dost nechutná sociální síť. |
||
juriad Profil |
Já tu stránku vidím skoro práznou (menu, hlavička, patička tam je) a v konzoli chyby:
ReferenceError: GUnload is not defined <!DOCTYPE html> hrdlick...lity.cz (line 1) TypeError: a[0] is undefined return a[0].offsetWidth + css(a, 'marginLeft') + css(a, 'marginRight') jcarous....min.js (line 89, col 2) Invalid App Id: Must be a number or numeric string representing the application id. sdk.js#...on=v2.0 (line 64) ReferenceError: LoadGmaps is not defined <!DOCTYPE html> hrdlick...lity.cz (line 1) Joker: Aha, já se už na webech nehlásím k češtině. A toto je poprvé, co jsem narazil na problém. |
||
jval Profil * |
#8 · Zasláno: 2. 4. 2015, 21:44:24
tak jsem odstranil chybu GUnload. Myslíte že i ty warnings budou vadit meta pro facebook?
|
||
juriad Profil |
#9 · Zasláno: 2. 4. 2015, 21:47:16
Hlavní problém je, že robot nejspíš stránku vidí prázdnou jako já. Jak říkal Joker, stránka by měla fungovat, i když není čeština uvedena v Accept-Language.
|
||
jval Profil * |
#10 · Zasláno: 2. 4. 2015, 21:53:07 · Upravil/a: jval
No dobře, ale Accept.Language posílá browser. Jde tedy nějak vnutit Accept-Language přímo v html?
Nehledě na to že i kdyby robot viděl obsah prázdný, tak to co je v HEAD by měl vidět i tak, nebo se pletu? |
||
juriad Profil |
#11 · Zasláno: 2. 4. 2015, 22:04:23
Musíš upravit skript, aby mu nevadila nepřítomnost té hlavičky (jazyka v hlavičce).
Ne. Posílá se prázdná stránka, neobsahuje ani <head>. |
||
jval Profil * |
#12 · Zasláno: 2. 4. 2015, 22:14:07
Poradíte prosím jak upravit, zatím jsem to nikdy řešit nemusel.
|
||
juriad Profil |
#13 · Zasláno: 2. 4. 2015, 23:05:29
Teď jsem ověřil, že to opravdu závisí na té hlavičce. Hádám, že někde detekuješ jazyk podle požadavků klienta, k tomu používáš hlavičku Accept-Language. A nejspíš tam někde je chyba. Dokud neuvidíme kód, nelze víc říct.
|
||
jval Profil * |
#14 · Zasláno: 3. 4. 2015, 05:22:06 · Upravil/a: jval
function acceptable_language() { $accept_language = array(); preg_match_all('~([-a-z]+)(;q=([0-9.]+))?~', strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"]), $matches, PREG_SET_ORDER); foreach ($matches as $match) { $accept_language[$match[1]] = (isset($match[3]) ? $match[3] : 1); } arsort($accept_language); foreach ($accept_language as $lang => $q) { $lang = preg_replace('~-.*~', '', $lang); return $lang; } return false; } plus function lang($idf, $number = null) { global $LANG, $translations, $db_prefix; @$translation = $translations[$idf]; if (is_array($translation) && $translation) { switch ($LANG) { case 'cs': $pos = ($number == 1 ? 0 : (!$number || $number >= 5 ? 2 : 1)); break; case 'sk': $pos = ($number == 1 ? 0 : (!$number || $number >= 5 ? 2 : 1)); break; default: $pos = ($number == 1 ? 0 : 1); } $translation = $translation[$pos]; } $args = func_get_args(); array_shift($args); return vsprintf(($translation ? $translation : $idf), $args); } OK, tak jsem funkci upravil aby nevracela false function acceptable_language() { $accept_language = array(); preg_match_all('~([-a-z]+)(;q=([0-9.]+))?~', strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"]), $matches, PREG_SET_ORDER); foreach ($matches as $match) { $accept_language[$match[1]] = (isset($match[3]) ? $match[3] : 1); } arsort($accept_language); if (count($accept_language)>0){ foreach ($accept_language as $lang => $q) { $lang = preg_replace('~-.*~', '', $lang); return $lang; } } return 'cs'; } Tak ještě malinká drobnost, když kliknu na sdílecí tlačítko, zobrazí se mi stránka připravená na sdílení, ale bez obrázku, pokud tu stránku 3x obnovím, tak už se zobrazí i obrázek. Jde mi o to jaké mám dát klientům instrukce, jestli jim mám říct, že to obnovovat musí aby se obrázek zobrazil a nebo jim říct, že si toho nemají všímat a až se odkaz nasdílí, tak se to už zobrazí správně i s obrázkem? |
||
juriad Profil |
#15 · Zasláno: 3. 4. 2015, 09:28:16
jval:
On byl problém v tom, že jsi neuvažoval, že ta funkce může vrátit FALSE. Ale v tvém případě, kdy chceš mít jako výchozí jazyk (pokud nemůžeš nabídnout lepší) češtinu, je řešení rozumné. Ale mě se to pořád ukazuje stejně, jako před opravou; nejspíš jsi jí ještě neaplikoval na serveru? Ohledně sdílení ti nepomůžu, facebook nemám. |
||
Keeehi Profil |
#16 · Zasláno: 3. 4. 2015, 09:53:14
jval:
„a již vše funguje. Moc děkuju všem za pomoc.“ Dokud ti to bude na této stránce vracet prázhnou odpověď, tak to stále správně není. „Jde mi o to jaké mám dát klientům instrukce, jestli jim mám říct, že to obnovovat musí aby se obrázek zobrazil a nebo jim říct, že si toho nemají všímat a až se odkaz nasdílí, tak se to už zobrazí správně i s obrázkem?“ Já takové chování nepozoroval. Pokud je to však častější jev (vyskytlo se to více než jednou) pak zjisti kde je problém a oprav to. Klient by neměl trpět tvojí neschopností to udělat správně. Jsem si jistý, že problém nebude na straně facebooku. Pokud na to nemáš, tak si to v první řadě neměl brát. |
||
Časová prodleva: 4 dny
|
|||
jval Profil * |
#17 · Zasláno: 7. 4. 2015, 13:59:40
Ok, pro test jsem vyřadil funkci pro detekci accept language a nastavil natvrdo jazyk na cs. Když nyní předhodím testuri.org jakoukoliv adresu, tak obsah vidím. Když kliknu na tlačítko pro sdílení, tak se mi nenačte fotka. Proku stejnou adresu proženu debuggerem facebook, tak se vše načte v pořádku. Po dalším stisknutí tlačítka sdílení je to také již v pořádku i s obrázkem. Tak to už jsem z toho jelen. Přece tlačítko na sdílení by mělo fungovat tak, že pokud jsou data už v cache, tak je načte a pokud ně, tak by data měl načíst nově dle meta tagů.
|
||
Keeehi Profil |
#18 · Zasláno: 7. 4. 2015, 14:15:41
jval:
„Přece tlačítko na sdílení by mělo fungovat tak, že pokud jsou data už v cache, tak je načte a pokud ně, tak by data měl načíst nově dle meta tagů.“ Vždyť ano. Problém je, že v keši jsou špatná data. Ovšem když to proženete debuggerem, tak ten ta data z keše násilně vymaže a tím způsobí, že příště to už funguje správně. Schválně si přidejte novou nemovitost a zkuste sdílet tu. Tam už by to mělo fungovat napoprvé. U těch starých bude prostě potřeba promazat keš. |
||
jval Profil * |
#19 · Zasláno: 7. 4. 2015, 14:43:43
No jenže to je ten problém, já to zkouším na nemovitosti která ještě nikdy neprošla ani debuggerem a anisdílecím tlačítkem. Takže dle mého nic v keši ještě být nemůže. Pokud u takové nemovitosti kliknu n sdílet, tak tomám bez obrázku. Dám 2 až 3x F5 a už se obrázek načte.
Schválně jestli můžete tak zkuste tuhle http://hrdlicka-reality.cz/nemovitost/garsoniera-s-terasou-a-nadhernym-vyhledem-do-udoli-v-chvalkovicich-okr-nachod ta ještě nikdy přes tlačítko neprošla a ani přes debugger. Děkuji |
||
Časová prodleva: 9 let
|
0