Autor Zpráva
jval
Profil *
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&nbsp;- 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&nbsp;lze také odkoupit. Veškerá občanská vybavenost v nedalekých Prachaticích.&nbsp; "/>
    <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
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 *
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 *
Ale stránky se normálně zobrazují.
Joker
Profil
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 *
tak jsem odstranil chybu GUnload. Myslíte že i ty warnings budou vadit meta pro facebook?
juriad
Profil
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 *
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
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 *
Poradíte prosím jak upravit, zatím jsem to nikdy řešit nemusel.
juriad
Profil
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 *
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;
}
je to funkce převzatá z php.vrana.cz


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';
}
a již vše funguje. Moc děkuju všem za pomoc.


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
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
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.
jval
Profil *
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
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 *
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

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0