<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                齊博X1有兩套鉤子體系,第一套是基于TP思路設計的。跟外面的大同小異。現在重點講一下第二套我們首創的使用方法。 首先說一下如何埋鉤子,這個跟TP思路的鉤子類似,就是在頁面的任何地方加入如下代碼即可 如下圖 ![](https://box.kancloud.cn/dfa3dea891673320b9027d4d3b3ff9a8_897x692.jpg) `$this->get_hook('index_begin',$data=[],$this->user);` 它其實有5個參數, 第一個參數就是鉤子標志,必須要唯一的, 第二個是參數`$data`是可以改變其值的,一般用在POST表單的變量,比如發表的時候,你可以中途篡改其中的某項值 第三個`$info`一般指從數據庫取出的資料, 第四個`$array` 是綜合項,比如里邊有id fid之類的值, 第五項只能設置 `true` 或 `false` 默認是true 即同時調用 公共的文件 否則只能調用本頻道插件的文件。 建議大家在開發頻道或應用的時候,盡可能的多預留接口,埋好鉤子,方便別人擴展二開。這個不會影響網站整體速度,因為這個不是預加載的,是訪問到此頁面的時候,才加載的。 ***** 下面再講解一下如何使用? 如上圖的文件`\application\common\controller\IndexBase.php` 里邊加了一個`index_begin` 標志的鉤子,那么就可以 創建目錄` \application\common\ext\index_begin\` 在里邊隨便創建一個PHP文件,就可以實現鉤子的調用了。 php的文件名必須是字母或數字或下畫線或橫杠線即負號 如下圖 ![](https://box.kancloud.cn/58c6809f0943218a24b907fe4a0fbf01_692x282.jpg) 這種是把文件放在common目錄是全站都能公用的。如果你的鉤子文件只為具體某個頻道考慮的話,就可以不要占用公共目錄的資源,而只放在自己所在頻道或插件目錄即可。比如你只針對商城的鉤子,就可以只在商城里邊創建目錄,如下所示: `\application\shop\ext\index_begin\` 如下圖 ![](https://box.kancloud.cn/4e1c414fe97f26f471645bc31112f99c_775x276.jpg) 也就是說鉤子文件即可以放在頻道插件目錄,也可以放在公共區域的common目錄下。 放進去就立即生效,不用做任何設置。要停用,就只能手工把文件刪除。 頻道目錄與公共目錄,如果存在同名的鉤子文件, 那么公共目錄的那個鉤子就不生效。頻道目錄的優先級最高。 并且頻道目錄的所有鉤子執行完畢以后,再執行公共目錄的鉤子文件。 對于當前目錄的鉤子文件執行順序如下: 數值越小,越先執行,也即數字最先,其次是字母。如果有帶符號的情況下。橫杠線即負號開頭的最先。然后就數字,然后才是下畫線開頭,最后才是字母。字母的話,a比z的優先級高。大家的鉤子如果有邏輯順序的話,要注意文件的命名規則。 鉤子里邊的代碼如果出現 ~~~ return true; return false; return []; return ''; return '這是內容'; ~~~ 就會直接把后面的所有鉤子終止掉,也就是后面的鉤子不會再執行。 一般情況,不要return 任何東西。實在要return 的話,你可使用 ~~~ return ; return null; ~~~ 這兩種就不會終止后面的其它鉤子執行。 包括第一種基于TP思路設計的鉤子也是跟這個一樣的情況。 在控制器里邊用鉤子,你可以直接使用當前類里邊的屬性及所有方法。因為本質上就相當于包含進來的代碼。 而基于TP思路的鉤子是不能 使用當前類的屬性與方法的,因為它是執行引用外面的類。 如果不在控制器里邊用鉤子,比如在模型里邊或者在模板里邊用鉤子的話,就用函數,而不能使用`$this->get_hook` 如下圖 ![](https://box.kancloud.cn/84892577a1b20d5174ee278b972ae6d8_1122x565.jpg) ~~~ get_hook('cms_model_agree_begin',$data=[],$info,['id'=>$id],true); ~~~ 這里用的是函數 參數跟上面的一樣的。 在模板中的話就這樣使用 ~~~ {:get_hook('layout_body_head',$info,$userdb)} ~~~ 如下圖 ![](https://box.kancloud.cn/a903b2dc4f0afdbc88c675a93ac3ef79_750x415.jpg) 在模型或模板中就不能使用當前的類的屬性了,就跟TP思路的鉤子差不多了。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看