chore: remove local issue files (now tracked in Gitea)
Universal: Cascade Main → Dev / Cascade main → branches (push) Successful in 4s
Universal: Cascade Main → Dev / Cascade main → branches (push) Successful in 4s
Authored-by: Moko Consulting Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,28 +0,0 @@
|
||||
---
|
||||
title: "[FEATURE] Batch Processing — Generate OG Tags for All Existing Articles"
|
||||
labels: "enhancement, priority: high"
|
||||
milestone: "v01.01"
|
||||
---
|
||||
|
||||
## Feature Description
|
||||
Add batch processing capability to generate or regenerate Open Graph tags for all existing articles in bulk, rather than requiring manual editing of each article.
|
||||
|
||||
## Problem or Use Case
|
||||
When MokoOpenGraph is installed on an existing site with hundreds of articles, each article needs OG tags. Manually editing each one is impractical. Tagz Pro offers this as a premium feature — we should include it in the base package.
|
||||
|
||||
## Proposed Solution
|
||||
Add a "Batch Generate" toolbar button to the com_mokoog admin view that:
|
||||
1. Scans all published articles in `#__content`
|
||||
2. For each article without existing OG data in `#__mokoog_tags`, auto-generates:
|
||||
- `og_title` from article title
|
||||
- `og_description` from meta description or intro text (first 160 chars)
|
||||
- `og_image` from full-text image or intro image
|
||||
3. Shows a progress bar during processing
|
||||
4. Reports how many records were created/skipped
|
||||
|
||||
## Implementation Details
|
||||
- New `Controller/BatchController.php` with `generate()` action
|
||||
- New `Model/BatchModel.php` for bulk operations
|
||||
- AJAX endpoint for progress reporting (avoid PHP timeout on large sites)
|
||||
- Process in chunks of 50 articles per request
|
||||
- Add batch button to `View/Tags/HtmlView.php` toolbar
|
||||
@@ -1,25 +0,0 @@
|
||||
---
|
||||
title: "[FEATURE] Automatic OG Image Resizing and Optimization"
|
||||
labels: "enhancement, priority: high"
|
||||
milestone: "v01.01"
|
||||
---
|
||||
|
||||
## Feature Description
|
||||
Automatically resize and optimize images to meet Open Graph recommended dimensions (1200x630px) when an image is selected as the OG image.
|
||||
|
||||
## Problem or Use Case
|
||||
Social platforms have specific image size requirements for optimal sharing previews. Facebook recommends 1200x630px, Twitter recommends 1200x628px. Most article images are not this exact size, leading to cropped or poorly-displayed sharing previews.
|
||||
|
||||
## Proposed Solution
|
||||
When an OG image is saved (either manually or auto-generated):
|
||||
1. Check if the image meets minimum dimensions (600x315px)
|
||||
2. Generate an optimized copy at 1200x630px in `images/mokoog/generated/`
|
||||
3. Use the resized copy for the OG meta tag, keep the original untouched
|
||||
4. Support configurable target dimensions in plugin settings
|
||||
5. Use GD or Imagick (whatever Joomla has available)
|
||||
|
||||
## Implementation Details
|
||||
- New `Helper/ImageHelper.php` in `plg_system_mokoog` for image processing
|
||||
- Store generated image path in `#__mokoog_tags.og_image_generated` column
|
||||
- Add plugin config options: target width, target height, quality (JPEG), fit mode (crop/contain)
|
||||
- Clean up generated images when OG record is deleted
|
||||
@@ -1,26 +0,0 @@
|
||||
---
|
||||
title: "[FEATURE] Live Social Sharing Preview in Article Editor"
|
||||
labels: "enhancement, priority: medium"
|
||||
milestone: "v01.02"
|
||||
---
|
||||
|
||||
## Feature Description
|
||||
Show a real-time preview of how the article will appear when shared on Facebook, Twitter/X, and LinkedIn directly in the article editor, alongside the OG fields.
|
||||
|
||||
## Problem or Use Case
|
||||
Content editors need to see the visual result of their OG configuration before publishing. Currently they must save, share the URL to a social platform debugger, and iterate. A live preview eliminates this friction.
|
||||
|
||||
## Proposed Solution
|
||||
Add a JavaScript-powered preview panel in the "Open Graph / Social Sharing" fieldset that renders:
|
||||
1. **Facebook preview** — Card with image, title, description, domain
|
||||
2. **Twitter/X preview** — Summary with Large Image card layout
|
||||
3. **LinkedIn preview** — Card with image, title, description, source
|
||||
|
||||
The preview should update in real-time as the user types in the OG fields, with fallback to the article title/description/image when OG fields are empty.
|
||||
|
||||
## Implementation Details
|
||||
- New `media/plg_content_mokoog/js/preview.js` with Web Component or vanilla JS
|
||||
- CSS mockups of each platform's card layout
|
||||
- Listen to `input` events on the OG form fields
|
||||
- Register via `joomla.asset.json` Web Asset Manager
|
||||
- Integrate as a `<div>` below the OG fieldset in `forms/mokoog.xml` via a custom field type
|
||||
@@ -1,22 +0,0 @@
|
||||
---
|
||||
title: "[FEATURE] Category-Level OG Tag Support"
|
||||
labels: "enhancement, priority: medium"
|
||||
milestone: "v01.01"
|
||||
---
|
||||
|
||||
## Feature Description
|
||||
Support custom Open Graph tags for Joomla article categories, so category listing pages have proper social sharing metadata.
|
||||
|
||||
## Problem or Use Case
|
||||
When someone shares a category URL (e.g., `/news`), the OG tags fall back to site defaults because there's no per-category configuration. Category pages are high-traffic landing pages that deserve custom social sharing metadata.
|
||||
|
||||
## Proposed Solution
|
||||
1. Add OG fields to the category edit form (via `onContentPrepareForm` for `com_categories.categorycom_content`)
|
||||
2. In the system plugin, detect when the current page is a category view and load category-specific OG data
|
||||
3. Allow category images to be used as OG fallback for articles within that category
|
||||
|
||||
## Implementation Details
|
||||
- Extend `plg_content_mokoog` to hook `com_categories.categorycom_content` form
|
||||
- Extend `plg_system_mokoog` to detect `option=com_content&view=category&id=X`
|
||||
- `content_type` value: `com_content.category`
|
||||
- Add category image fallback chain: Article image → Category OG image → Category image → Site default
|
||||
@@ -1,34 +0,0 @@
|
||||
---
|
||||
title: "[FEATURE] Third-Party Extension Support (VirtueMart, K2, EasyBlog, etc.)"
|
||||
labels: "enhancement, priority: medium"
|
||||
milestone: "v01.02"
|
||||
---
|
||||
|
||||
## Feature Description
|
||||
Support Open Graph tags for popular third-party Joomla extensions, comparable to Tagz which supports VirtueMart, K2, EasyBlog, RSBlog, HikaShop, JoomShopping, RSEvents Pro, JEvents, and more.
|
||||
|
||||
## Problem or Use Case
|
||||
Many Joomla sites use third-party content components. Without support, product pages, event pages, and custom content types won't have proper OG tags.
|
||||
|
||||
## Proposed Solution
|
||||
Create a plugin architecture that allows content type adapters. Each adapter knows how to:
|
||||
1. Detect its component's URLs (via `option` and `view`)
|
||||
2. Extract title, description, and image from its database tables
|
||||
3. Register its form for OG field injection
|
||||
|
||||
Priority adapters (Phase 1):
|
||||
- **VirtueMart** — Product pages (`com_virtuemart`, view `productdetails`)
|
||||
- **K2** — Items (`com_k2`, view `item`)
|
||||
- **HikaShop** — Products (`com_hikashop`, view `product`)
|
||||
|
||||
Phase 2:
|
||||
- **EasyBlog** — Posts
|
||||
- **RSEvents Pro** — Events
|
||||
- **JEvents** — Events
|
||||
- **Phoca Cart** — Products
|
||||
|
||||
## Implementation Details
|
||||
- New `ContentTypeInterface` in com_mokoog with methods: `canHandle()`, `getTitle()`, `getDescription()`, `getImage()`
|
||||
- Each adapter is a separate class under `src/ContentType/`
|
||||
- System plugin checks registered adapters in order until one matches
|
||||
- Adapters auto-register via `services/provider.php` or a discovery mechanism
|
||||
@@ -1,25 +0,0 @@
|
||||
---
|
||||
title: "[FEATURE] Structured Data / JSON-LD Output"
|
||||
labels: "enhancement, priority: medium"
|
||||
milestone: "v01.02"
|
||||
---
|
||||
|
||||
## Feature Description
|
||||
In addition to Open Graph meta tags, generate JSON-LD structured data (`<script type="application/ld+json">`) for improved SEO and rich search results.
|
||||
|
||||
## Problem or Use Case
|
||||
Open Graph is for social sharing, but Google and other search engines primarily use JSON-LD structured data for rich results (breadcrumbs, article info, FAQ, product reviews, etc.). A comprehensive SEO extension should provide both.
|
||||
|
||||
## Proposed Solution
|
||||
Add optional JSON-LD output alongside OG tags:
|
||||
1. **Article** schema — `@type: Article` with headline, datePublished, author, image
|
||||
2. **WebPage** schema — For non-article pages
|
||||
3. **BreadcrumbList** schema — Based on Joomla menu hierarchy
|
||||
4. **Organization** schema — Site-wide, configured in plugin settings
|
||||
5. **Product** schema — When VirtueMart/HikaShop adapter is active
|
||||
|
||||
## Implementation Details
|
||||
- New `JsonLdBuilder` helper class in `plg_system_mokoog`
|
||||
- Output in `onBeforeCompileHead` alongside OG tags
|
||||
- Plugin configuration toggle: Enable/disable JSON-LD per schema type
|
||||
- Validate output against Google's Structured Data Testing Tool format
|
||||
@@ -1,27 +0,0 @@
|
||||
---
|
||||
title: "[FEATURE] OG Image Text Overlay Generator"
|
||||
labels: "enhancement, priority: low"
|
||||
milestone: "v02.00"
|
||||
---
|
||||
|
||||
## Feature Description
|
||||
Generate custom social sharing images by overlaying the article title and branding onto a template image, creating unique, branded share graphics for each article.
|
||||
|
||||
## Problem or Use Case
|
||||
Many sites want each shared article to have a unique, branded preview image with the article title overlaid — similar to how dev.to, Hashnode, and other platforms auto-generate share images. This eliminates the need for manual graphic design per article.
|
||||
|
||||
## Proposed Solution
|
||||
1. Configure a template image (brand background) in plugin settings
|
||||
2. When an article is saved without a custom OG image, auto-generate one:
|
||||
- Start with the template image (1200x630px)
|
||||
- Overlay the article title using GD/Imagick text rendering
|
||||
- Optionally add category name, author, or logo
|
||||
3. Save the generated image to `images/mokoog/generated/`
|
||||
4. Allow per-article override to disable auto-generation
|
||||
|
||||
## Implementation Details
|
||||
- New `ImageGenerator` class using GD or Imagick
|
||||
- Font configuration (TTF/OTF font file, size, color, position)
|
||||
- Text wrapping and truncation for long titles
|
||||
- Template image upload in plugin settings
|
||||
- Consider caching/regeneration on article title change
|
||||
@@ -1,28 +0,0 @@
|
||||
---
|
||||
title: "[FEATURE] SEO Meta Description and Title Tag Management"
|
||||
labels: "enhancement, priority: high"
|
||||
milestone: "v01.01"
|
||||
---
|
||||
|
||||
## Feature Description
|
||||
Extend beyond Open Graph to also manage standard SEO meta tags: `<meta name="description">`, `<title>`, `<meta name="robots">`, and canonical URLs.
|
||||
|
||||
## Problem or Use Case
|
||||
Tagz focuses on OG tags, but site owners also need control over basic SEO tags that Joomla's built-in fields don't fully cover (e.g., character limit enforcement, preview, robots directives per page). Combining OG and SEO in one extension reduces plugin count and provides a unified editing experience.
|
||||
|
||||
## Proposed Solution
|
||||
Add to the article/menu editor fieldset:
|
||||
1. **SEO Title** — Custom `<title>` tag override with character counter (50-60 chars recommended)
|
||||
2. **Meta Description** — With character counter (150-160 chars recommended) and length indicator
|
||||
3. **Robots Directive** — Per-page `noindex`, `nofollow`, `nosnippet` toggles
|
||||
4. **Canonical URL** — Override the canonical URL for this page
|
||||
5. **Focus Keyword** — Informational field for content editors
|
||||
|
||||
Add to the admin component:
|
||||
- SEO audit column showing which articles are missing descriptions or have too-long titles
|
||||
|
||||
## Implementation Details
|
||||
- Extend `forms/mokoog.xml` with new `seo` fieldset
|
||||
- Extend `#__mokoog_tags` with columns: `seo_title`, `meta_description`, `robots`, `canonical_url`
|
||||
- System plugin sets meta tags in `onBeforeCompileHead` (before OG tags)
|
||||
- Add database migration `sql/updates/mysql/01.01.00.sql`
|
||||
@@ -1,27 +0,0 @@
|
||||
---
|
||||
title: "[FEATURE] Social Platform Debugger Quick Links"
|
||||
labels: "enhancement, priority: low"
|
||||
milestone: "v01.02"
|
||||
---
|
||||
|
||||
## Feature Description
|
||||
Add quick-access buttons in the admin tag manager and article editor that open the current page in each social platform's debugger/preview tool.
|
||||
|
||||
## Problem or Use Case
|
||||
After configuring OG tags, editors need to verify them using platform-specific debugger tools. Finding and manually entering URLs into each debugger is tedious.
|
||||
|
||||
## Proposed Solution
|
||||
Add buttons/links that open in a new tab:
|
||||
1. **Facebook Sharing Debugger** — `https://developers.facebook.com/tools/debug/?q={URL}`
|
||||
2. **Twitter/X Card Validator** — `https://cards-dev.twitter.com/validator` (URL pre-filled if possible)
|
||||
3. **LinkedIn Post Inspector** — `https://www.linkedin.com/post-inspector/inspect/{URL}`
|
||||
4. **Google Rich Results Test** — `https://search.google.com/test/rich-results?url={URL}`
|
||||
|
||||
Display these in:
|
||||
- The admin tag list view (per-row action)
|
||||
- The article editor OG fieldset (after the preview panel)
|
||||
|
||||
## Implementation Details
|
||||
- URL resolution: build the frontend URL for the content item using `Route::link('site', ...)`
|
||||
- Simple anchor tags with `target="_blank"` — no backend API integration needed
|
||||
- Add as a custom field type or layout override in `forms/mokoog.xml`
|
||||
@@ -1,27 +0,0 @@
|
||||
---
|
||||
title: "[FEATURE] WhatsApp and Telegram Link Preview Optimization"
|
||||
labels: "enhancement, priority: medium"
|
||||
milestone: "v01.01"
|
||||
---
|
||||
|
||||
## Feature Description
|
||||
Ensure OG tags are optimized for WhatsApp and Telegram link preview rendering, which have specific requirements beyond standard Open Graph.
|
||||
|
||||
## Problem or Use Case
|
||||
WhatsApp and Telegram are major sharing channels. While they read OG tags, they have quirks:
|
||||
- WhatsApp caches aggressively and has specific image size preferences (300x200px minimum)
|
||||
- Telegram supports its own `<meta name="telegram:channel">` tag
|
||||
- Both prefer JPEG images under 300KB for fast loading
|
||||
|
||||
## Proposed Solution
|
||||
1. Validate OG images meet WhatsApp minimum requirements (300x200px, <5MB)
|
||||
2. Add optional image compression for sharing-optimized copies
|
||||
3. Add Telegram channel meta tag configuration
|
||||
4. Document cache-busting strategies for WhatsApp (append `?v=` parameter)
|
||||
5. Show warnings in admin when images don't meet platform requirements
|
||||
|
||||
## Implementation Details
|
||||
- Extend image validation in `ImageHelper`
|
||||
- Add `telegram_channel` to plugin configuration
|
||||
- Output `<meta name="telegram:channel" content="@...">` when configured
|
||||
- Add validation warnings to the admin tag list view
|
||||
@@ -1,25 +0,0 @@
|
||||
---
|
||||
title: "[FEATURE] Multilingual OG Tag Support"
|
||||
labels: "enhancement, priority: medium"
|
||||
milestone: "v01.02"
|
||||
---
|
||||
|
||||
## Feature Description
|
||||
Support per-language OG tags for multilingual Joomla sites using Joomla's built-in language associations.
|
||||
|
||||
## Problem or Use Case
|
||||
Multilingual sites need different OG titles, descriptions, and images for each language version of an article. The `og:locale` and `og:locale:alternate` tags should also be set correctly for each language.
|
||||
|
||||
## Proposed Solution
|
||||
1. Store OG data per language in `#__mokoog_tags` (add `language` column)
|
||||
2. Output `og:locale` based on the current page language
|
||||
3. Output `og:locale:alternate` for each associated language version
|
||||
4. In the article editor, show OG fields for the current editing language
|
||||
5. Support Joomla language tag format mapping (e.g., `en-GB` → `en_GB`)
|
||||
|
||||
## Implementation Details
|
||||
- Add `language` column to `#__mokoog_tags` (default `*` for all languages)
|
||||
- Modify unique key to include language: `content_type + content_id + language`
|
||||
- System plugin reads current language from `Factory::getLanguage()->getTag()`
|
||||
- Map Joomla language tags to OG locale format: `en-GB` → `en_GB`
|
||||
- Query associated articles via `#__associations` to build `og:locale:alternate`
|
||||
@@ -1,29 +0,0 @@
|
||||
---
|
||||
title: "[FEATURE] OG Tag Import/Export via CSV"
|
||||
labels: "enhancement, priority: low"
|
||||
milestone: "v02.00"
|
||||
---
|
||||
|
||||
## Feature Description
|
||||
Import and export OG tag data via CSV for bulk management, migration, and backup purposes.
|
||||
|
||||
## Problem or Use Case
|
||||
Large sites need to manage OG data in spreadsheets — reviewing descriptions, updating images in bulk, or migrating from another OG extension (like Tagz). CSV import/export enables this workflow.
|
||||
|
||||
## Proposed Solution
|
||||
**Export:**
|
||||
- Export all `#__mokoog_tags` records to CSV
|
||||
- Include article title (joined from `#__content`) for reference
|
||||
- Columns: content_type, content_id, article_title, og_title, og_description, og_image, og_type
|
||||
|
||||
**Import:**
|
||||
- Upload CSV with the same column format
|
||||
- Match on `content_type + content_id`
|
||||
- Option to update existing or skip existing
|
||||
- Validation report showing errors before committing
|
||||
|
||||
## Implementation Details
|
||||
- New `Controller/ImportExportController.php` with `export()` and `import()` actions
|
||||
- CSV parsing with `fgetcsv()` / `SplFileObject`
|
||||
- Add toolbar buttons to the Tags view
|
||||
- Validate content_id exists in the referenced content table before importing
|
||||
Reference in New Issue
Block a user