Display YouTube videos and WordPress articles on your PrestaShop store.
🔗 Live Demo - See it in action on demo.axelweb.fr
- YouTube videos: Automatically fetches title and thumbnail via oEmbed API (no API key required)
- WordPress articles: Extracts metadata from Open Graph tags (title, description, thumbnail)
- Front-office display: Modern card-based grid layout
- Metadata refresh: One-click button to update metadata without editing
- Active/inactive status: Toggle visibility per item
- Drag-free positioning: Items ordered by position field
awcontentfeed/
├── awcontentfeed.php # Main module file
├── composer.json # PSR-4 autoload configuration
├── config/
│ ├── routes.yml # Symfony routes
│ └── services.yml # Dependency injection
├── sql/
│ ├── install.php # Database table creation
│ └── uninstall.php # Database table cleanup
├── src/
│ ├── Controller/
│ │ └── AwContentFeedController.php
│ ├── Form/
│ │ ├── ContentFeedItemFormType.php
│ │ └── ContentFeedItemFormDataProvider.php
│ ├── Repository/
│ │ └── ContentFeedItemRepository.php
│ └── Service/
│ └── MetadataFetcherService.php
└── views/
├── css/
│ └── awcontentfeed.css # Front-office styles
├── js/admin/
│ └── configuration.js # Back-office interactions
└── templates/
├── admin/
│ └── configuration.html.twig
└── hook/
└── contentfeed.tpl
- Copy the
awcontentfeedfolder to/modules/ - Run
composer dump-autoloadin the module directory - Install the module from PrestaShop back-office
- The module automatically creates the
ps_awcontentfeed_itemtable
The module uses a dedicated table (ps_awcontentfeed_item) instead of ps_configuration:
| Field | Type | Description |
|---|---|---|
id_awcontentfeed_item |
INT | Primary key |
type |
ENUM | youtube or wordpress |
url |
VARCHAR(500) | Content URL |
title |
VARCHAR(255) | Fetched title |
description |
TEXT | Fetched description |
thumbnail |
VARCHAR(500) | Fetched thumbnail URL |
position |
INT | Display order |
active |
TINYINT | Visibility status |
date_add / date_upd |
DATETIME | Timestamps |
Back-office: Modules → Content Feed
- Select type (YouTube or WordPress)
- Enter URL
- Toggle active status
- Save → Metadata is automatically fetched
- Edit: Modify content and re-fetch metadata
- Refresh 🔄: Re-fetch metadata without editing (useful when source content is updated)
- Toggle: Enable/disable display
- Delete: Remove item
Default hook: displayHome
The module implements the WidgetInterface and can be used in any hook via:
{hook h='displayHome' mod='awcontentfeed'}- Responsive grid: 1 col (mobile) → 2 cols (tablet) → 3 cols (desktop)
- Bootstrap 5 cards with hover effects
- Clickable cards (entire card is a link)
- Type badges (YouTube red, WordPress blue)
- Lazy-loaded images
Built for: Hummingbird theme (Bootstrap 5)
For other themes:
- Edit
views/css/awcontentfeed.cssfor custom styling - Edit
views/templates/hook/contentfeed.tplfor markup changes
- API: oEmbed (no key required)
- Data: Title, thumbnail (maxresdefault)
- Description: Not available via oEmbed (set to
null)
- Method: HTML parsing + Open Graph tags
- Data:
og:title,og:description,og:image - Fallback: Standard meta tags if OG not found
Use when source content changes:
- Video title updated on YouTube
- Article thumbnail changed on WordPress
- One-click re-fetch without re-entering URL
- PrestaShop: 8.x compatible (min 1.7.8.0)
- PHP: ≥ 7.4
- Symfony: Forms, routes, services
- Translation: New system (domain-based)
- JavaScript: Vanilla (no jQuery), ES6 syntax
- CSS: Custom + Bootstrap 5 classes
Academic Free License 3.0 (AFL-3.0)
Axelweb - contact@axelweb.fr

