secit-pl / schema-org
Schema.org 类别。
Requires
- php: >=5.4.0
Requires (Dev)
- gossi/php-code-generator: ~0
- guzzlehttp/guzzle: ^7.8.1
- symfony/css-selector: ^v7.0.7
- symfony/dom-crawler: ^v7.0.7
This package is not auto-updated.
Last update: 2024-09-19 07:26:12 UTC
README
schema.org 数据类型、类型和属性的类映射。
向后兼容性破坏警告
从版本 3.3.2 开始,所有属性都应后缀为“Property”,所有类型都应后缀为“Type”。所有没有“Property”后缀的属性和没有“Type”后缀的类型现在都被标记为已弃用。此更改是为了支持 PHP 7.x,因为 PHP 7.x 有一些新的受限单词,不能用作类名。
请更改您的代码并添加后缀以使用新的命名方案。
所有已弃用(非后缀)的类将在版本 3.4 中被移除。
安装
在命令行中运行:
$ composer require secit-pl/schema-org
用法
首先创建数据结构
use SecIT\SchemaOrg\Mapping\DataType; use SecIT\SchemaOrg\Mapping\Property; use SecIT\SchemaOrg\Mapping\Type; $breadcrumbs = new Type\BreadcrumbListType(); $element1 = new Type\ListItemType(); $element1->setPosition(new Property\PositionProperty(new DataType\IntegerType(1))); $element1->setItem( new Property\Item( (new Type\ThingType('http://google.pl/#test'))->setName( new Property\NameProperty( new DataType\TextType('Test') ) ) ) ); $breadcrumbs->addItemListElement(new Property\ItemListElementProperty($element1)); $element2 = new Type\ListItemType(); $element2->setPosition(new Property\PositionProperty(new DataType\IntegerType(2))); $element2->setItem( new Property\ItemProperty( (new Type\ThingType('http://google.pl/#qweqwe'))->setName( new Property\NameProperty( new DataType\TextType('Test 122') ) ) ) ); $breadcrumbs->addItemListElement(new Property\ItemListElementProperty($element2)); $breadcrumbs->setNumberOfItems( new Property\NumberOfItemsProperty( new DataType\IntegerType( count($breadcrumbs->getItemListElements()) ) ) );
现在您可以按照以下方式将其转换为 JSON-LD 字符串
$schemaOrg = new \SecIT\SchemaOrg(); echo $schemaOrg->toJsonLd($breadcrumbs);
输出应该是有效的 schema.org JSON-LD
<script type="application/ld+json">{"@context":"http:\/\/schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","item":{"@type":"Thing","@id":"http:\/\/google.pl\/#test","name":"Test"},"position":1},{"@type":"ListItem","item":{"@type":"Thing","@id":"http:\/\/google.pl\/#qweqwe","name":"Test 122"},"position":2}],"numberOfItems":2}</script>
如果您想检查输出验证,可以使用 Google 提供的工具:[https://search.google.com/structured-data/testing-tool](https://search.google.com/structured-data/testing-tool)
代码示例
面包屑
use SecIT\SchemaOrg\Mapping\DataType; use SecIT\SchemaOrg\Mapping\Property; use SecIT\SchemaOrg\Mapping\Type; $breadcrumbs = new Type\BreadcrumbListType(); $element1 = new Type\ListItemType(); $element1->setPosition(new Property\PositionProperty(new DataType\IntegerType(1))); $element1->setItem( new Property\ItemProperty( (new Type\ThingType('http://google.pl/#test'))->setName( new Property\NameProperty( new DataType\TextType('Test') ) ) ) ); $breadcrumbs->addItemListElement(new Property\ItemListElementProperty($element1)); $element2 = new Type\ListItemType(); $element2->setPosition(new Property\PositionProperty(new DataType\IntegerType(2))); $element2->setItem( new Property\ItemProperty( (new Type\ThingType('http://google.pl/#qweqwe'))->setName( new Property\NameProperty( new DataType\TextType('Test 122') ) ) ) ); $breadcrumbs->addItemListElement(new Property\ItemListElementProperty($element2)); $breadcrumbs->setNumberOfItems( new Property\NumberOfItemsProperty( new DataType\IntegerType( count($breadcrumbs->getItemListElements()) ) ) );
输出
<script type="application/ld+json">{"@context":"http:\/\/schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","item":{"@type":"Thing","@id":"http:\/\/google.pl\/#test","name":"Test"},"position":1},{"@type":"ListItem","item":{"@type":"Thing","@id":"http:\/\/google.pl\/#qweqwe","name":"Test 122"},"position":2}],"numberOfItems":2}</script>
产品
use SecIT\SchemaOrg\Mapping\DataType; use SecIT\SchemaOrg\Mapping\Property; use SecIT\SchemaOrg\Mapping\Type; $product = new Type\ProductType(); $product ->setName( new Property\NameProperty( new DataType\TextType('Kenmore White 17" Microwave') ) ) ->setDescription( new Property\DescriptionProperty( new DataType\TextType('0.7 cubic feet countertop microwave. Has six preset cooking categories and convenience features like Add-A-Minute and Child Lock.') ) ) ->setImage( new Property\ImageProperty( new DataType\URLType('kenmore-microwave-17in.jpg') ) ) ->setAggregateRating( new Property\AggregateRatingProperty( (new Type\AggregateRatingType()) ->setRatingValue( new Property\RatingValueProperty( new DataType\NumberType(3.5) ) ) ->setReviewCount( new Property\ReviewCountProperty( new DataType\IntegerType(11) ) ) ) ) ->setOffers( new Property\OffersProperty( (new Type\OfferType()) ->setPriceCurrency( new Property\PriceCurrencyProperty( new DataType\TextType('USD') ) ) ->setPrice( new Property\PriceProperty( new DataType\NumberType(55.00) ) ) ->setAvailability(new Property\AvailabilityProperty( new Type\InStockType() )) ) ) ->setReview( new Property\ReviewProperty([ (new Type\ReviewType()) ->setReviewRating( new Property\ReviewRatingProperty( (new Type\RatingType()) ->setBestRating( new Property\BestRatingProperty( new DataType\NumberType(5) ) ) ->setRatingValue( new Property\RatingValueProperty( new DataType\NumberType(1) ) ) ->setWorstRating( new Property\WorstRatingProperty( new DataType\NumberType(1) ) ) ) ) ->setAuthor( new Property\AuthorProperty( (new Type\PersonType()) ->setName( new Property\NameProperty( new DataType\TextType('Ellie') ) ) ) ) ->setDatePublished( new Property\DatePublishedProperty( new DataType\DateType('2011-04-01') ) ) ->setDescription( new Property\DescriptionProperty( new DataType\TextType('The lamp burned out and now I have to replace it.') ) ) ->setName( new Property\NameProperty( new DataType\TextType('Not a happy camper') ) ) , (new Type\ReviewType()) ->setReviewRating( new Property\ReviewRatingProperty( (new Type\RatingType()) ->setBestRating( new Property\BestRatingProperty( new DataType\NumberType(5) ) ) ->setRatingValue( new Property\RatingValueProperty( new DataType\NumberType(4) ) ) ->setWorstRating( new Property\WorstRatingProperty( new DataType\NumberType(1) ) ) ) ) ->setAuthor( new Property\AuthorProperty( (new Type\PersonType()) ->setName( new Property\NameProperty( new DataType\TextType('Lucas') ) ) ) ) ->setDatePublished( new Property\DatePublishedProperty( new DataType\DateType('2011-03-25') ) ) ->setDescription( new Property\DescriptionProperty( new DataType\TextType('Great microwave for the price. It is small and fits in my apartment.') ) ) ->setName( new Property\NameProperty( new DataType\TextType('Value purchase') ) ) , ]) ) ;
输出
<script type="application/ld+json">{"@context":"http:\/\/schema.org","@type":"Product","aggregateRating":{"@type":"AggregateRating","reviewCount":11,"ratingValue":3.5},"offers":{"@type":"Offer","availability":"https:\/\/schema.org\/InStock","price":55,"priceCurrency":"USD"},"review":[{"@type":"Review","reviewRating":{"@type":"Rating","bestRating":5,"ratingValue":1,"worstRating":1},"author":{"@type":"Person","name":"Ellie"},"datePublished":"2011-04-01","description":"The lamp burned out and now I have to replace it.","name":"Not a happy camper"},{"@type":"Review","reviewRating":{"@type":"Rating","bestRating":5,"ratingValue":4,"worstRating":1},"author":{"@type":"Person","name":"Lucas"},"datePublished":"2011-03-25","description":"Great microwave for the price. It is small and fits in my apartment.","name":"Value purchase"}],"description":"0.7 cubic feet countertop microwave. Has six preset cooking categories and convenience features like Add-A-Minute and Child Lock.","image":"kenmore-microwave-17in.jpg","name":"Kenmore White 17\" Microwave"}</script>
项目标签
如您所注意到的,该捆绑包没有使用标准的标签编号流程。每个标签的前两部分对应于从 schema.org 生成的映射类的 schema 版本。
schema.org 发布历史可以在以下位置找到:[https://schema.org/docs/releases.html](https://schema.org/docs/releases.html)
想要支持此捆绑包吗?
请考虑在 codito.io 使用我们的 随机代码生成器 服务。
在 codito.io 上,您可以免费生成多达 250,000 个您选择的格式的代码。您可以使用生成的代码用于诸如促销代码(例如,可以将其打印在包装内部)、序列号、一次性或多次使用的密码、抽奖券、折扣代码、优惠券、随机字符串等等 - 更多用例请参阅我们的 示例。如果 250,000 个代码不够用,您可以使用我们的 商业代码生成服务。