YRewrite Metainfo - Domain Meta-Infos & PWA | Keywords: SEO, OpenGraph, Favicon, Manifest, Meta-Tags, PWA, Icons, YRewrite
Übersicht: Erweitert YRewrite-Domains um umfassende Metainformationen. Bietet vorkonfigurierte Felder für SEO, OpenGraph, Favicons, PWA-Manifeste und Icons. YOrm-basiert mit praktischen Dataset-Methoden für Domain-spezifische Einstellungen.
Kern-Klassen
| Klasse |
Beschreibung |
Domain |
YOrm-Dataset für Domain-Metainformationen (extends rex_yform_manager_dataset) |
Icon |
YOrm-Dataset für Favicon/PWA-Icons (extends rex_yform_manager_dataset) |
Article |
Erweitert rex_article um YRewrite-Metadaten |
Category |
Erweitert rex_category um YRewrite-Metadaten |
YrewriteMetadataTrait |
Trait für YRewrite-Felder (Title, Description, Image, etc.) |
Domain-Methoden
| Methode |
Rückgabe |
Beschreibung |
getCurrent() |
?Domain |
Aktuelle Domain als Dataset |
getCurrentValue($key) |
mixed |
Wert der aktuellen Domain |
getHead() |
string |
Komplettes <head>-Fragment |
getYRewrite() |
?rex_yrewrite_domain |
Original YRewrite-Domain-Objekt |
getName() |
?string |
Website-Titel (og:title) |
getLogo($asMedia) |
mixed |
Logo-Datei |
getType() |
?string |
OpenGraph-Typ (website/article) |
getThumbnail($asMedia) |
mixed |
og:image Thumbnail |
getIcon() |
?Icon |
Zugeordnetes Icon-Profil |
Icon-Methoden (PWA/Favicon)
| Methode |
Rückgabe |
Beschreibung |
getName() |
?string |
Profilname |
getShortName() |
?string |
PWA Kurzname (App-Verknüpfung) |
getDisplay() |
?string |
PWA Browser-UI (standalone/fullscreen) |
getThemeColor() |
?string |
PWA Theme-Farbe (hex) |
getBackgroundColor() |
?string |
PWA Hintergrund-Farbe |
getShortcutIcon($asMedia) |
mixed |
favicon.ico |
getAppleTouchIcon($asMedia) |
mixed |
Apple Touch Icon (180x180) |
getManifest($asMedia) |
mixed |
site.webmanifest Datei |
getFaviconPng96($asMedia) |
mixed |
PNG Favicon 96x96 |
getFaviconSvg($asMedia) |
mixed |
SVG Favicon |
getServiceWorker() |
?string |
Service Worker JS-Datei |
Article/Category-Methoden (Trait)
| Methode |
Rückgabe |
Beschreibung |
getYrewriteTitle() |
?string |
SEO-Titel |
getYrewriteDescription() |
?string |
SEO-Beschreibung |
getYrewriteImage($asMedia) |
mixed |
SEO-Bild |
getYrewriteUrlType() |
?string |
URL-Typ (auto/custom/redirection) |
getYrewriteUrl() |
?string |
Custom URL |
getYrewriteRedirection() |
?string |
Weiterleitungs-URL |
getYrewriteChangefreq() |
?string |
Sitemap Changefreq |
getYrewritePriority() |
?string |
Sitemap Priority (0.0-1.0) |
getYrewriteIndex() |
?int |
Noindex-Flag (0/1) |
getYrewriteCanonicalUrl() |
?string |
Canonical URL |
Standard-Felder (Domain)
| Feld |
Typ |
Beschreibung |
yrewrite_domain_id |
int |
Verknüpfung zu YRewrite-Domain |
name |
varchar |
Website-Titel |
logo |
text |
Logo-Datei (Medienpool) |
type |
varchar |
OpenGraph-Typ (website) |
thumbnail |
text |
og:image Bild |
icon |
int |
Verknüpfung zu Icon-Profil |
Standard-Felder (Icon)
| Feld |
Typ |
Beschreibung |
name |
varchar |
Profilname |
short_name |
varchar |
PWA Kurzname |
display |
varchar |
PWA Display-Modus |
theme_color |
varchar |
PWA Theme-Farbe (#hex) |
background_color |
varchar |
PWA Hintergrund-Farbe |
shortcut_icon |
text |
favicon.ico |
apple_touch_icon |
text |
apple-touch-icon.png |
manifest |
text |
site.webmanifest |
favicon_png_96 |
text |
favicon-96x96.png |
favicon_svg |
text |
favicon.svg |
serviceworker |
varchar |
Service Worker JS |
Praxisbeispiele
Beispiel 1: Head-Fragment im Template einbinden
// Im Template-Header
use Alexplusde\YrewriteMetainfo\Domain;
echo Domain::getHead();
Beispiel 2: Aktuelle Domain abrufen
use Alexplusde\YrewriteMetainfo\Domain;
$domain = Domain::getCurrent();
if ($domain) {
echo 'Website: ' . $domain->getName();
echo '<br>Logo: ' . $domain->getLogo();
}
Beispiel 3: Domain-Wert direkt abrufen
use Alexplusde\YrewriteMetainfo\Domain;
// Ohne Domain-Objekt
$siteName = Domain::getCurrentValue('name');
echo 'Website: ' . $siteName;
Beispiel 4: Original YRewrite-Domain abrufen
$domain = Domain::getCurrent();
$yrewriteDomain = $domain->getYRewrite();
echo 'Domain: ' . $yrewriteDomain->getName();
echo '<br>URL: ' . $yrewriteDomain->getUrl();
Beispiel 5: Logo im Template ausgeben
$domain = Domain::getCurrent();
$logo = $domain->getLogo(true); // Als rex_media
if ($logo) {
echo '<img src="' . rex_url::media($logo->getFileName()) . '" alt="' . $domain->getName() . '">';
}
Beispiel 6: OpenGraph Thumbnail
$domain = Domain::getCurrent();
$thumbnail = $domain->getThumbnail(true);
if ($thumbnail) {
echo '<meta property="og:image" content="' . rex_url::media($thumbnail->getFileName()) . '">';
}
Beispiel 7: Icon-Profil abrufen
use Alexplusde\YrewriteMetainfo\Icon;
$domain = Domain::getCurrent();
$icon = $domain->getIcon();
if ($icon) {
echo 'Icon-Profil: ' . $icon->getName();
echo '<br>Theme-Farbe: ' . $icon->getThemeColor();
}
Beispiel 8: PWA-Manifest ausgeben
$icon = $domain->getIcon();
if ($icon && $icon->getManifest()) {
echo '<link rel="manifest" href="' . rex_url::media($icon->getManifest()) . '">';
}
Beispiel 9: Favicon-Set ausgeben
$icon = $domain->getIcon();
if ($icon) {
// ICO Favicon
if ($icon->getShortcutIcon()) {
echo '<link rel="shortcut icon" href="' . rex_url::media($icon->getShortcutIcon()) . '">';
}
// PNG Favicon
if ($icon->getFaviconPng96()) {
echo '<link rel="icon" type="image/png" sizes="96x96" href="' . rex_url::media($icon->getFaviconPng96()) . '">';
}
// SVG Favicon
if ($icon->getFaviconSvg()) {
echo '<link rel="icon" type="image/svg+xml" href="' . rex_url::media($icon->getFaviconSvg()) . '">';
}
}
Beispiel 10: Apple Touch Icon
$icon = $domain->getIcon();
if ($icon && $icon->getAppleTouchIcon()) {
echo '<link rel="apple-touch-icon" sizes="180x180" href="' . rex_url::media($icon->getAppleTouchIcon()) . '">';
}
Beispiel 11: PWA Theme-Color
$icon = $domain->getIcon();
if ($icon && $icon->getThemeColor()) {
echo '<meta name="theme-color" content="' . $icon->getThemeColor() . '">';
}
Beispiel 12: Service Worker registrieren
$icon = $domain->getIcon();
if ($icon && $icon->getServiceWorker() && $icon->getServiceWorkerUrl()) {
?>
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('<?= $icon->getServiceWorkerUrl() ?>');
}
</script>
<?php
}
Beispiel 13: Article mit YRewrite-Metadaten
use Alexplusde\YrewriteMetainfo\Article;
$article = Article::get($articleId);
echo '<title>' . $article->getYrewriteTitle() . '</title>';
echo '<meta name="description" content="' . $article->getYrewriteDescription() . '">';
$image = $article->getYrewriteImage(true);
if ($image) {
echo '<meta property="og:image" content="' . rex_url::media($image->getFileName()) . '">';
}
use Alexplusde\YrewriteMetainfo\Category;
$category = Category::get($categoryId);
echo 'SEO-Titel: ' . $category->getYrewriteTitle();
echo '<br>Beschreibung: ' . $category->getYrewriteDescription();
Beispiel 15: Sitemap-Einstellungen
$article = Article::get($articleId);
echo 'Changefreq: ' . $article->getYrewriteChangefreq(); // daily, weekly, monthly
echo '<br>Priority: ' . $article->getYrewritePriority(); // 0.0 - 1.0
echo '<br>Index: ' . ($article->getYrewriteIndex() ? 'index' : 'noindex');
Beispiel 16: Canonical URL
$article = Article::get($articleId);
$canonical = $article->getYrewriteCanonicalUrl();
if ($canonical) {
echo '<link rel="canonical" href="' . $canonical . '">';
} else {
// Fallback: Aktuelle URL
echo '<link rel="canonical" href="' . rex_yrewrite::getFullPath() . '">';
}
Beispiel 17: Custom URL / Redirection
$article = Article::get($articleId);
$urlType = $article->getYrewriteUrlType();
if ($urlType == 'custom') {
$customUrl = $article->getYrewriteUrl();
echo 'Custom URL: ' . $customUrl;
} elseif ($urlType == 'redirection') {
$redirectUrl = $article->getYrewriteRedirection();
echo 'Weiterleitung zu: ' . $redirectUrl;
}
Beispiel 18: Domain-Daten in YForm-Formular
// In einem YForm-Modul
$domain = Domain::getCurrent();
// Hidden-Field mit Domain-Name vorbelegen
value|be_hidden|site_name|<?= $domain->getName() ?>
Beispiel 19: Multi-Domain-Unterscheidung
$domain = Domain::getCurrent();
$yrewriteDomain = $domain->getYRewrite();
if ($yrewriteDomain->getHost() == 'www.example.com') {
// Domain-spezifische Logik
echo 'Hauptdomain';
} elseif ($yrewriteDomain->getHost() == 'shop.example.com') {
echo 'Shop-Domain';
}
Beispiel 20: Icon-Profil mehreren Domains zuordnen
// Im Backend unter YRewrite > Icons und PWA-Profile
// Ein Icon-Profil kann mehreren Domains zugeordnet werden
// Code-Beispiel: Domain mit Icon verknüpfen
$domain = Domain::get($domainId);
$domain->setIcon($iconId);
$domain->save();
Beispiel 21: RealFavicon-Generator ZIP hochladen
Im Backend unter YRewrite > Icons und PWA-Profile:
- ZIP von RealFaviconGenerator erstellen
- Im Backend hochladen
- Medienpool-Kategorie wählen (oder neue erstellen)
- Icons werden automatisch importiert und zugeordnet
// Automatische Zuordnung:
// - favicon.ico → shortcut_icon
// - apple-touch-icon.png → apple_touch_icon
// - site.webmanifest → manifest
// - favicon-96x96.png → favicon_png_96
// - favicon.svg → favicon_svg
Beispiel 22: PWA Display-Modi
$icon = $domain->getIcon();
$display = $icon->getDisplay();
// Mögliche Werte:
// - fullscreen: Vollbild ohne Browser-UI
// - standalone: Wie native App (Standard)
// - minimal-ui: Minimale Browser-UI
// - browser: Normaler Browser
echo '<meta name="mobile-web-app-capable" content="yes">';
Beispiel 23: Debug-Favicon bei aktiviertem Debug-Modus
// In config.yml
yrewrite_metainfo:
show_debug_favicon: true
// Zeigt Warn-Favicon wenn:
// - rex::isDebugMode() aktiv
// - PHPMailer debug aktiviert
// Automatisch im head.php Fragment integriert
Beispiel 24: Custom Head-Fragment
// fragments/yrewrite_metainfo/head.php im project-Addon erstellen
use Alexplusde\YrewriteMetainfo\Domain;
use Alexplusde\YrewriteMetainfo\Icon;
$domain = Domain::getCurrent();
$seo = new rex_yrewrite_seo();
if ($domain) {
// Eigene Meta-Tags
echo '<meta name="author" content="' . $domain->getValue('author') . '">';
// Standard-Tags
echo $seo->getTags();
// Icons
$icon = $domain->getIcon();
if ($icon) {
echo '<link rel="manifest" href="' . $icon->getManifestUrl() . '">';
}
}
Beispiel 25: YOrm Query für alle Domains
use Alexplusde\YrewriteMetainfo\Domain;
// Alle Domains
$domains = Domain::query()->find();
foreach ($domains as $domain) {
echo $domain->getName() . ' (' . $domain->getYRewrite()->getHost() . ')<br>';
}
// Domain nach YRewrite-ID
$domain = Domain::query()
->where('yrewrite_domain_id', 2)
->findOne();
Beispiel 26: Icon-Profil erstellen
use Alexplusde\YrewriteMetainfo\Icon;
$icon = Icon::create();
$icon->setName('Hauptprofil');
$icon->setShortName('MeineSite');
$icon->setDisplay('standalone');
$icon->setThemeColor('#0066cc');
$icon->setBackgroundColor('#ffffff');
$icon->setShortcutIcon('favicon.ico');
$icon->setAppleTouchIcon('apple-touch-icon.png');
$icon->setManifest('site.webmanifest');
$icon->save();
echo 'Icon-Profil erstellt mit ID: ' . $icon->getId();
Beispiel 27: Domain-Metadaten setzen
$domain = Domain::get($domainId);
$domain->setName('Meine Website');
$domain->setType('website');
$domain->setLogo('logo.svg');
$domain->setThumbnail('og-image.jpg');
$domain->setIcon(1); // Icon-Profil ID
$domain->save();
Beispiel 28: Article-Metadaten programmatisch setzen
use Alexplusde\YrewriteMetainfo\Article;
$article = Article::get($articleId);
$article->setYrewriteTitle('SEO-optimierter Titel');
$article->setYrewriteDescription('Detaillierte Meta-Beschreibung für Suchmaschinen');
$article->setYrewriteImage('article-image.jpg');
$article->setYrewriteChangefreq('weekly');
$article->setYrewritePriority('0.8');
$article->save();
Beispiel 29: Integration mit speed_up Addon
// Automatisch im head.php Fragment integriert
if (class_exists('speed_up')) {
$speed_up = new speed_up();
$speed_up->show();
}
// Preload/Prefetch/DNS-Prefetch für bessere Performance
Beispiel 30: Integration mit wenns_sein_muss (Cookie-Consent)
// Automatisch im head.php Fragment
use Alexplusde\Wsm\Fragment;
if (rex_addon::get('wenns_sein_muss')->isAvailable()) {
echo Fragment::getCss();
echo Fragment::getScripts();
echo Fragment::getJs();
}
// Cookie-Consent-Banner wird automatisch eingebunden
Integration: YRewrite (Domain-Verwaltung), YForm (Datenverwaltung), YOrm (Dataset-Methoden), Medienpool (Favicon/Logo), RealFaviconGenerator (Icon-Import), Speed_up (Performance), Wenns_sein_muss (Cookie-Consent), URL-Addon (Custom URLs), Service Worker (PWA), OpenGraph (Social Media), Schema.org (Structured Data)