structured data met php en JSON-LD

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Production Engineer

Supermicro® (NASDAQ: SMCI), the leading innovator in high-performance, high-efficiency server technology, is a premier provider of advanced server Building Block Solutions® for Data Center, Cloud Computing, Enterprise IT, Hadoop/Big Data, HPC and Embedded Systems worldwide. Supermicro is committed to protecting the environment through its “We Keep IT Green®” initiative and provides customers with the most energy-efficient, environmentally-friendly solutions available on the market. Supermicro Computer B.V. is seeking a: Production Engineer Who is responsible for the assembly and building of Supermicro product that meet products quality requirements and shipment deadlines. This position will be located in the HMEA headquarters in 's-Hertogenbosch,

Bekijk vacature »

Daniel van Seggelen

Daniel van Seggelen

10/08/2017 04:42:45
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$doc = (object)array(
  "http://schema.org/name" => "Manu Sporny",
  "http://schema.org/url" => (object)array("@id" => "http://manu.sporny.org/"),
  "http://schema.org/image" => (object)array("@id" => "http://manu.sporny.org/images/manu.png")
);

$context = (object)array(
  "name" => "http://schema.org/name",
  "homepage" => (object)array("@id" => "http://schema.org/url", "@type" => "@id"),
  "image" => (object)array("@id" => "http://schema.org/image", "@type" => "@id")
);

// compact a document according to a particular context
// see: http://json-ld.org/spec/latest/json-ld/#compacted-document-form
$compacted = jsonld_compact($doc, $context);

echo json_encode($compacted, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
/* Output:
{
  "@context": {...},
  "image": "http://manu.sporny.org/images/manu.png",
  "homepage": "http://manu.sporny.org/",
  "name": "Manu Sporny"
}


De vraag is, ik heb een lijst met leden, moet ik dan in de body een loop aanmaken, die op 1 pagina 50 keer het volgende uitprint?

echo json_encode($compacted, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
 
PHP hulp

PHP hulp

17/12/2018 21:46:01
 
- Ariën -
Beheerder

- Ariën -

10/08/2017 07:10:57
Quote Anchor link
Doel je op de het body-element van HTML?
Dan is het antwoord nee. En JSON string is niet te combineren met HTML-output.
 
Daniel van Seggelen

Daniel van Seggelen

10/08/2017 08:21:45
Quote Anchor link
Ik zie verder geen foutmeldingen hier:

https://search.google.com/structured-data/testing-tool

Ik lees op verschillende plekken dat hij in de head en body mag staan
 
- Ariën -
Beheerder

- Ariën -

10/08/2017 08:44:34
Quote Anchor link
Lijkt mij sterk, want een JSON-reader kent geen HTML. En JSON is een totaal andere content-type dan HTML.

Laat je URL met je JSON-string eens zien?
Gewijzigd op 10/08/2017 08:45:47 door - Ariën -
 
Daniel van Seggelen

Daniel van Seggelen

10/08/2017 08:56:08
Quote Anchor link
Kan geen reclame maken voor mijn URL hier op dit forum. Ik heb gewoon in een loop de volgende output:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<script type="application/ld+json">
{
  "@context"            :"http://schema.org",
  "@type"                :"BlogPosting",
  "editor"                :"<?=$uname?>",
  "publisher": {    
   "@type"                : "person",
   "name"                :"<?=$uname?>"
  },
  "genre"                :"About <?=$r['reg1']?>",
  "keywords"            :"<?=$r['reg1']?>",  
  "datePublished"        :"<?=$r['datum']?>",
  "dateCreated"            :"<?=$r['datum']?>",
  "headline"            :"<?=$r['title']?>",
  "description"            :"<?=$short?>",
  "articleBody"            : "<?=$long?>",
  "image": {
      "@type"        : "ImageObject",
      "url"            : "<?=HTML_ROOT?>blogs/<?=$r['reg1Url']?>/images/<?=$r['seo_title']?>_50.jpg",
      "height"        : "50",
      "width"        : "50"
      
  },
  "url"                    :"<?=HTML_ROOT?>blog/<?=$r['reg1Url']?>/<?=$r['seo_title']?>",
"author": {
    "@type": "Person",
    "name": "<?=$uname?>"
  }  
}
</script>
 
- Ariën -
Beheerder

- Ariën -

10/08/2017 09:06:08
Quote Anchor link
Dat is geen output, maar input. Ik zie ook ongeparste PHP-variabelen.

Wat laat je browser zelf zien?
 
Daniel van Seggelen

Daniel van Seggelen

10/08/2017 09:10:16
Quote Anchor link
Tuurlijk niet, hij toont die code gewoon in de browser, dus dat put hij out naar de browser.

alle php variabelen zijn gevuld.

ik krijg alleen 1 foutmelding in die code:

Het kenmerk publisher.itemtype heeft een ongeldige waarde.
 
- Ariën -
Beheerder

- Ariën -

10/08/2017 09:15:39
Quote Anchor link
Wees eens niet geheimzinnig, en laat die JSON-output eens zien. Desnoods met dummy-tekst of als een aparte testcase in een los bestand.

Edit:
Het is dus JSON LD (Linked Data), dat maakt het dus weer anders dan het gewone JSON.
Gewijzigd op 10/08/2017 09:20:59 door - Ariën -
 
Daniel van Seggelen

Daniel van Seggelen

10/08/2017 09:24:54
Quote Anchor link
Ik ben niet geheimzinnig, het is erg normaal dat mensen niet hun domeinnamen etc tonen om niet hier indexeert te worden, en de output kan je toch gewoon zien, alleen de HTML_ROOT etc zijn domeinennamen
 
- Ariën -
Beheerder

- Ariën -

10/08/2017 09:29:47
Quote Anchor link
Dat snap ik, maar je kan prima relevante output tonen in het forum. Of een 'gesplitste' URL?

Inmiddels zie ik ook dat het JSON+LD is i.p.v. het gewone JSON. Dat verandert de zaak, en dat kan wel in je HTML-document.
Gewijzigd op 10/08/2017 09:31:29 door - Ariën -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.