HTML5 Microdata-itemref do innego itemscope (osoba pracuje dla Organizacji)
Strona internetowa organizacji, powiedzmy "Sun Industries", chciałaby dodać listę pracowników. Adres i dane kontaktowe organizacji są już obecne na stronie internetowej, ale lista pracowników byłaby gdzie indziej.
Więc mamy
<div id="organization" itemscope itemtype="http://schema.org/Organization">
<span itemprop="name">Sun Industries</span>,
<span itemprop="location" itemscope itemtype="http://schema.org/Place">
<span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<span itemprop="streetAddress">Technologies Street 42</span>,
<span itemprop="addressLocality">Venustown</span>
<span itemprop="postalCode">98765</span>
</span>
</span>
</div>
A później w kodzie HTML5 będziemy mieli
<div id="employee-1" itemscope itemtype="http://schema.org/Person">
<span itemprop="name">John Doe</span>,
<span itemprop="jobTitle">Sales Manager</span>
</div>
Jak połączyć dwa obiekty "organizacja " i" pracownik-1 " razem?
Próbowałem dodać następujące dziecko do " pracownik-1" obiekt
<meta itemprop="worksFor" itemscope itemtype="http://schema.org/Organization" itemref="organization">
Ale to nie zadziałało(przynajmniej nie w narzędziu do testowania danych strukturalnych Google).
Jak poprawnie używać właściwości microdata itemref
w tym przypadku?
Dla jasności, próbowałem również:
- dodaj
itemprop="worksFor"
do obiektu "organizacja". - Dodaj
itemref="organization"
do obiektu "pracownik".
Więc
<div id="organization" itemprop="worksFor" itemscope itemtype="http://schema.org/Organization">
<span itemprop="name">Sun Industries</span>,
...
</div>
...
<div id="employee-1" itemscope itemtype="http://schema.org/Person" itemref="organization">
<span itemprop="name">John Doe</span>,
<span itemprop="jobTitle">Sales Manager</span>
</div>
Ale to dało mi Warning: Page contains property "worksfor" which is not part of the schema.
dla przedmiotu "organizacja".
3 answers
Właściwie twój ostatni fragment kodu wygląda dobrze. Może z Yandex Validator wyjście będzie bardziej wyraźne
person
itemType = http://schema.org/Person
worksfor
organization
itemType = http://schema.org/Organization
name = Sun Industries
name = John Doe
jobtitle = Sales Manager
Kilka innych przykładów.
<body>
<div id="organization" itemscope itemtype="http://schema.org/Organization" itemref="employee-1">
<span itemprop="name">Sun Industries</span>,
<span itemprop="location" itemscope itemtype="http://schema.org/Place">
<span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<span itemprop="streetAddress">Technologies Street 42</span>,
<span itemprop="addressLocality">Venustown</span>
<span itemprop="postalCode">98765</span>
</span>
</span>
</div>
<div id="employee-1" itemprop="employee" itemscope itemtype="http://schema.org/Person">
<span itemprop="name">John Doe</span>,
<span itemprop="jobTitle">Sales Manager</span>
</div>
</body>
Daje:
organization
itemType = http://schema.org/Organization
employee
person
itemType = http://schema.org/Person
name = John Doe
jobtitle = Sales Manager
name = Sun Industries
location
place
itemType = http://schema.org/Place
address
postaladdress
itemType = http://schema.org/PostalAddress
streetaddress = Technologies Street 42
addresslocality = Venustown
postalcode = 98765
Lub to
<body>
<div id="employee-1" itemscope itemtype="http://schema.org/Person">
<span itemprop="name">John Doe</span>,
<span itemprop="jobTitle">Sales Manager</span>
<meta itemprop="worksFor" itemscope itemtype="http://schema.org/Organization" itemref="organization">
</div>
<div id="organization">
<span itemprop="name">Sun Industries</span>,
<span itemprop="location" itemscope itemtype="http://schema.org/Place">
<span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<span itemprop="streetAddress">Technologies Street 42</span>,
<span itemprop="addressLocality">Venustown</span>
<span itemprop="postalCode">98765</span>
</span>
</span>
</div>
</body>
To daje
person
itemType = http://schema.org/Person
name = John Doe
jobtitle = Sales Manager
worksfor
organization
itemType = http://schema.org/Organization
name = Sun Industries
location
place
itemType = http://schema.org/Place
address
postaladdress
itemType = http://schema.org/PostalAddress
streetaddress = Technologies Street 42
addresslocality = Venustown
postalcode = 98765
Spec nie jest zbyt jasne o użyciu itemref ale przykład pomaga
<div itemscope id="amanda" itemref="a b"></div>
<p id="a">Name: <span itemprop="name">Amanda</span></p>
<div id="b" itemprop="band" itemscope itemref="c"></div>
<div id="c">
<p>Band: <span itemprop="name">Jazz Band</span></p>
<p>Size: <span itemprop="size">12</span> players</p>
</div>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-21 07:40:47
Twój ostatni przykład jest poprawny.
(Narzędzie testujące Google nie daje już wspomnianego błędu. Wtedy prawdopodobnie nie były na bieżąco z nowymi dodatkami do Schema.org słownictwo.)
Specyfikacja
Linki do Specyfikacji itemref
:
Tl; dr :
- określasz
itemref
na element (zitemscope
), do którego chcesz dodać właściwości. - określasz
id
na elemencie (zitemprop
), który chcesz dodać.
Przykłady
Minimalny przykład:
<div itemprop="worksFor" itemscope itemtype="http://schema.org/Organization" id="org">
<!-- this property (worksFor) gets added to the Person item below -->
</div>
<div itemscope itemtype="http://schema.org/Person" itemref="org">
<!-- looks for the element with the ID "org" -->
</div>
Jest to równoważne:
<div itemscope itemtype="http://schema.org/Person">
<div itemprop="worksFor" itemscope itemtype="http://schema.org/Organization">
</div>
</div>
Inne przykłady:
- dodawanie
meta
elementów zhead
- dodawanie właściwości określonej w elemencie
body
do elementów będących potomkami tegobody
- dodawanie an
Event
doAction
-
dodawanie właściwości
name
z elementu potomnego do elementu nadrzędnego - dodaj właściwość, która jest potomkiem
Offer
elementu do rodzicaProduct
elementu zamiastOffer
- dodawanie
breadcrumb
doWebPage
- dodanie
Hotel
jakobranchOf
anOrganization
- dodanie kilku powiązanych produktów do
Product
- dodawanie
Product
doOffer
- dwa przykłady powiązanych pozycji
Event
: albo viasuperEvent
, albo viasubEvent
Aby pamiętać
Atrybut
itemref
może być używany tylko dla elementów w tym samym dokumencie.Możesz odwoływać się do wielu elementów z jednego atrybutu
itemref
(oddziel tokeny ID znakami spacji).Element odniesienia może być kontenerem dla wielu właściwości.
Musisz upewnić się, że wymienione elementy nie są potomkami elementu z
itemscope
, w przeciwnym razie ich właściwości będą dodawane do tego elementu również (ale można to obejść przez dodanie manekinaitemscope
).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:32:35
Istnieją 2 sposoby łączenia danych schematu.
- itemid: Link 2 complete objects (ie Organisation & Person)
- itemref : Link 1 kompletny obiekt do 1 niekompletny obiekt (tj. artykuł i komentarze)
Pierwszy jest łatwy. Wystarczy dodać właściwość itemid
do elementu, który chcesz połączyć i dodać link
do innego elementu:
<div itemid='#org' itemscope itemType='http://schema.org/Organization'>
<!-- ..... -->
</div>
<article itemscope itemType='http://schema.org/Article'>
<link itemprop='publisher' href='#org'>
</article>
Drugi nie jest taki łatwy. Co jeśli komentarze do Twojego wpisu na blogu są gdzieś daleko. Jak łączysz je ze swoim postem na blogu? Możesz utworzyć pusty element o identyfikatorze, a następnie połączyć go z postem na blogu w następujący sposób:]}
<div id="comments" itemscope>
<span itemprop="commentCount">0</span>
</div>
<div id="words" itemscope>
<span itemprop="wordCount">0</span>
</div>
Nie musimy dawać komentarzy itemType
. Wystarczy dodać itemscope
. W ten sposób nie otrzymujemy błędów walidacji. Teraz możemy połączyć komentarze z powrotem do postu na blogu w następujący sposób:
<div itemscope itemtype="http://schema.org/BlogPosting" itemref="comments words">
<!-- .... -->
</div>
Tada! Udało nam się nawet zaimportować wordCount
.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-01 22:35:20