Jak na strukturovaná data

Odpověď od Linelabcz
14. lis 2018 13:21 #137694

Rudolf Baláš napsal: Ano, je to možné, inovaci se meze nekladou :)


Rudo díky za odpoveď. Vím že je to možné. :-)
Zajímá mě tvuj názor na rozdíly mezi Article, BlogPosting a NewsArticle. Nebo to neřešíš, nezadáváš typ pro označení článků a nebo využíváš na všechen obsah článků Article? Joomlaportal sice není žádný zpravodajský web, ale důležité zprávy by bylo možné jako News označit. U blogů je to více méně jasné.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Cony
14. lis 2018 14:06 #137696
Co se týče formátu, není dnes již spíše preferovaný formát mikrodat JSON + LD? Jeho použití je podle mne přeheldnější a zamezuje podobným chybám v kódu, když se mikrodata pasují do běžných HTML elementů...

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Rudolf
14. lis 2018 14:57 #137698
Františku,

řeším to u typů jako recept...

U Article a Articlenews jsem to zatím neřešil, ale budu muset, mám tady na stole nejnovější SEO analýzu jednoho velkého DE eshopu.

Takže určitě bych doporučil, pokud se bude dělat. A pokud je na to prostor, získají se tím body a JoomlaPortal bude viditelnější.

Cony: ano je preferovanější, ale neumí teď odpovědět co je lepší.

MiniJoomla! - www.minijoomla.org - eshop s rozšířením Joomla/VM
Email Manager - aplikace na správu šablon emailů pro VirtueMart
Easy Feeder - aplikace na generování XML/CSV feedů a napojení na ERP pro VM
PragueClassicconcert - portál pro prodej vstupenek na systému Joomla

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
15. lis 2018 10:40 #137706
Tak jsem nějak dal dohromady microdata pro položku K2.
kód je:
    <article itemscope itemtype="https://schema.org/Article">
      <meta itemprop="headline" content="<?php echo $this->item->title; ?>"/>
      <meta itemprop="name" content="<?php echo $this->item->title; ?>"/>
      <meta itemprop="mainEntityOfPage" content="<?php echo $this->item->absoluteURL; ?>"/>
      <meta itemprop="url" content="<?php echo $this->item->absoluteURL; ?>"/>
      <meta itemprop="inLanguage" content="<?php echo ($this->item->language === '*') ? JFactory::getConfig()->get('language') : $this->item->language; ?>" />
      <meta itemprop="image" content="<?php echo JURI::base().$this->item->image; ?>"/>
      
      <span meta itemscope itemtype="https://schema.org/Person" itemprop="author" content="<?php echo $this->item->author->name; ?>"/><meta itemprop="name" content="<?php echo $this->item->author->name; ?>"/></span>
      <meta itemprop="datePublished" content="<?php echo $this->item->created; ?>"/> 
      <meta itemprop="dateModified" content="<?php echo $this->item->modified; ?>"/>  
      <span meta itemscope itemtype="https://schema.org/Organization" itemprop="publisher" content="Diochi"/>
        <meta itemprop="name" content="Diochi s.r.o."/>
        <meta itemprop="address" content="Průmyslová 1306/7, 102 00 Praha 10, Česká republika"/>
        <meta itemprop="email" content="info@diochi.cz"/>
        <meta itemprop="telephone" content="+420 222 764 004"/>
        <meta itemprop="url" content="<?php echo JURI::base(); ?>"/>
        <span meta itemscope itemtype="https://schema.org/ImageObject" itemprop="logo" content="logo"/>
            <meta itemprop="url" content="<?php echo JURI::base().'images/ui/logo.png'; ?>"/>
        </span>
      </span>
      <meta itemprop="description" content="<?php echo strip_tags($this->item->introtext); ?>"/> 
      <meta itemprop="articleBody" content="<?php echo strip_tags($this->item->fulltext); ?>"/> 
    </article>  
a výsledek je vidět zde (je to směrováno jen na testovací web).

Uvítám každé nápad na vylepšení. Inspiroval jsem se, mimo jiné, strukturou microdat na velkých a zvláště zpravodajských webech.

Pokud někdo ví, tak se zeptám:
Setkal jsem se s názorem, že by se neměly nadužívat <meta> značky. Proč? Dával jsem úmyslně vše do meta značek, protože dávat označení microdat přímo do vypisovaného HTML (příklad zde ) se mi zdá nepřehledné a hlavně, pokud v zobrazení vypnu třeba datum vytvoření nebo autora, tak se mi nedostane ani do microdat a to už je problém.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Rudolf
15. lis 2018 11:09 - 15. lis 2018 11:16 #137707

Tady si myslím že má autor chybu.
Protože v elementu Article na Schema @id není


Tohle patřilo na výpis testu pro Article z Joomlaportalu.

I zde je metaznačka vložena do divu, který obsahu id nebo itemid a tím pádem dojde k znehodnocení metaznačky při testu.
Osobně bych tedy použil nový div bez id, jinak to Google zase doplní automaticky špatně.

<meta itemprop="description" content="<?php echo strip_tags($this->item->introtext); ?>"/>
<meta itemprop="articleBody" content="<?php echo strip_tags($this->item->fulltext); ?>"/>


Toto jsem já ponechal jako součást kódu a označil tak divy, kterých se to týká (dtto www.idnes.cz )
Nechci řešit případné SEO a duplicitní obsah na stejné stránce :D

Donedávna mi vše takto fungovalo a nemusel jsem metaznačky vůbec dávat samostatně, byly jako součást divů na tom místě kde mi vypadla informace (například datum publikování).

Minulý týden mi to ale nefungovalo u images, headline, takže jsem je musel přesunout do hlavičky do metaznaček.

Setkal jsem se s názorem, že by se neměly nadužívat <meta> značky. Proč? Dával jsem úmyslně vše do meta značek, protože dávat označení microdat přímo do vypisovaného HTML (příklad zde ) se mi zdá nepřehledné a hlavně, pokud v zobrazení vypnu třeba datum vytvoření nebo autora, tak se mi nedostane ani do microdat a to už je problém.


Pokud to vypnete, tak máte v php podmínku, viz šablony od Joomlart, které ji mají.
<?php if ($params->get('show_title')) : ?>
		<?php echo JLayoutHelper::render('joomla.content.item_title', array('item' => $this->item, 'params' => $params, 'title-tag'=>'h1')); ?>
	<?php else: ?>
	  <meta content="<?php echo $this->item->title ?>" itemprop="headline">
	<?php endif; ?>


Podmínku v šabloně jsem Vám posílal, je použitá například pro language.

mainEntityOfPage je součástí i schema.org/Article


Ano, tady mám chybu já :D

MiniJoomla! - www.minijoomla.org - eshop s rozšířením Joomla/VM
Email Manager - aplikace na správu šablon emailů pro VirtueMart
Easy Feeder - aplikace na generování XML/CSV feedů a napojení na ERP pro VM
PragueClassicconcert - portál pro prodej vstupenek na systému Joomla
Poděkovali: Ernst

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
15. lis 2018 11:33 - 15. lis 2018 11:37 #137708

I zde je metaznačka vložena do divu, který obsahu id nebo itemid a tím pádem dojde k znehodnocení metaznačky při testu.
Osobně bych tedy použil nový div bez id, jinak to Google zase doplní automaticky špatně.

Zde nerozumím.


Toto jsem já ponechal jako součást kódu a označil tak divy, kterých se to týká (dtto www.idnes.cz )
Nechci řešit případné SEO a duplicitní obsah na stejné stránce :D

To máte pravdu, asi to tak udělám. Já mám problém, že item.php používám v cca deseti variantách (mám cca 10 šablon K2 pro jednotlivé kategorie a zobrazení). proto toho chci mít většinu v bloku a ten nakopírovat, než 10 upravovat item.php.


Pokud to vypnete, tak máte v php podmínku, viz šablony od Joomlart, které ji mají.

to je jasný, normálně bych to tak taky tak udělal, pokud by se jednalo o standardní přepis v šablone. Ale v mém případě 10xK2 šablona se mi do toho nechce.
Až budu tak řešit icagendu nebo easydiscuss, tak to tak udělám, je to nejčistší řešení.


Podmínku v šabloně jsem Vám posílal, je použitá například pro language.

Ano, vždyď jsem ji tam od vás použil (jen drobně upravil)


Ano, tady mám chybu já :D

a ještě tam máte, že autor je věc :D

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.