Brands and themes
VerdinCore separates site identity from site presentation. A brand answers "whose site is this?" A theme answers "how is it rendered?"
Select a brand and theme
Environment settings choose both independently:
brand.name = verdincore
verdincore.theme = tomgineerbrand.name resolves to brands/<name>/config.php. verdincore.theme resolves public views under app/Views/<theme>/ and front-end sources under themes/<theme>/.
Version 4.0.1 registers these brand names:
portfolio;tomgineer;verdindynamics;verdincore.
An unsupported name causes configuration loading to fail instead of silently falling back.
Brand configuration
A brand file defines:
Group | Values |
|---|---|
Identity | Display name, slogan, description, default author, copyright, platform name |
Site | Canonical domain and locale |
Contact | Email and postal address fields |
Schema | Person or Organization identity, URL, image, logo, and same-as links |
Social | Facebook, Instagram, LinkedIn, X, TikTok, Telegram, Reddit, Discord, WhatsApp, YouTube, Rumble, BitChute, and GitHub links |
Integration | Optional GitHub owner for public repository synchronization |
Brand assets can include a logo, icon, profile image, sharing image, and favicon set. The CSS and JavaScript build does not copy these files, so the release artifact must publish them to the matching public theme asset directory.
Add a brand
Create
brands/<name>/config.phpusing an existing brand as the shape reference.Add the required assets below
brands/<name>/assets/.Register the exact name in
Config\Brand::SUPPORTED_BRANDS.Select it with
brand.namein the target environment.Publish the brand assets and run a production asset build.
Verify metadata, structured data, email sender identity, social links, favicons, and the optional GitHub panel.
Do not place secrets in the brand file. Credentials and environment-specific transport values belong in .env or the deployment's secret store.
Theme structure
A public theme spans PHP views in app/Views/<theme>/ plus CSS and JavaScript entry points in themes/<theme>/. Shared application cells render navigation, footers, archives, featured content, related content, and other reusable pieces through the selected view namespace.
The administration interface has its own theme sources and compiled bundles. Changing the public theme does not replace the admin UI.
Feature configuration
Feature flags are deployment settings, not brand fields. They control registration, topics, blog navigation, archive and search, related posts, display flags, automatic featuring, footer pages, RSS, and caching.
Keep this distinction clear:
brand configuration describes identity;
VerdinCore configuration controls behavior;
theme code controls presentation.
Structured identity
When a brand defines a Schema.org Person or Organization, public structured-data graphs reference it as the site publisher. About pages may use the identity as their main entity. Invalid or empty same-as URLs are filtered out.
Member-only pages and posts do not expose structured identity through a page graph because structured data is omitted for those responses.