brotkrueml/schema-virtuallocation

Add-on to the TYPO3 schema extension, providing pending type VirtualLocation

Installs: 4 920

Dependents: 0

Suggesters: 1

Security: 0

Stars: 0

Watchers: 2

Forks: 0

Open Issues: 0

Type:typo3-cms-extension

v2.1.0 2024-02-04 11:23 UTC

This package is auto-updated.

Last update: 2024-11-04 13:00:15 UTC


README

This extension is an add-on for the TYPO3 schema extension and provides the VirtualLocation type. It can be assigned as location to the Event type. As it is a pending type by now it is not provided by the schema extension. When this type is taken into the core vocabulary this extension is obsolete.

Also, this extension serves as a blueprint for extending the schema extension with own type models and view helpers.

Requirements

The extension in the latest version supports TYPO3 v11 LTS, TYPO3 v12 LTS and TYPO3 v13. Use older version for compatibility with TYPO3 v9 LTS or TYPO3 v10 LTS.

Installation

With Composer:

composer req brotkrueml/schema-virtuallocation

Usage

Using the API

<?php

declare(strict_types=1);

namespace MyVendor\MyExtension\Controller;

use Brotkrueml\Schema\Type\TypeFactory;

final class MyController
{
    public function __construct(
        private readonly TypeFactory $typeFactory,
    ) {}

    public function doSomething(): void
    {
        // ...

        $location = $this->typeFactory->create('VirtualLocation');
        $location->setProperty('url', 'https://example.org/join/12345');

        $event = $this->typeFactory->create('Event');
        $event
            ->setProperty('name' 'A virtual event')
            ->setProperty('location', $location)
        ;

        // ...
    }
}

Using the view helper

<schema:type.event name="A virtual event">
    <schema:type.virtualLocation
        -as="location"
        url="https://example.org/join/12345"
    />
</schema:type.event>

Both cases produce the following JSON-LD ouput:

{
    "@context": "http://schema.org",
    "@type": "Event",
    "location": {
        "@type": "VirtualLocation",
        "url": "https://example.org/join/12345"
    },
    "name": "A virtual event"
}

For more information have a look into the schema documentation.

Versions and support

Changelog | TYPO3 Extension Repository