From a9ab4a9518c0a6aac34263be91f74c0439cc1cfa Mon Sep 17 00:00:00 2001 From: Mandel Olaiya Date: Tue, 31 Mar 2026 04:03:23 +0200 Subject: [PATCH] Reduce CTA density across agency pages --- .../management/commands/_agency_content.py | 202 ++++++++---------- 1 file changed, 94 insertions(+), 108 deletions(-) diff --git a/mandelstudio/management/commands/_agency_content.py b/mandelstudio/management/commands/_agency_content.py index 7185a3f..b74497b 100644 --- a/mandelstudio/management/commands/_agency_content.py +++ b/mandelstudio/management/commands/_agency_content.py @@ -3729,6 +3729,71 @@ def _footer_stream_data( return footer, [block("text", cfg["mini"])] +INLINE_LINK_TEXT = { + "process": { + "nl": "Bekijk hoe dit werkt", + "en": "See how this works", + "de": "So läuft der Ablauf", + "fr": "Voir comment cela fonctionne", + "es": "Vea cómo funciona", + "it": "Veda come funziona", + "pt": "Veja como funciona", + "ru": "Посмотреть, как это работает", + }, + "services": { + "nl": "Bekijk onze diensten", + "en": "View our services", + "de": "Unsere Leistungen ansehen", + "fr": "Voir nos services", + "es": "Ver nuestros servicios", + "it": "Vedere i nostri servizi", + "pt": "Ver os nossos serviços", + "ru": "Посмотреть услуги", + }, +} + + +CHOOSE_CARD_TITLES = { + "nl": ["Goede match", "Wat dit praktisch betekent", "Eerst de werkwijze zien"], + "en": ["Good fit", "What this means in practice", "See the process first"], + "de": ["Gute Wahl", "Was das praktisch bedeutet", "Erst den Ablauf sehen"], + "fr": ["Bon choix", "Ce que cela signifie concrètement", "Voir d'abord la méthode"], + "es": ["Buena opción", "Qué significa en la práctica", "Ver primero el proceso"], + "it": ["Scelta adatta", "Cosa significa in pratica", "Vedere prima il metodo"], + "pt": ["Boa escolha", "O que isto significa na prática", "Ver primeiro o método"], + "ru": ["Подходит вам", "Что это означает на практике", "Сначала посмотреть процесс"], +} + + +def _inline_link_text(locale: str, key: str) -> str: + return INLINE_LINK_TEXT[key][locale] + + +def _choose_cards(locale: str, items: list[str], process_url: str) -> list[dict[str, Any]]: + titles = CHOOSE_CARD_TITLES[locale] + cards: list[dict[str, Any]] = [] + for index, body in enumerate(items): + description = body + if index == len(items) - 1: + description = ( + f'{body} {_inline_link_text(locale, "process")}.' + ) + cards.append( + item( + { + "icon": "arrow-right-circle", + "icon_image": None, + "title": titles[min(index, len(titles) - 1)], + "description": description, + "link_text": "", + "link_url": "", + "highlight": "none", + } + ) + ) + return cards + + def _home_body( locale: str, urls: dict[str, str], page_title_map: dict[str, dict[str, str]] ) -> list[dict[str, Any]]: @@ -3747,8 +3812,8 @@ def _home_body( "sub_headline": cfg["sub"], "primary_cta_text": cta["primary"], "primary_cta_url": urls["contact"], - "secondary_cta_text": cta["secondary"], - "secondary_cta_url": urls["services"], + "secondary_cta_text": "", + "secondary_cta_url": "", "hero_image": 1, "video_url": "", "stats": [ @@ -3773,7 +3838,7 @@ def _home_body( "icon_image": None, "title": title, "description": desc, - "link_text": link_text or cta["secondary"], + "link_text": link_text or _inline_link_text(locale, "process"), "link_url": urls[link_key], "highlight": highlight, } @@ -3785,43 +3850,6 @@ def _home_body( "columns": "2", }, ), - block( - "saas_pricing", - { - "layout_width": "container", - "background_style": "light", - "layout": "cards", - "section_title": cfg["pricing_title"], - "section_subtitle": cfg["pricing_sub"], - "show_annual_toggle": False, - "annual_discount_text": "", - "tiers": [ - item( - { - "name": page_title_map[key][locale], - "description": desc, - "price_monthly": None, - "price_annual": None, - "price_suffix": "", - "custom_price_text": "Op offertebasis" - if locale == "nl" - else "Custom quote", - "features": [ - item({"text": text, "included": True, "tooltip": ""}) - for text in features - ], - "cta_text": cta["primary"], - "cta_url": urls["contact"], - "cta_style": "primary" if featured else "secondary", - "is_featured": featured, - "featured_label": label, - } - ) - for key, (desc, features, featured, label) in cfg["tiers"].items() - ], - "footer_text": cfg["pricing_footer"], - }, - ), block( "saas_testimonials", { @@ -3860,9 +3888,9 @@ def _home_body( item({"question": question, "answer": answer, "category": category}) for question, answer, category in cfg["faqs"] ], - "show_contact_cta": "card", - "contact_cta_text": cta["primary"], - "contact_cta_url": urls["contact"], + "show_contact_cta": "simple", + "contact_cta_text": cta["secondary"], + "contact_cta_url": urls["services"], }, ), block( @@ -3875,8 +3903,8 @@ def _home_body( "subheadline": cfg["cta_sub"], "primary_cta_text": cta["primary"], "primary_cta_url": urls["contact"], - "secondary_cta_text": cta["secondary"], - "secondary_cta_url": urls["services"], + "secondary_cta_text": "", + "secondary_cta_url": "", "background_image": 1, "side_image": 1, "show_no_credit_card": "with-icon", @@ -3923,8 +3951,8 @@ def _standard_body( "sub_headline": cfg["sub"], "primary_cta_text": cta["primary"], "primary_cta_url": urls["contact"], - "secondary_cta_text": cta["secondary"], - "secondary_cta_url": urls["services"], + "secondary_cta_text": "", + "secondary_cta_url": "", "hero_image": 1 if page_key != "process" else 24, "video_url": "", "stats": [], @@ -3946,12 +3974,8 @@ def _standard_body( "icon_image": None, "title": title, "description": desc, - "link_text": cta["primary"] - if page_key in {"contact", "about"} - else cta["secondary"], - "link_url": urls["contact"] - if page_key in {"contact", "about"} - else urls["services"], + "link_text": _inline_link_text(locale, "process"), + "link_url": urls["process"], "highlight": "none", } ) @@ -4038,9 +4062,9 @@ def _standard_body( item({"question": q, "answer": a, "category": c}) for q, a, c in common["faq_items"] ], - "show_contact_cta": "card", - "contact_cta_text": cta["primary"], - "contact_cta_url": urls["contact"], + "show_contact_cta": "none", + "contact_cta_text": "", + "contact_cta_url": "", }, ) ) @@ -4055,8 +4079,8 @@ def _standard_body( "subheadline": common["cta_sub"], "primary_cta_text": cta["primary"], "primary_cta_url": urls["contact"], - "secondary_cta_text": cta["secondary"], - "secondary_cta_url": urls["services"], + "secondary_cta_text": "", + "secondary_cta_url": "", "background_image": 1, "side_image": 1, "show_no_credit_card": "with-icon", @@ -4098,8 +4122,8 @@ def _service_body(locale: str, kind: str, urls: dict[str, str]) -> list[dict[str "sub_headline": f"

{cfg['audience']}

", "primary_cta_text": cta["primary"], "primary_cta_url": urls["contact"], - "secondary_cta_text": cta["secondary"], - "secondary_cta_url": urls["services"], + "secondary_cta_text": "", + "secondary_cta_url": "", "hero_image": 23, "video_url": "", "stats": [ @@ -4161,8 +4185,8 @@ def _service_body(locale: str, kind: str, urls: dict[str, str]) -> list[dict[str "icon_image": None, "title": title, "description": desc, - "link_text": cta["secondary"], - "link_url": urls["services"], + "link_text": _inline_link_text(locale, "process"), + "link_url": urls["process"], "highlight": "none", } ) @@ -4186,8 +4210,8 @@ def _service_body(locale: str, kind: str, urls: dict[str, str]) -> list[dict[str "icon_image": None, "title": title, "description": desc, - "link_text": cta["primary"], - "link_url": urls["contact"], + "link_text": "", + "link_url": "", "highlight": "none", } ) @@ -4197,53 +4221,15 @@ def _service_body(locale: str, kind: str, urls: dict[str, str]) -> list[dict[str }, ), block( - "saas_demo_request", + "saas_features", { "layout_width": "container", "background_style": "light", - "layout": "split", + "layout": "grid", "section_title": common["section_choose"], "section_subtitle": common["section_choose_sub"], - "form_fields": [ - item( - { - "field_type": "text", - "label": common["name_label"], - "placeholder": common["name_placeholder"], - "required": True, - } - ), - item( - { - "field_type": "email", - "label": common["email_label"], - "placeholder": common["email_placeholder"], - "required": True, - } - ), - item( - { - "field_type": "company", - "label": common["company_label"], - "placeholder": common["company_placeholder"], - "required": True, - } - ), - item( - { - "field_type": "message", - "label": common["message_label"], - "placeholder": common["message_placeholder"], - "required": False, - } - ), - ], - "submit_button_text": cta["primary"], - "form_action_url": urls["contact"], - "benefits_title": common["choose_title"], - "benefits": [item(text) for text in cfg["choose"]], - "side_image": 23, - "privacy_text": common["privacy"], + "features": _choose_cards(locale, cfg["choose"], urls["process"]), + "columns": "3", }, ), block( @@ -4256,8 +4242,8 @@ def _service_body(locale: str, kind: str, urls: dict[str, str]) -> list[dict[str "subheadline": common["cta_sub"], "primary_cta_text": cta["primary"], "primary_cta_url": urls["contact"], - "secondary_cta_text": cta["secondary"], - "secondary_cta_url": urls["services"], + "secondary_cta_text": "", + "secondary_cta_url": "", "background_image": 1, "side_image": 1, "show_no_credit_card": "with-icon",