Browse Source

feat: template update

igb 4 months ago
parent
commit
5bb5e0bd69

+ 0 - 1
app/Http/Controllers/ContactController.php

@@ -35,7 +35,6 @@ class ContactController extends Controller
 
         //模板支持多级目录,需要目录符号
         $output = LiquidRenderer::render('pages_sp_contact.liquid', [
-            'csrf_token' => csrf_token(),
             'breadcrumbs' => $breadcrumbs,
         ]);
 

+ 2 - 0
app/Services/LiquidRenderer.php

@@ -5,6 +5,7 @@ namespace App\Services;
 use App\Services\LiquidTags\LiquidTagProduct;
 use App\Services\LiquidTags\LiquidTagVideo;
 use App\Services\LiquidTags\LiquidTagBanner;
+use App\Services\LiquidTags\LiquidTagContactUs;
 use Liquid\Liquid;
 use Liquid\Template;
 use Liquid\Cache\File as FileCache;
@@ -34,6 +35,7 @@ class LiquidRenderer
         $template->registerTag('video', LiquidTagVideo::class);
         $template->registerTag('contact', LiquidTagContactUs::class);
         $template->registerTag('banner', LiquidTagBanner::class);
+        $template->registerTag('contactus', LiquidTagContactUs::class);
         $template->registerFilter(Filters::class);
 
 

+ 34 - 16
app/Services/LiquidTags/LiquidTagContactUs.php

@@ -1,32 +1,50 @@
 <?php
 namespace App\Services\LiquidTags;
 
-class LiquidTagContactUs
+use Liquid\AbstractBlock;
+use App\Services\LiquidRenderer;
+
+class LiquidTagContactUs extends AbstractBlock
 {
-    private $email;
+    private $templateFile;
 
     // 构造函数用于解析传入的参数
     public function __construct($markup, array &$tokens, $file_system = null)
     {
-        // 正则表达式解析传入的参数,例如 `{% contact_us email="contact@example.com" %}`
-        $syntax = '/email="([^"]+)"/';
-        if (preg_match($syntax, $markup, $matches)) {
-            $this->email = $matches[1];
-        } else {
-            // 如果参数解析失败,可以抛出一个异常或设置默认值
-            $this->email = '';
+        // 初始化默认值
+        $this->templateFile = null;
+
+        // 正则表达式解析传入的参数
+        $syntax = '/(\w+)=("[^"]*"|\'[^\']*\'|\d+)/';
+
+        if (preg_match_all($syntax, $markup, $matches, PREG_SET_ORDER)) {
+            foreach ($matches as $match) {
+                $key = $match[1];
+                $value = trim($match[2], '"\''); // 去除引号
+
+                if ($key === 'template') {
+                    $this->templateFile = $value;
+                }
+            }
         }
     }
 
     // render 方法执行逻辑并返回渲染结果
-    public function render(&$context)
+    public function render($context)
     {
-        // 根据 email 生成渲染结果
-        if ($this->email) {
-            return "<p>Contact: <a href='mailto:{$this->email}'>{$this->email}</a></p>";
-        }
+        // 使用 LiquidRenderer 渲染模板
+        return $this->renderTemplate();
+    }
+
+
+    // 渲染模板文件
+    private function renderTemplate()
+    {
+
 
-        // 如果参数不完整,返回默认消息
-        return '<p>not found</p>';
+        // 使用 LiquidRenderer 渲染模板文件
+        return LiquidRenderer::render($this->templateFile,  [
+            'csrf_token' => csrf_token(),
+        ]);
     }
 }

+ 1 - 1
resources/views/liquid_src/1/TechVista/__banner_list.liquid

@@ -4,7 +4,7 @@
     <div id="rev_slider_1" class="rev_slider fullwidthabanner" style="display:none;" data-version="5.3.0.2" >
         <ul>
             {% for item in banners %}
-            <li data-index="rs-{{ forloop.index }}" data-transition="slidevertical" data-slotamount="1" data-hideafterloop="0" data-hideslideonmobile="off"  data-easein="default" data-easeout="default" data-masterspeed="1500"  data-thumb="../../images/slider/concept-1-100x50.jpg"  data-rotate="0"  data-fstransition="fade" data-fsmasterspeed="1500" data-fsslotamount="7" data-saveperformance="off"  data-title="Intro" data-param1="" data-param2="" data-param3="" data-param4="" data-param5="" data-param6="" data-param7="" data-param8="" data-param9="" data-param10="" data-description="">
+            <li data-index="rs-{{ forloop.index }}" data-transition="slidevertical" data-slotamount="1" data-hideafterloop="0" data-hideslideonmobile="off"  data-easein="default" data-easeout="default" data-masterspeed="1500"  data-thumb="../../images/slider/concept-1-100x50.jpg"  data-rotate="0"  data-fstransition="fade" data-fsmasterspeed="1500" data-fsslotamount="7" data-saveperformance="off"  data-title="{{ item.title }}" data-param1="" data-param2="" data-param3="" data-param4="" data-param5="" data-param6="" data-param7="" data-param8="" data-param9="" data-param10="" data-description="">
                 <!-- MAIN IMAGE -->
                 <a href="{{ item.banner_url }}">
                     {% assign image_url = item.image_url %}

+ 60 - 0
resources/views/liquid_src/1/TechVista/__contactus.liquid

@@ -0,0 +1,60 @@
+<h4 >Get a quote</h4>
+<form id="form_contact" data-action="/contact" class="form-default" role="form">
+    <input type="hidden" name="_token" value="{{ csrf_token }}">
+    <input type="hidden" name="consulting_products" value="{{product.title }}">
+    <div class="row">
+        <div class="col-md-6">
+            <div class="form-group has-feedback">
+                <label for="" class="text-uppercase c-gray-light">Your name</label>
+                <input type="text" name="customer_name" class="form-control form-control-lg" required>
+                <span class="glyphicon form-control-feedback" aria-hidden="true"></span>
+                <div class="help-block with-errors"></div>
+            </div>
+        </div>
+        <div class="col-md-6">
+            <div class="form-group has-feedback">
+                <label for="" class="text-uppercase c-gray-light">Email address</label>
+                <input type="email" name="email" class="form-control form-control-lg" required>
+                <span class="glyphicon form-control-feedback" aria-hidden="true"></span>
+                <div class="help-block with-errors"></div>
+            </div>
+        </div>
+    </div>
+
+    <div class="row">
+        <div class="col-md-6">
+            <div class="form-group has-feedback">
+                <label for="" class="text-uppercase c-gray-light">Company name</label>
+                <input type="text" name="company_name" class="form-control form-control-lg">
+                <span class="glyphicon form-control-feedback" aria-hidden="true"></span>
+                <div class="help-block with-errors"></div>
+            </div>
+        </div>
+        <div class="col-sm-6">
+            <div class="form-group has-feedback">
+                <label for="" class="text-uppercase c-gray-light">Phone/whats_app</label>
+                <input type="text" name="whats_app" class="form-control form-control-lg" required>
+                <span class="glyphicon form-control-feedback" aria-hidden="true"></span>
+                <div class="help-block with-errors"></div>
+            </div>
+        </div>
+    </div>
+
+    <div class="row">
+        <div class="col-md-12">
+            <div class="form-group has-feedback">
+                <label for=""  class="text-uppercase c-gray-light">Message</label>
+                <textarea name="content" class="form-control no-resize" rows="5" required></textarea>
+                <span class="glyphicon form-control-feedback" aria-hidden="true"></span>
+                <div class="help-block with-errors"></div>
+            </div>
+        </div>
+    </div>
+
+    <div class="">
+
+
+        <button type="reset" class="btn-reset d-none"></button>
+        <button type="submit" class="btn btn-styled btn-base-1 mt-4">Send message</button>
+    </div>
+</form>

+ 1 - 57
resources/views/liquid_src/1/TechVista/pages_sp_contact.liquid

@@ -74,64 +74,8 @@
                             <div class="row justify-content-center">
                                 <div class="col-lg-8">
                                     <!-- Contact form -->
-                                    <form id="form_contact" data-action="/contact" class="form-default" role="form">
-                                        <input type="hidden" name="_token" value="{{ csrf_token }}">
-                                        <div class="row">
-                                            <div class="col-md-6">
-                                                <div class="form-group has-feedback">
-                                                    <label for="" class="text-uppercase c-gray-light">Your name</label>
-                                                    <input type="text" name="customer_name" class="form-control form-control-lg" required>
-                                                    <span class="glyphicon form-control-feedback" aria-hidden="true"></span>
-                                                    <div class="help-block with-errors"></div>
-                                                </div>
-                                            </div>
-                                            <div class="col-md-6">
-                                                <div class="form-group has-feedback">
-                                                    <label for="" class="text-uppercase c-gray-light">Email address</label>
-                                                    <input type="email" name="email" class="form-control form-control-lg" required>
-                                                    <span class="glyphicon form-control-feedback" aria-hidden="true"></span>
-                                                    <div class="help-block with-errors"></div>
-                                                </div>
-                                            </div>
-                                        </div>
 
-                                        <div class="row">
-                                            <div class="col-md-6">
-                                                <div class="form-group has-feedback">
-                                                    <label for="" class="text-uppercase c-gray-light">Company name</label>
-                                                    <input type="text" name="company_name" class="form-control form-control-lg">
-                                                    <span class="glyphicon form-control-feedback" aria-hidden="true"></span>
-                                                    <div class="help-block with-errors"></div>
-                                                </div>
-                                            </div>
-                                            <div class="col-sm-6">
-                                                <div class="form-group has-feedback">
-                                                    <label for="" class="text-uppercase c-gray-light">Phone/whats_app</label>
-                                                    <input type="text" name="whats_app" class="form-control form-control-lg" required>
-                                                    <span class="glyphicon form-control-feedback" aria-hidden="true"></span>
-                                                    <div class="help-block with-errors"></div>
-                                                </div>
-                                            </div>
-                                        </div>
-
-                                        <div class="row">
-                                            <div class="col-md-12">
-                                                <div class="form-group has-feedback">
-                                                    <label for=""  class="text-uppercase c-gray-light">Message</label>
-                                                    <textarea name="content" class="form-control no-resize" rows="5" required></textarea>
-                                                    <span class="glyphicon form-control-feedback" aria-hidden="true"></span>
-                                                    <div class="help-block with-errors"></div>
-                                                </div>
-                                            </div>
-                                        </div>
-
-                                        <div class="">
-
-
-                                            <button type="reset" class="btn-reset d-none"></button>
-                                            <button type="submit" class="btn btn-styled btn-base-1 mt-4">Send message</button>
-                                        </div>
-                                    </form>
+                                    {% contactus template='__contactus.liquid' %}
                                 </div>
                             </div>
                         </div>