From e51dca1d07ce23fd44c416cbe113e6530f2a5e8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B5=85=E5=BF=B5?= Date: Fri, 30 Oct 2026 09:59:38 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20form=20block=20two-column=20layout=20?= =?UTF-8?q?=E2=80=94=20contact=20info=20left,=20form=20right?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/blueprints.py | 21 +++++++++++++++++---- app/static/blocks.css | 12 ++++++++++++ 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/app/blueprints.py b/app/blueprints.py index af7030c..aae28d7 100644 --- a/app/blueprints.py +++ b/app/blueprints.py @@ -27,7 +27,7 @@ BLOCKS = { 'pricing':{'name':'服务方案','icon':'$','fields':['title','items'],'defaults':{'title':'服务方案','items':[{'name':'标准方案','price':'联系我们','features':['专业咨询','售后服务'],'href':'/contact/'}]}}, 'map':{'name':'位置导航','icon':'⌖','fields':['title','address','url','embed'],'defaults':{'title':'欢迎来访','address':'请填写实际办公地址','url':'','embed':''}}, 'form_link':{'name':'询盘表单入口','icon':'✉','fields':['title','description','button','href'],'defaults':{'title':'提交询盘','description':'欢迎联系我们获取报价和资料','button':'联系销售','href':'/contact/'}}, - 'form':{'name':'询盘表单','icon':'✉','fields':['title','description','button_text','button_href'],'defaults':{'title':'Get a Quote','description':'Send us your requirements and our team will reply within 24 hours.','button_text':'Contact Us','button_href':'/contact-us/'}}, + 'form':{'name':'询盘表单','icon':'✉','fields':['title','description','button_text','button_href','kicker','info_title','info_text','items'],'defaults':{'title':'Get a Quote','description':'Send us your requirements and our team will reply within 24 hours.','button_text':'Contact Us','button_href':'/contact-us/','kicker':'CONTACT US','info_title':'Get in Touch','info_text':'We reply within one business day.','items':[{'icon':'✉','title':'Email','text':'sales@hesupipe.com'},{'icon':'◉','title':'Phone / WhatsApp','text':'+86 371 5555 0000'},{'icon':'⌖','title':'Address','text':'Zhengzhou, Henan, China'},{'icon':'◷','title':'Working Hours','text':'Mon-Fri 8:00-18:00 (GMT+8)'}]}}, 'trust_bar':{'name':'信任条','icon':'✓','fields':['title','items'],'defaults':{'title':'','items':[{'icon':'✓','title':'Certified quality','text':'Inspected before every shipment'},{'icon':'◎','title':'Global export','text':'Delivering to worldwide markets'},{'icon':'▤','title':'Full documentation','text':'Specs and export files on hand'},{'icon':'✉','title':'Responsive service','text':'Replies within one business day'}]}}, 'applications_band':{'name':'应用展示带','icon':'⊞','fields':['title','subtitle','items'],'defaults':{'title':'Built for real-world projects','subtitle':'APPLICATIONS','items':[{'icon':'◉','title':'Water supply','text':'Municipal piping and treatment networks.'},{'icon':'◍','title':'Drainage','text':'Gravity and pressure sewer systems.'},{'icon':'✦','title':'Gas','text':'PE pipelines for fuel gas distribution.'},{'icon':'◆','title':'Mining','text':'Abrasion-resistant slurry and vent lines.'}]}}, } @@ -424,18 +424,31 @@ def render_blocks(blocks, site, page, entries): if form_endpoint and str(form_endpoint).startswith('https://'): action=escape(str(form_endpoint),quote=True);method='POST' elif email: - action=f'mailto:{escape(email)}?subject=Inquiry from website';method='POST' + action=f'mailto:{escape(email)}?subject=Inquiry';method='POST' else: action=href;method='GET' + kicker=escape(resolve('kicker','CONTACT US')) + info_title=escape(resolve('info_title','Get in Touch')) + info_text=escape(resolve('info_text','We reply within one business day.')) + info_items='' + for item in (block.get('items') or []): + icon=escape(str(item.get('icon','')).strip() or '✦') + it=escape(str(item.get('title','')).strip()) + tx=escape(str(item.get('text','')).strip()) + if it or tx: + info_items+=f'
{it}

{tx}

' form_html=( + f'
' + f'
{kicker}

{info_title}

{info_text}

{info_items}
' f'

{title}

{desc}

' f'
' f'
' f'
' f'
' - f'
' + f'
' f'' - f'
') + f'
' + f'') parts.append(start+form_html+end) elif typ=='layout': columns=block['columns'];gap=block.get('gap',24) diff --git a/app/static/blocks.css b/app/static/blocks.css index e301fbd..13e5122 100644 --- a/app/static/blocks.css +++ b/app/static/blocks.css @@ -113,3 +113,15 @@ .sf-theme-trade-pro .sf-form-note{color:var(--sf-tp-color-text-muted,#8494a6);font-size:13px;margin:0 0 20px} .sf-theme-trade-pro .sf-honeypot{position:absolute!important;left:-9999px!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important} @media (max-width:620px){.sf-theme-trade-pro .sf-form-grid{grid-template-columns:1fr}} + +/* ── 联系双栏:左信息右表单 ── */ +.sf-theme-trade-pro .sf-contact-grid{display:grid;grid-template-columns:0.85fr 1.15fr;gap:calc(var(--sf-tp-space-12,48px) + var(--sf-tp-space-4,16px));align-items:start} +.sf-theme-trade-pro .sf-contact-info .sf-kicker{display:block;font-size:12px;letter-spacing:.15em;text-transform:uppercase;font-weight:740;color:var(--sf-accent-c,var(--accent,#0874df));margin-bottom:12px} +.sf-theme-trade-pro .sf-contact-info h2{font-size:calc(var(--sf-title-size,32px) * .75);margin:0 0 12px} +.sf-theme-trade-pro .sf-contact-desc{color:var(--sf-tp-color-text-muted,#5a6a7e);line-height:1.6;margin:0 0 24px} +.sf-theme-trade-pro .sf-contact-list{display:grid;gap:calc(var(--sf-tp-space-5,20px))} +.sf-theme-trade-pro .sf-contact-item{display:grid;grid-template-columns:48px 1fr;gap:14px;align-items:center} +.sf-theme-trade-pro .sf-contact-icon{width:48px;height:48px;display:grid;place-items:center;border-radius:50%;background:var(--sf-btn-c,var(--sf-tp-color-surface-brand,#0874df));color:#fff;font-size:18px} +.sf-theme-trade-pro .sf-contact-item strong{display:block;margin-bottom:2px} +.sf-theme-trade-pro .sf-contact-item p{margin:0;color:var(--sf-tp-color-text-muted,#5a6a7e);font-size:var(--sf-text-size,14px)} +@media(max-width:900px){.sf-theme-trade-pro .sf-contact-grid{grid-template-columns:1fr;gap:24px}}