TYPO3 Plugin:

schemaker

Fluid ViewHelper XSD Schaltplangenerator

Packen Sie die Stäbe ein:

Framework-Status:

Schemaker ist in erster Linie ein Backport mit einigen Anpassungen für TYPO3v4, aus TYPO3.Fluid (d.h. nicht die TYPO3v4-Version von Fluid).

Warum es verwenden?

Um nur einige Gründe zu nennen:

  • Automatische Vervollständigung in Fluid-Vorlagen für die ViewHelpers einer beliebigen Erweiterung - nicht nur für Ihre eigene.
  • Grundlegende Überprüfung der Attribute, Erkennung und automatisches Hinzufügen der erforderlichen Attribute auf Fluid ViewHelpers.
  • Möglichkeit, XSD-Schemata für die genaue Version der installierten Erweiterungen zu generieren - so können Sie diese an Ihr Projekt anpassen.
  • Erhöhte Geschwindigkeit und Konsistenz im Allgemeinen bei der Erstellung von Fluid-Vorlagen.

Was bewirkt es?

Schemaker erzeugt XSD-Dateien (XML Schema Definition), ein standardisiertes Format, auf das von einer XML-Datei auf definieren, welche Tags erlaubt sind, welche Attribute sie verwenden und welche Werte diese Attribute haben müssen. Spezifisch für Fluid Vorlagen, es erlaubt Ihnen, Tag-Namen und -Attribute automatisch zu vervollständigen und schnell alle erforderlichen Attribute hinzuzufügen, wenn Sie ein Tag hinzufügen.

Wie funktioniert es?

Schemaker analysiert jede ViewHelper und erkennt die möglichen Argumente, ihre Beschreibungen, ob sie erforderlich sind oder nicht und ihre Standardwerte. Es erstellt dann XML-Knoten mit Schemata für jede ViewHelper und fügt die Knoten schließlich der XSD-Datei hinzu wird dann ausgegeben (und sollte in eine Datei umgeleitet und online veröffentlicht werden; siehe Beispiele).

Schemaker läuft im CLI-Modus:

me@localhost:~/documentroot $ ./typo3/cli_dispatch.phpsh extbase help schema:generate

Fluid ViewHelper XSD-Schema generieren

BEFEHL:
  schemaker:schema:generate

ANWENDUNG:
  ./cli_dispatch.phpsh extbase schema:generate [<options>] <extension key>>

ARGUMENTS:
  --Erweiterungsschlüssel × × × × Namensraum der Fluid ViewHelpers ohne Führung
                       backslash (z.B.'TYPO3\Fluid\ViewHelpers'). HINWEIS:
                       Zitieren und/oder entkommen Sie dieses Argument bei Bedarf, um zu vermeiden
                       backslashes von der Interpretation!

OPTIONEN:
  -xsd-Namensraum × × × Eindeutiger Ziel-Namensraum, der im XSD-Schema verwendet wird (für
                       beispiel "http://yourdomain.org/ns/viewhelpers").
                       Standardmäßig ist dies "http://typo3.org/ns/<php Namespace>".

BESCHREIBUNG:
  Erzeugt Schemadokumentation (XSD) für Ihren ViewHelpers und bereitet die
  datei, die online gestellt und von jedem XSD-fähigen Editor verwendet werden kann.
  Nachdem Sie die XSD-Datei erstellt haben, referenzieren Sie sie in Ihrer IDE und importieren Sie den Namensraum
  in Ihrer Fluid-Vorlage, indem Sie die Attribute xmlns:* hinzufügen:
  <html xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://typo3.org/ns/TYPO3/Fluid/ViewHelpers" ...>

Ausführung:

me@localhost:~/documentroot $ ./typo3/cli_dispatch.phpsh extbase schema:generate my_extkey "http://my.domain/namespace" > me.xsd

...die ein XSD-Schema für alle ViewHelpers im Extension-Schlüssel (nicht ExtensionName!) "my_extkey", mit dem XSD-Namensraum erzeugt " http://my.domain/namespace". Die Datei heißt "me.xsd" und wird in Ihrem aktuellen Verzeichnis ausgegeben.

Wie man XSD in der IDE verwendet

Einige IDEs erfordern, dass die XSD-Dateien manuell geladen werden, bevor sie verwendet werden können; andere können sie herunterladen (siehe auch ohne es zu sagen, würde erfordern, dass Sie Ihre XSD-Dateien und deren URLs veröffentlichen). Alle IDEs scheinen zu verlangen, dass der Namensraum folgendermaßen beschaffen ist die in jeder Datei referenziert werden. Der Schlüssel ist, immer sicherzustellen, dass der XSD zu 100% korrekt mit dem genauen Namensraum verbunden ist (Tailing) schrägstriche zählen auch!):

{namespace v=FluidTYPO3\Vhs\ViewHelpers}}
<?xml version="1.0" encoding="UTF-8" ?>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en"
      xmlns:v="http://typo3.org/ns/FluidTYPO3/Vhs/ViewHelpers"
      xmlns:f="http://typo3.org/ns/TYPO3/Fluid/ViewHelpers">
    <head>
        <f:layout name="Standard" />
        <title>XSD Nutzung mit den Erweiterungen Fluid und VHS</title>
    </head>
    <body>
        <!-- Fluid geht hier hin -->
    </body>
</html>

Dies ist das Standardformat. Geben Sie die richtige URL für den Namensraum ein und wählen Sie den gleichen Alias wie im Fluid Namensraum registrierung. Fluid ist natürlich immer "f:", aber es steht dir frei, jedes beliebige Präfix für andere ViewHelpers zu verwenden, solange es sich um ein Präfix handelt entspricht dem Präfix, das in der Definition "xmlns:" verwendet wird.

Einige IDEs verlangen dann, dass Sie XSD-Schemadateien laden und eine Namensraum-URL eingeben, die dem XSD-Schema zugeordnet ist. Achten Sie darauf, dass Sie die URL korrekt ein, sonst funktioniert sie nicht richtig. Lesen Sie die Dokumentation Ihrer spezifischen IDE, wie Sie XSD-Dateien einbinden können (in PHPStorm öffnen Sie die Einstellungen, finden Sie den Konfigurationsabschnitt "Schemas und DTDs" und fügen Sie im oberen Rahmen die XSD-Dateien hinzu, die in Ihrer projekt.

Wann verwenden - und wann nicht verwenden?

Verwenden Sie dies, wenn Ihre Vorlage Abschnitte enthält. Das ist die Grundregel. Der Grund dafür ist die Notwendigkeit, ein Wrapping-Tag zu haben (in im obigen Beispiel wird das HTML-Tag verwendet) und dies kann schwierig sein, in allen IDEs korrekt anzupassen.

Wenn Sie Fluid-Abschnitte verwenden, um die "echte" Ausgabe der Vorlage zu enthalten, können Sie jede Menge HTML außerhalb der f:section tag. Wenn Ihre IDE nur die Standardimplementierung unterstützt, wie im vorherigen Kapitel beschrieben, sollten Sie immer die Option abschnitte, wenn Sie die XSD-Funktionen nutzen möchten.

Einige IDEs sind jedoch in der Lage, die xmlns: Attribute zu erkennen und die XSD anzuwenden, auch wenn es keinen XML-Header und den Das HTML-Tag wird nicht verwendet. Andere IDEs können verlangen, dass der Standardweg (XML-Header, HTML-Tag für xmlns: Definitionen) wie folgt ist verwendet. Wenn Ihre spezielle IDE diesen Ansatz nicht erfordert, sollten Sie in der Lage sein, ihn als solchen zu verwenden:

{namespace v=FluidTYPO3\Vhs\ViewHelpers}}
<div xmlns="http://www.w3.org/1999/xhtml" lang="en"
      xmlns:v="http://typo3.org/ns/FluidTYPO3/Vhs/ViewHelpers"
      xmlns:f="http://typo3.org/ns/TYPO3/Fluid/ViewHelpers">
    <!-- Fluid geht hier hin -->
</div>

Natürlich wird das DIV-Element in die Ausgabe einbezogen, aber vor allem wird es keine HTML-, HEAD- und BODY-Tags geben.

Über Partials

Teilvorlagen erlauben auch die Verwendung von Abschnitten - und das können Sie zu Ihrem Vorteil nutzen, wenn Sie die XSD-Funktionen im Inneren haben möchten eine Teilvorlage (d.h. ohne Abschnitte, die Sie normalerweise nicht ohne zusätzliche Ausgaben, wie beschrieben, ausgeben können oben). Konstruieren Sie einfach Ihre Teilvorlage so, dass sie nur einen Abschnitt enthält, und rendern Sie den Abschnitt dann immer dann, wenn Sie rendert den Teil:

<f:render partial="MyPartial" section="Main" />

Und konstruiere die Teilvorlage selbst als solche:

{namespace v=FluidTYPO3\Vhs\ViewHelpers}}
<?xml version="1.0" encoding="UTF-8" ?>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en"
      xmlns:v="http://typo3.org/ns/FluidTYPO3/Vhs/ViewHelpers"
      xmlns:f="http://typo3.org/ns/TYPO3/Fluid/ViewHelpers">
    <head>
        <title>Partials: MyPartial</Titel>
    </head>
    <body>
        <f:section name="Main">
            <!-- Fluid geht hier hin -->
        </f:section>
    </body>
</html>

Obwohl es die Komplexität jeder Vorlage erhöht, kann der Nutzen der automatischen Vervollständigung - insbesondere bei Attributen - überwiegen der Bedarf an viel zusätzlichem HTML in Ihren Vorlagen. Es macht Ihre Teilvorlagen angenehm konform, wenn man sie direkt als HTML in einem Browser, wenn Sie die Gewohnheit haben, diese Art der Vorschau zu verwenden.

Über Layouts

Dies ist der Nachteil: Wenn Ihre IDE die nicht standardmäßige Verwendung von xmlns: Definitionen nicht unterstützt, sind Sie gezwungen, das HTML-Tag zu verwenden oder ohne XSD-Unterstützung in Ihren Layoutdateien leben. Der Grund dafür ist natürlich, dass weder Extbase noch TYPO3 selbst HTML und HTML erwarten BODY-Tags können von beliebigen Seiten- oder Erweiterungsvorlagen ausgegeben werden - und natürlich können Sie keine Abschnitte in einem Layout verwenden.

Wahrscheinlich werden Sie die XSD-Funktionen in Ihren Layouts einfach ignorieren wollen, um sie besser mit dem TYPO3-Kern kompatibel zu machen.

Hinweis zu TYPO3 4.5 LTS

Obwohl es unter TYPO3 4.5 möglich ist, XSD-Dateien zu erzeugen, ist es nicht möglich, die oben genannten Befehle zu verwenden. Eine CLI-Implementierung kompatibel mit 4.5 war nicht enthalten, da dies die Komplexität dieser extrem einfachen Erweiterung stark erhöhen würde. Du kannst xSD-Dateien erstellen, indem Sie den SchemaService einfügen und mit ein paar Argumenten aufrufen:

/**
 * @var Tx_Schemaker_Service_SchemaService
 */
geschützter $schemaService;

/**
 * @param Tx_Schemaker_Service_Schema $schemaService
 * @return void
 */
öffentliche Funktion injectSchemaService(Tx_Schemaker_Service_SchemaService $schemaService) {
    $this->schemaService = $schemaService;
}

/**
 * @return void
 */
öffentliche Funktion generateXsdAction() {) {
        $extensionKey ='my_extkey';
        $xsdNamespace ='http://my.domain/namespace';
        $xsdSchema = $this->schemaService->generateXsd($extensionKey, $xsdNamespace);
            // Optional: Verwenden Sie die PHP Tidy-Erweiterung, um die XML-Ausgabe ein wenig zu formatieren
        $xsdSchema = tidy_repair_string($xsdSchema, array(
            output-xml' => TRUE,
            input-xml' => TRUE
        ));
        file_put_contents('/path/to/file.xsd', $xsdSchema);
}

Sie müssen den Dienst nicht injizieren, um ihn nutzen zu können - aber er muss mit dem ObjectManager von Extbase erstellt werden.

Vorgeschlagene Namensräume und Aliase

<?xml version="1.0" encoding="UTF-8" ?>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en"
      xmlns:f="http://typo3.org/ns/TYPO3/Fluid/ViewHelpers"
      xmlns:flux="http://typo3.org/ns/FluidTYPO3/Flux/ViewHelpers"
      xmlns:v="http://typo3.org/ns/FluidTYPO3/Vhs/ViewHelpers"
      xmlns:w="http://typo3.org/ns/fluidwidget"
    />

Hinweis: Die folgenden Schemata stehen zum Download bereit (verwenden Sie "Seite speichern unter"):

Diese Schemata gelten alle für die neuesten Master-Versionen der ViewHelpers jeder Erweiterung - wenn Sie eine XSD für eine frühere Version benötigen version, die Sie aktuell installiert haben, generieren Sie einfach eine XSD aus dieser TYPO3-Installation und verwenden Sie die gleiche Namensraum-URL.

Benötigen Sie schnelle Hilfe mit dieser Extension? Unser Team von erfahrenen TYPO3-Entwicklern löst Probleme unkompliziert und zum Stundensatz.

Verteilung:SCHEMAKER ist auf

0 % aller TYPO3 installiert.

  • 0.02 % aller TYPO3 8.7.x Installationen installiert

Aktualität:SCHEMAKER ist auf dem neusten Stand (v.3.2.0) bei

100 % aller TYPO3 Installationen

  • 0 % aller TYPO3 9.5.x Installationen
  • 0 % aller TYPO3 9.3.x Installationen
  • 0 % aller TYPO3 9.2.x Installationen
  • 0.02 % aller TYPO3 8.7.x Installationen
  • 0 % aller TYPO3 7.6.x Installationen
  • 0 % aller TYPO3 7.5.x Installationen
  • 0 % aller TYPO3 7.4.x Installationen
  • 0 % aller TYPO3 7.3.x Installationen
  • 0 % aller TYPO3 7.2.x Installationen
  • 0 % aller TYPO3 7.1.x Installationen
  • 0 % aller TYPO3 7.0.x Installationen
  • 0 % aller TYPO3 6.2.x Installationen
  • 0 % aller TYPO3 6.1.x Installationen
  • 0 % aller TYPO3 6.0.x Installationen
  • 0 % aller TYPO3 5.0.x Installationen
  • 0 % aller TYPO3 4.7.x Installationen
  • 0 % aller TYPO3 4.6.x Installationen
  • 0 % aller TYPO3 4.5.x Installationen
  • 0 % aller TYPO3 4.4.x Installationen
  • 0 % aller TYPO3 4.3.x Installationen
  • 0 % aller TYPO3 4.2.x Installationen
  • 0 % aller TYPO3 4.1.x Installationen
  • 0 % aller TYPO3 4.0.x Installationen
  • 0 % aller TYPO3 3.5.x Installationen

SCHEMAKER Version:Verteilung nach installierten Versionen

  • 100 % SCHEMAKER v.3.2.0

Gosign-Responsive Index: TYPO3 Installationen nutzen SCHEMAKER zu

  • 0 % wenn der Gosign-Responsive-Index zwischen 80 % und 100 % ist
  • 100 % wenn der Gosign-Responsive-Index zwischen 60 % und 80 % ist
  • 0 % wenn der Gosign-Responsive-Index zwischen 40 % und 60 % ist
  • 0 % wenn der Gosign-Responsive-Index zwischen 20 % und 40 % ist
  • 0 % wenn der Gosign-Responsive-Index zwischen 0 % und 20 % ist

Pagespeed: TYPO3 Installationen nutzen SCHEMAKER zu

  • 0 % wenn der Pagespeed zwischen 80 % und 100 % ist
  • 0 % wenn der Pagespeed zwischen 60 % und 80 % ist
  • 0 % wenn der Pagespeed zwischen 40 % und 60 % ist
  • 0 % wenn der Pagespeed zwischen 20 % und 40 % ist
  • 100 % wenn der Pagespeed zwischen 0 % und 20 % ist


Stichprobe n=36801 von Gosign gecrawlte TYPO3-Seiten mit den Top-Level-Domains <.de/.ch/.at>