feat(pages): generate Phases 8-11 — Technology + Editorial + Forms + Home
Brings the site to its full programmatic page count : 24 EN + 24 FR pages
(48 total), all wired into the WPML CTE workflow established in the previous
commit. Each phase reuses tools/_av-bricks-shared.php builders, adds its own
filter('av_fr_translation_dict') to extend the FR dictionary, and ships a
seed-FR mu-plugin for the initial WPML trid linking.
## Phase 8 — Technology (tools/av-generate-technology.php + seed)
Hub /technology/ + 6 pillar pages (vr-hardware, software-ai, weapons-tracking,
scenarios, instructor-cockpit, after-action-review). Hub uses a 6-card grid
(3+3 layout — added card_count=6 case in av_build_cards_section).
EN : 87-93. FR : 94-100.
## Phase 9 — Editorial (tools/av-generate-editorial.php + seed)
5 top-level pages : /why-asterion/, /about/, /customers/, /trust/, /partners/.
Required adding empty-parent-path support to av_upsert_detail_page() so pages
can be created at the site root (no hub). EN : 107-111. FR : 112-116.
## Phase 10 — Forms (tools/av-generate-forms.php + seed)
4 conversion pages : /request-demo/, /request-te-kit/, /request-quote/,
/contact/. Custom page builder (not the shared detail-page pattern) :
hero + 2-column section (Bricks `form` element on left, promise list on
right) + optional shortcuts row (Contact), eligibility list (T&E Kit), FAQ
accordion (Demo). Form actions=email, emailTo=hello@asterionvr.com.
Field labels, select options, FAQ Q&A all in the FR dict.
EN : 122-125. FR : 126-129.
## Phase 11 — Home page (tools/av-generate-home.php + seed)
Custom-written single page (no data file). Sections : hero + 3-pillar cards
(Operational reality / Modular / Sovereign) + 4 Industries cards + 4
Solutions cards + 4-stat numbers band + Why-Asterion teaser CTA + Customers
teaser CTA + custom navy closer. Set as WP static front via
update_option(show_on_front=page, page_on_front=ID).
EN : 134. FR : 135.
## tools/_av-bricks-shared.php
- av_upsert_detail_page() now accepts empty `$parent_path` → top-level page
- av_build_cards_section() handles card_count=6 → 3-per-row layout
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -467,11 +467,11 @@ function av_build_cards_section($slug, $i, $section, $bg = 'var(--color-bg-subtl
|
||||
$flex_desktop = 'calc((100% - 1.5rem) / 2)';
|
||||
} elseif ($card_count === 3) {
|
||||
$flex_desktop = 'calc((100% - 3rem) / 3)';
|
||||
} elseif ($card_count === 5) {
|
||||
// 5 cards : we wrap them as 3 + 2 — set flex-basis for 3-up
|
||||
} elseif ($card_count === 5 || $card_count === 6) {
|
||||
// 5 cards : 3 + 2 — 6 cards : 3 + 3. Both wrap cleanly at 3-per-row.
|
||||
$flex_desktop = 'calc((100% - 3rem) / 3)';
|
||||
} else {
|
||||
// default 4 cards/row (and 6 → 4 + 2 wrapped)
|
||||
// default 4 cards/row (and 7+ → 4 + N wrapped)
|
||||
$flex_desktop = 'calc((100% - 4.5rem) / 4)';
|
||||
}
|
||||
|
||||
@@ -905,9 +905,14 @@ function av_write_bricks_page_elements($page_id, $elements) {
|
||||
* Returns ['id' => int, 'action' => 'created'|'updated', 'element_count' => int, 'stored_len' => int].
|
||||
*/
|
||||
function av_upsert_detail_page($slug, $parent_path, $d) {
|
||||
$existing = get_page_by_path("$parent_path/$slug");
|
||||
$parent = get_page_by_path($parent_path);
|
||||
$parent_id = $parent ? $parent->ID : 0;
|
||||
// $parent_path empty/null/'' → top-level page (no parent)
|
||||
$page_path = $parent_path ? "$parent_path/$slug" : $slug;
|
||||
$existing = get_page_by_path($page_path);
|
||||
$parent_id = 0;
|
||||
if ($parent_path) {
|
||||
$parent = get_page_by_path($parent_path);
|
||||
$parent_id = $parent ? $parent->ID : 0;
|
||||
}
|
||||
|
||||
if ($existing) {
|
||||
wp_update_post([
|
||||
|
||||
Reference in New Issue
Block a user