English | Deutsch
A Sulu CMS bundle for managing customer testimonials, reviews, and quotes with configurable star ratings.
- Testimonial Management - Create, edit, and publish customer testimonials
- Star Rating System - Configurable 5 or 10 point rating scale with star symbols
- Contact Integration - Link testimonials to Sulu contacts
- Smart Content Provider - Use testimonials in any Sulu page via Smart Content
- Selection Content Types - Single and multiple testimonial selection
- Workflow Support - Draft/Published workflow with versioning
- Multi-language - Full translation support
- SEO & Sitemap - Built-in SEO and sitemap integration
- Search Integration - Admin and website search indexes
- Trash Support - Restore deleted testimonials
- Activity Logging - Track all changes
- uuid - since 1.5.0 (not compatible to previous versions)
- PHP 8.2+
- Sulu CMS 3.0+
- Symfony 6.4+ / 7.0+
composer require manuxi/sulu-testimonials-bundleIf not using Symfony Flex, add to config/bundles.php:
return [
// ...
Manuxi\SuluTestimonialsBundle\SuluTestimonialsBundle::class => ['all' => true],
];Add to config/routes/sulu_admin.yaml:
SuluTestimonialsBundle:
resource: '@SuluTestimonialsBundle/Resources/config/routes_admin.yaml'# Preview changes
php bin/console doctrine:schema:update --dump-sql
# Apply changes
php bin/console doctrine:schema:update --forcecd assets/admin
npm install
npm run buildThe bundle contains JavaScript registrations for its testimonial field types. Importing sulu-testimonials-bundle is optional and is not required for the server-side routes, controllers, or templates.
If SuluAdminExtrasBundle is installed, use its JavaScript registration for the star-rating fields and do not additionally import sulu-testimonials-bundle. Both bundles register the star_rating field under the same key; importing both makes the Sulu Admin stop after login with:
Error: The key "star_rating" has already been used for another field
- Go to Settings β User Roles in Sulu Admin
- Select the appropriate role
- Enable permissions for Testimonials
- Save and reload
Create config/packages/sulu_testimonials.yaml:
sulu_testimonials:
rating:
max_value: 5 # 5 or 10 point scale
default_value: 3 # Default rating for new testimonials
use_star_symbols: true # Show stars in admin dropdown
use_star_widget: false # Use interactive star widget (future)See Configuration Documentation for all options.
Use testimonials in any page template:
<property name="testimonials" type="smart_content">
<meta>
<title lang="en">Testimonials</title>
<title lang="de">Testimonials</title>
</meta>
<params>
<param name="provider" value="testimonials"/>
<param name="max_per_page" value="5"/>
<param name="page_parameter" value="page"/>
</params>
</property>Single testimonial:
<property name="featured_testimonial" type="single_testimonial_selection">
<meta>
<title lang="en">Featured Testimonial</title>
</meta>
</property>Multiple testimonials:
<property name="testimonials" type="testimonial_selection">
<meta>
<title lang="en">Testimonials</title>
</meta>
</property>{% for testimonial in testimonials %}
<div class="testimonial">
<blockquote>{{ testimonial.text|raw }}</blockquote>
{% if testimonial.contact %}
<cite>{{ testimonial.contact.fullName }}</cite>
{% endif %}
{# Rating display - uses global variable #}
{% if testimonial.rating >= 0 %}
{% set maxRating = testimonials_rating_max_value %}
<div class="rating">
{{ testimonial.rating }}/{{ maxRating }}
</div>
{% endif %}
</div>
{% endfor %}If you have SuluTweaksBundle installed, you can enable star rating display in admin lists. See Admin List Documentation.
Contributions are welcome! Please feel free to submit issues or pull requests.
This bundle is released under the MIT License.
