首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

ThinkPHP 實戰筆記:Uyan 評論插件修復、模板渲染與左側導航原理解析

     編輯:PHP 相關知識

ThinkPHP 實戰筆記:Uyan 評論插件修復、模板渲染與左側導航原理解析

本文記錄三個 ThinkPHP/OneThink 實戰問題的排查與解決:友言評論插件 UID 缺失、模板渲染 display() 進階用法、前台左側導航 Widget 動態生成機制。

問題一:OneThink 站點無法被友言後台識別

現象

開啟友言插件後,生成的 JS 代碼中 uid 為空:

<script type="text/javascript" src="https://v2.uyan.cc/code/uyan.js?uid="></script>

根因

模板 \Addons\SocialComment\comment.html 中變量寫法錯誤:

{$addons.config.comment_uid_youyan}  <-- 錯誤

ThinkPHP 模板中陣列變量需用下劃線:

{$addons_config.comment_uid_youyan}  <-- 正確

解決方案

將模板中的 $addons.config 統一改為 $addons_config。

問題二:模板渲染 display() 進階用法

基本語法

$this->display('[模板文件]'[, '字符編碼'[, '輸出類型']]);

跨模塊調用

// 調用 Member 模塊下的 read 模板
$this->display('Member:read');

關鍵點: 此處的「模塊:操作」僅對應目錄結構 View/Member/read.html,不要求存在實際控制器/方法。

參考文檔

官方手冊 - 模板渲染

問題三:OneThink 前台左側導航動態生成

模板定義

\Application\Home\View\default\Public\body.html:

<div class="span3 bs-docs-sidebar">
    <block name="publish"></block>
    <ul class="nav nav-list bs-docs-sidenav">
        {:W('Category/lists', array($category['id'], ACTION_NAME == 'index'))}
    </ul>
</div>

Widget 實現

\Application\Home\Widget\CategoryWidget.class.php 中的 lists() 方法根據分類 ID 與當前操作名(ACTION_NAME 常量)生成導航 HTML。

關鍵常量

  • ACTION_NAME:當前操作名(如 index、lists、detail)
  • MODULE_NAME、CONTROLLER_NAME 同理

參考資源

總結

  1. 模板變量輸出嚴格區分 . 與 _,陣列鍵名含點號時必須用下劃線。
  2. display() 支援跨模塊模板復用,減少重複視圖文件。
  3. Widget 機制實現了邏輯與視圖的解耦,導航、側邊欄、廣告位等通用塊強烈建議用 Widget 封裝。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved