A Shopware 6 plugin for adding FAQ (Frequently Asked Questions) functionality to products.
- ✅ Product FAQ Integration - Add Q&A entries to any product
- ✅ Frontend Display - Clean, simple FAQ display on product pages
- ✅ Schema.org SEO - Automatic JSON-LD markup for Google rich snippets
- ✅ Multi-language Support - Translations for FAQ titles
- ✅ CLI Management - Easy command-line tools for FAQ management
- ✅ Position Ordering - Control the order of FAQ entries
- ✅ Active/Inactive - Show/hide FAQ entries as needed
-
Copy the plugin to your Shopware 6 installation:
custom/plugins/RevinnersFaq/
-
Install and activate the plugin:
bin/console plugin:refresh bin/console plugin:install --activate RevinnersFaq bin/console cache:clear
-
Run database migrations (happens automatically during installation)
The plugin provides convenient CLI commands for managing FAQ entries:
# List active FAQs for a product
bin/console revinners:faq:list SW10000
# List all FAQs (including inactive)
bin/console revinners:faq:list SW10000 --all
# Get JSON output
bin/console revinners:faq:list SW10000 --json# Add FAQ with auto-position
bin/console revinners:faq:add SW10000 "Question text?" "Answer text"
# Add FAQ with specific position
bin/console revinners:faq:add SW10000 "Question?" "Answer" --position=1
# Add inactive FAQ
bin/console revinners:faq:add SW10000 "Question?" "Answer" --inactive# Update question only
bin/console revinners:faq:update 29bb2fc3 --question="New question?"
# Update answer
bin/console revinners:faq:update 29bb2fc3 --answer="New answer"
# Update position
bin/console revinners:faq:update 29bb2fc3 --position=5
# Set as active/inactive
bin/console revinners:faq:update 29bb2fc3 --active
bin/console revinners:faq:update 29bb2fc3 --inactive
# Update multiple fields at once
bin/console revinners:faq:update 29bb2fc3 --question="New Q?" --answer="New A" --position=1# Delete with confirmation
bin/console revinners:faq:delete 29bb2fc3
# Force delete without confirmation
bin/console revinners:faq:delete 29bb2fc3 --forceCommands support multiple ways to identify products:
- UUID:
0198f295d0c67b77b69e4b26c02c7ea5 - Product Number:
SW10000 - GTIN/EAN: If set in product data
The plugin creates a revinners_product_faq table:
CREATE TABLE `revinners_product_faq` (
`id` BINARY(16) NOT NULL,
`product_id` BINARY(16) NOT NULL,
`question` TEXT NOT NULL,
`answer` TEXT NOT NULL,
`position` INT(11) NOT NULL DEFAULT 0,
`active` TINYINT(1) NOT NULL DEFAULT 1,
`created_at` DATETIME(3) NOT NULL,
`updated_at` DATETIME(3),
PRIMARY KEY (`id`),
CONSTRAINT `fk.revinners_product_faq.product_id`
FOREIGN KEY (`product_id`) REFERENCES `product` (`id`)
ON DELETE CASCADE ON UPDATE CASCADE
);FAQs are automatically displayed on product detail pages in a simple format:
<div class="qa__section">
<h3>Frequently Asked Questions</h3>
<div class="qa__item">
<div class="qa__answer">
<div class="qa__question">Question text?</div>
<p>Answer text.</p>
</div>
</div>
<!-- More FAQ items -->
</div>The plugin automatically generates Schema.org JSON-LD markup:
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Question text?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Answer text."
}
}
]
}The plugin uses minimal CSS classes that you can customize:
.qa__section {
// Main FAQ wrapper
}
.qa__item {
// Individual FAQ item
}
.qa__question {
// Question styling (bold by default)
}
.qa__answer p {
// Answer paragraph styling
}You can also manage FAQs directly via SQL:
-- Add FAQ entry
INSERT INTO revinners_product_faq
(id, product_id, question, answer, position, active, created_at)
VALUES
(UNHEX(REPLACE(UUID(), '-', '')),
UNHEX('0198f295d0c67b77b69e4b26c02c7ea5'),
'Your question?',
'Your answer.',
1, 1, NOW());The plugin supports multiple languages. Add translations in:
src/Resources/snippet/en_GB/storefront.en-GB.jsonsrc/Resources/snippet/pl_PL/storefront.pl-PL.json
Current translation keys:
revinners-faq.product.faqTitle: FAQ section title
src/
├── Command/ # CLI commands
│ ├── FaqAddCommand.php
│ ├── FaqListCommand.php
│ ├── FaqDeleteCommand.php
│ └── FaqUpdateCommand.php
├── Core/Content/ProductFaq/ # Entity layer
│ ├── ProductFaqDefinition.php
│ ├── ProductFaqEntity.php
│ └── ProductFaqCollection.php
├── Extension/Content/Product/ # Product entity extension
│ └── ProductExtension.php
├── Migration/ # Database migrations
│ └── Migration1724854800ProductFaq.php
├── Resources/
│ ├── config/services.xml # Service definitions
│ ├── snippet/ # Translations
│ └── views/storefront/ # Twig templates
├── Twig/ # Twig functions
│ └── FaqExtension.php
└── RevinnersFaq.php # Main plugin class
The plugin is designed to be easily extendable:
- Custom FAQ Types: Extend the entity definition
- Admin Interface: Create administration module
- API Integration: Use existing repositories
- Custom Display: Override Twig templates
- Shopware 6.7+
- PHP 8.1+
- MySQL 5.7+
MIT License
Revinners sp. z o. o.
For support and bug reports, please contact the development team or create an issue in the project repository.