alengo/sulu-translated-media-bundle
最新稳定版本:3.0.3
Composer 安装命令:
composer require alengo/sulu-translated-media-bundle
包简介
SEO-friendly translated media filenames for Sulu CMS
README 文档
README
SEO-friendly translated media filenames for Sulu CMS 3.x.
Serves media files under locale-specific SEO filenames (e.g. /uploads/red-shoes-de.jpg) while keeping the original file stored under its original name. Includes an "Additional Data" admin tab with locale-aware title, description, and SEO filename fields — plus optional boolean flags (verifyDownload, aiGenerated).
Features
- Translated filenames — per-locale
seoFilename,title,descriptioninme_media_translations - Built-in Media entity — ready-to-use
Mediaentity extending Sulu's base; no project entity required - TranslatedFormatManager — replaces Sulu's default FormatManager via compiler pass
- Twig functions —
sulu_translated_media_url()/sulu_translated_media_urls()with WebP support - Admin tab — "Additional Data" tab auto-registered in the Sulu Media admin
- Zero-config —
sulu_media.objects.media.modelandsulu_adminresources are auto-configured
Requirements
- PHP 8.2+
- Sulu CMS ~3.0
- Symfony 7.x
Installation
composer require alengo/sulu-translated-media-bundle
Register the bundle in config/bundles.php:
Alengo\SuluTranslatedMediaBundle\TranslatedMediaBundle::class => ['all' => true],
Import the admin API routes in config/routes/sulu_admin.yaml:
TranslatedMediaBundle: resource: "@TranslatedMediaBundle/Resources/config/routing_admin_api.yaml" prefix: /admin/api
Run a database migration or schema update to create the me_media_translations table:
bin/adminconsole doctrine:schema:update --force
That's it — no further configuration required.
Twig Usage
{# Single URL with translated filename #} {{ sulu_translated_media_url(media, '800x', app.request.locale) }} {# With explicit format override #} {{ sulu_translated_media_url(media, '800x', 'de', 'webp') }} {# All format URLs (default + WebP) for use in <picture> / srcset #} {% set urls = sulu_translated_media_urls(media, '800x', app.request.locale) %} <picture> <source srcset="{{ urls.webp }}" type="image/webp"> <img src="{{ urls.default }}"> </picture>
Provided Models
| Class | Purpose |
|---|---|
Entity\Media |
Concrete Doctrine entity (me_media) — use directly or extend |
Entity\MediaTranslations |
Locale rows in me_media_translations |
Model\MediaTranslationsAwareInterface + MediaTranslationsTrait |
Locale fields: title, description, seoFilename |
Model\MediaAdditionalDataInterface + MediaAdditionalDataTrait |
Boolean flags: verifyDownload, aiGenerated |
统计信息
- 总下载量: 25
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 2
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-04-05