{"taxonomy_vocabulary_44":{"uri":"https:\/\/www.drupal.org\/api-d7\/taxonomy_term\/9990","id":"9990","resource":"taxonomy_term"},"taxonomy_vocabulary_46":{"uri":"https:\/\/www.drupal.org\/api-d7\/taxonomy_term\/9988","id":"9988","resource":"taxonomy_term"},"taxonomy_vocabulary_3":[{"uri":"https:\/\/www.drupal.org\/api-d7\/taxonomy_term\/36748","id":"36748","resource":"taxonomy_term"}],"body":{"value":"\u003Cp\u003EThis project extends Drupal\u0027s \u003Ca href=\u0022https:\/\/www.drupal.org\/project\/metatag\u0022 rel=\u0022nofollow\u0022\u003EMetatag module\u003C\/a\u003E to display structured data as JSON LD in the head of web pages. Read more about Schema.org, JSON LD, and how this module works in an article on Lullabot.com, \u003Ca href=\u0022https:\/\/www.lullabot.com\/articles\/create-seo-juice-by-adding-json-ld-structured-data-to-drupal-8\u0022 rel=\u0022nofollow\u0022\u003ECreate SEO Juice From JSON LD Structured Data in Drupal\u003C\/a\u003E.\u003C\/p\u003E\n\u003Cp\u003ESince the Schema.org list is huge, and growing, this module only provides a subset of those values. But it is designed to be extensible. The current list of Schema.org top-level (entity) object types includes:\u003C\/p\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/Article\u0022 rel=\u0022nofollow\u0022\u003EArticle\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/Book\u0022 rel=\u0022nofollow\u0022\u003EBook\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/Course\u0022 rel=\u0022nofollow\u0022\u003ECourse\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/Event\u0022 rel=\u0022nofollow\u0022\u003EEvent\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/FAQPage\u0022 rel=\u0022nofollow\u0022\u003EFAQPage \u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/HowTo\u0022 rel=\u0022nofollow\u0022\u003EHowTo\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/ImageObject\u0022 rel=\u0022nofollow\u0022\u003EImageObject\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/ItemList\u0022 rel=\u0022nofollow\u0022\u003EItemList \u003C\/a\u003E (for Views)\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/JobPosting\u0022 rel=\u0022nofollow\u0022\u003EJobPosting\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/Movie\u0022 rel=\u0022nofollow\u0022\u003EMovie\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/Organization\u0022 rel=\u0022nofollow\u0022\u003EOrganization \u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/Person\u0022 rel=\u0022nofollow\u0022\u003EPerson \u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/Place\u0022 rel=\u0022nofollow\u0022\u003EPlace \u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/Product\u0022 rel=\u0022nofollow\u0022\u003EProduct\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/QAPage\u0022 rel=\u0022nofollow\u0022\u003EQAPage \u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/Recipe\u0022 rel=\u0022nofollow\u0022\u003ERecipe\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/Review\u0022 rel=\u0022nofollow\u0022\u003EReview\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/Service\u0022 rel=\u0022nofollow\u0022\u003EService\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/SpecialAnnouncement\u0022 rel=\u0022nofollow\u0022\u003ESpecialAnnouncement\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/TVEpisode\u0022 rel=\u0022nofollow\u0022\u003ETVEpisode\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/TVSeason\u0022 rel=\u0022nofollow\u0022\u003ETVSeason\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/TVSeries\u0022 rel=\u0022nofollow\u0022\u003ETVSeries\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/VideoObject\u0022 rel=\u0022nofollow\u0022\u003EVideoObject\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/WebPage\u0022 rel=\u0022nofollow\u0022\u003EWebPage\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/WebSite\u0022 rel=\u0022nofollow\u0022\u003EWebSite\u003C\/a\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cp\u003EMany second-level properties are available to use on the above, including:\u003C\/p\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/Action\u0022 rel=\u0022nofollow\u0022\u003EAction\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/Address\u0022 rel=\u0022nofollow\u0022\u003EAddress\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/Answer\u0022 rel=\u0022nofollow\u0022\u003EAnswer\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/Brand\u0022 rel=\u0022nofollow\u0022\u003EBrand\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/BreadcrumbList\u0022 rel=\u0022nofollow\u0022\u003EBreadcrumbList\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/Country\u0022 rel=\u0022nofollow\u0022\u003ECountry\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/HowToStep\u0022 rel=\u0022nofollow\u0022\u003EHowToStep \u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/MonetaryAmount\u0022 rel=\u0022nofollow\u0022\u003EMonetaryAmount\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/NutritionInformation\u0022 rel=\u0022nofollow\u0022\u003ENutritionInformation\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/Offer\u0022 rel=\u0022nofollow\u0022\u003EOffer\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/OpeningHoursSpecification\u0022 rel=\u0022nofollow\u0022\u003EOpeningHoursSpecification\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/Organization\u0022 rel=\u0022nofollow\u0022\u003EOrganization\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/Person\u0022 rel=\u0022nofollow\u0022\u003EPerson\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/Place\u0022 rel=\u0022nofollow\u0022\u003EPlace\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/ProgramMembership\u0022 rel=\u0022nofollow\u0022\u003EProgramMembership\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/Question\u0022 rel=\u0022nofollow\u0022\u003EQuestion\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/Rating\u0022 rel=\u0022nofollow\u0022\u003ERating\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/Rating\u0022 rel=\u0022nofollow\u0022\u003EReview\u003C\/a\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cp\u003EUsing the override system in Metatag module you can define default structured data values for all content types, override the global content defaults for a particular content type, or even override everything else on an individual node to provide specific values for that node. Hard-code properties or identify patterns using token replacements. \u003C\/p\u003E\n\u003Ch2\u003EValidation\u003C\/h2\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/validator.schema.org\/\u0022 rel=\u0022nofollow\u0022\u003ESchema Markup Validator\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/search.google.com\/test\/rich-results\u0022 rel=\u0022nofollow\u0022\u003ERich Results Test\u003C\/a\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Ch3\u003EAdditional Resources\u003C\/h3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/docs\/gs.html\u0022 rel=\u0022nofollow\u0022\u003EGetting started with schema.org using Microdata\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/schema.org\/docs\/full.html\u0022 rel=\u0022nofollow\u0022\u003ESchema.org Full Hierarchy\u003C\/a\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Ca href=\u0022https:\/\/developers.google.com\/search\/docs\/advanced\/structured-data\/intro-structured-data\u0022 rel=\u0022nofollow\u0022\u003EUnderstand how structured data works\u003C\/a\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Ch3\u003EKnown Issues\u003C\/h3\u003E\n\u003Cul\u003E\n\u003Cli\u003EThe Drupal 7 version requires a minimum of PHP 5.5, for easiest compatibility between the D7 and D8 code.\u003C\/li\u003E\n\u003Cli\u003E\nThe Drupal 7 Zen theme strips out part of the JSON LD element, invalidating the result. Use a different theme or see the Zen issue: \u003Cspan class=\u0022project-issue-issue-link project-issue-status-info project-issue-status-14\u0022\u003E\u003Ca href=\u0022\/project\/zen\/issues\/2934644\u0022 title=\u0022Status: Reviewed \u0026amp; tested by the community\u0022\u003E#2934644: Don\u0027t remove type=\u0022application\/ld+json\u0022 in zen_process_html_tag()\u003C\/a\u003E\u003C\/span\u003E.\n\u003C\/li\u003E\n\u003Cli\u003E\nTo populate the image width and height properties, use the appropriate tokens. In Drupal 8, the core Token module provides image height and width token. For example, the token \u003Ccode class=\u0022language-php\u0022\u003E[node:field_image:0:width]\u003C\/code\u003E will be replaced with the width of the first image in field_image on the current node. In Drupal 7, you\u0027ll need to enable the \u003Ca href=\u0022https:\/\/www.drupal.org\/project\/imagecache_token\u0022 rel=\u0022nofollow\u0022\u003EImagecache Token\u003C\/a\u003E module, which provides the tokens for image dimensions which are missing in Drupal 7.\n\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Ch2\u003EUpgrading from 8.x-1.x to 8.x-2.x\u003C\/h2\u003E\n\u003Cp\u003E\u003Cstrong\u003EThe Schema Audit sub-module was deprecated in 8.x-1.x and removed from 8.x-2.x. Before upgrading from 8.x-1.x to 8.x-2.x ensure the Schema Audit module is not installed.\u003C\/strong\u003E\u003C\/p\u003E\n\u003Cp\u003EThere are some API changes in 8.x-2.x, but the configuration is identical. If you have been using 8.x-1.x and are not using custom code, you should be able to seamlessly switch to 8.x-2.x. If you are using custom code, you\u0027ll need to \u003Ca href=\u0022https:\/\/www.drupal.org\/docs\/contributed-modules\/schemaorg-metatag\/developer-instructions-for-82-branch#comment-13822458\u0022 rel=\u0022nofollow\u0022\u003Ereview the changes\u003C\/a\u003E.\u003C\/p\u003E\n\u003Cp\u003ESee the documentation guide links on the project page for more information.\u003C\/p\u003E\n\u003Ch2\u003EDevelopment Roadmap and Instructions\u003C\/h2\u003E\n\u003Cp\u003EThe \u003Cstrong\u003E8.x-1.x and 7.x-1.x\u003C\/strong\u003E versions are in sync, the same content types, properties, etc. They\u0027re able to share Traits and the SchemaMetatagManager code with few changes between the versions. Both of these branches are stable and will not get any new features.\u003C\/p\u003E\n\u003Cp\u003EThere is a new \u003Cstrong\u003E8.x-2.x\u003C\/strong\u003E branch that will become the recommended branch for D8. It consists of a re-architecture that includes a PropertyType plugin that maps to Schema.org objects and a service that parses information from a Schema.org json export. By adding some extra information to the Tag plugin, you can indicate which PropertyType each plugin uses, and what Schema.org objects to display as options.\u003C\/p\u003E\n\u003Ch2\u003EExample JSON LD\u003C\/h2\u003E\n\u003Cp\u003EUsing this module, the code in the head of the page might end up looking like this:\u003C\/p\u003E\n\u003Cpre class=\u0022codeblock\u0022\u003E\u003Ccode class=\u0022language-php\u0022\u003E\u0026lt;script type=\u0022application\/ld+json\u0022\u0026gt;{\n    \u0022@context\u0022: \u0022http:\/\/schema.org\u0022,\n    \u0022@graph\u0022: [\n        {\n            \u0022@type\u0022: \u0022Article\u0022,\n            \u0022description\u0022: \u0022Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem. Donec sollicitudin molestie malesuada. Donec sollicitudin molestie malesuada. Donec rutrum congue leo eget malesuada. Nulla quis lorem ut libero malesuada feugiat. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui.\u0022,\n            \u0022datePublished\u0022: \u00222009-11-30T13:04:01-0600\u0022,\n            \u0022dateModified\u0022: \u00222017-05-17T19:02:01-0500\u0022,\n            \u0022headline\u0022: \u0022Curabitur arcu erat]\u0022,\n            \u0022author\u0022: {\n                \u0022@type\u0022: \u0022Person\u0022,\n                \u0022name\u0022: \u0022Minney Mouse\u0022,\n                \u0022sameAs\u0022: \u0022https:\/\/example.com\/user\/2\u0022\n            },\n            \u0022publisher\u0022: {\n                \u0022@type\u0022: \u0022Organization\u0022,\n                \u0022name\u0022: \u0022Example.com\u0022,\n                \u0022sameAs\u0022: \u0022https:\/\/example.com\/\u0022,\n                \u0022logo\u0022: {\n                    \u0022@type\u0022: \u0022ImageObject\u0022,\n                    \u0022url\u0022: \u0022https:\/\/example.com\/sites\/default\/files\/logo.png\u0022,\n                    \u0022width\u0022: \u0022600\u0022,\n                    \u0022height\u0022: \u002260\u0022\n                }\n            },\n            \u0022mainEntityOfPage\u0022: {\n                \u0022@type\u0022: \u0022WebPage\u0022,\n                \u0022@id\u0022: \u0022https:\/\/example.com\/story\/example-story\u0022\n            },\n        },\n    ]\n}\u0026lt;\/script\u0026gt;\n\u003C\/code\u003E\u003C\/pre\u003E\u003Ch2\u003ERecommended Workflow for Tokens and\u00a0Overrides\u003C\/h2\u003E\n\u003Cp\u003EThe best way to use this functionality is to take advantage of tokens to pull the right information from the content item, setting up the appropriate tokens for each content type on the global metatag settings page. When configured this way, the JSON-LD on each node will automatically contain the right values, values which match the content being viewed.\u003C\/p\u003E\n\u003Cp\u003EIt is possible to configure the metatag module to override each individual node with different values by adding a metatag field to the content type. In this workflow you assume editors will manually input content directly into the metatag form when they edit the nodes. But there are several reasons why this workflow is likely to be a problem:\u003C\/p\u003E\n\u003Cul\u003E\n\u003Cli\u003EValidation of Schema.org data can be challenging. The best way to be sure it validates is to configure it globally using tokens to pull in contextual data, test the results, and lock it down.\u003C\/li\u003E\n\u003Cli\u003EIf you expose the configuration to editors, they will be able to change all values, not just one or two. They may not realize that their changes will invalidate the results, or even know how to validate them.\u003C\/li\u003E\n\u003Cli\u003EEditors are unlikely to know how to use tokens, or what to do with tokens that are already there.\u003C\/li\u003E\n\u003Cli\u003EThe metatag fields are not large enough to contain large paragraphs of text typed in manually. There\u0027s plenty of room to pull in multiple paragraphs of text using a field token, but not by typing the text into the metatag field.\u003C\/li\u003E\n\u003Cli\u003EOne of the expectations of Schema.org is that the JSON-LD represents the same information that is already on the page. It should not contain different values. Using tokens to pull the existing data into the metatags is consistant with that goal. Typing different information into individual nodes is not.\u003C\/li\u003E\n\u003C\/ul\u003E","summary":"\u003Cp\u003EThis project extends Drupal\u0027s \u003Ca href=\u0022https:\/\/www.drupal.org\/project\/metatag\u0022 rel=\u0022nofollow\u0022\u003EMetatag module\u003C\/a\u003E to display structured data as JSON LD in the head of web pages. Read more about Schema.org, JSON LD, and how this module works in an article on Lullabot.com, \u003Ca href=\u0022https:\/\/www.lullabot.com\/articles\/create-seo-juice-by-adding-json-ld-structured-data-to-drupal-8\u0022 rel=\u0022nofollow\u0022\u003ECreate SEO Juice From JSON LD Structured Data in Drupal\u003C\/a\u003E.\u003C\/p\u003E","format":"1"},"upload":[],"field_project_type":"full","field_project_machine_name":"schema_metatag","field_project_has_issue_queue":true,"field_project_components":["Code","Documentation","Miscellaneous","User interface","New structures","Existing structures"],"field_project_default_component":null,"field_project_issue_guidelines":[],"field_project_has_releases":true,"field_release_version_format":null,"field_project_homepage":[],"field_project_changelog":[],"field_project_demo":[],"field_project_documentation":[{"title":"Documentation for Schema.org Metatag 8.x-1 to 8.x-2","url":"https:\/\/www.drupal.org\/docs\/contributed-modules\/schemaorg-metatag","attributes":[],"display_url":null},{"title":"Documentation for Schema.org Metatag 7.x-1","url":"https:\/\/www.drupal.org\/docs\/7\/modules\/schemaorg-metatag","attributes":[],"display_url":null}],"field_project_screenshots":[],"field_project_license":{"title":"GNU General Public License, version 2 or later","url":"https:\/\/www.gnu.org\/licenses\/old-licenses\/gpl-2.0.html","attributes":[],"display_url":null},"field_project_images":[{"file":{"uri":"https:\/\/www.drupal.org\/api-d7\/file\/5833576","id":"5833576","resource":"file"},"alt":""}],"field_supporting_organizations":[{"uri":"https:\/\/www.drupal.org\/api-d7\/field_collection_item\/1267290","id":"1267290","resource":"field_collection_item"},{"uri":"https:\/\/www.drupal.org\/api-d7\/field_collection_item\/1527028","id":"1527028","resource":"field_collection_item"},{"uri":"https:\/\/www.drupal.org\/api-d7\/field_collection_item\/1603387","id":"1603387","resource":"field_collection_item"},{"uri":"https:\/\/www.drupal.org\/api-d7\/field_collection_item\/1736240","id":"1736240","resource":"field_collection_item"}],"field_project_issue_version_opts":["static","dynamic"],"field_security_advisory_coverage":"covered","field_project_ecosystem":[{"uri":"https:\/\/www.drupal.org\/api-d7\/node\/640498","id":"640498","resource":"node"}],"field_replaced_by":[],"field_issue_summary_template":[],"nid":"2879424","vid":"14269601","is_new":false,"type":"project_module","title":"Schema.org Metatag","language":"en","url":"https:\/\/www.drupal.org\/project\/schema_metatag","edit_url":"https:\/\/www.drupal.org\/node\/2879424\/edit","status":"1","promote":"0","sticky":"0","created":"1495108266","changed":"1771516375","author":{"uri":"https:\/\/www.drupal.org\/api-d7\/user\/45874","id":"45874","resource":"user"},"comment":"1","comments":[],"comment_count":"0","comment_count_new":false,"feeds_item_guid":null,"feeds_item_url":null,"feed_nid":null,"flag_flag_tracker_follow_user":[],"flag_tracker_follower_count":null,"has_new_content":null,"last_comment_timestamp":"1495108266"}