當前位置:首頁 » 編程軟體 » hook引流腳本

hook引流腳本

發布時間: 2023-03-25 21:47:18

php中的hook

Prestashop Quick Primer

Prestashop Quick Primer

方便給網頁設計者了解 Prestashop的主要結構

看了前面一章的介紹文章,我想你也迫不及待想要看看主要實現的方法吧?別急,現在就開始。記得轉載的時候註明:www.jackyon.com哦!

Prestashop,像所有的PHP腳本語言一樣會載入本地伺服器上的 index.php 文件。如果你的 Prestashop 商店程序是放在mystore.com,當客戶端輸入URL : http://www.mystore.com,webserver會自動載入到index這個頁面。

為了了解咋們的prestashop shop是如何運行的,我們需要去了解下index文件是如何去工作的。

Index.php

prestashop index.php文件中包含著以下的代碼 :

1. <?php
2. include(dirname(__FILE__).'/config/config.inc.php');
3. include(dirname(__FILE__).'/header.php');
4.
5. $smarty->assign('HOOK_HOME', Mole::hookExec('home'));
6. $smarty->display(_PS_THEME_DIR_.'index.tpl');
7.
8. include(dirname(__FILE__).'/footer.php');
9.
10. ?>

在 index.php 文件的開始包含著一個 config.inc.php 的文件,這個文件時主要處理我們的主要設置還有一些程序相關其它設置,config.inc.php 會檢查是否所有的東西已經安裝好了,並且確認了我們的默認模版和默認目錄,還有路徑、訂單的狀態還有其它的一些設置。或者現在你已經在抱怨著什麼時候才能開始學習到相關的模版製作,現在我們只知道 index.php 中包含了什麼而已。

然而,作為一個網頁設計者,你可能需要及時地注意到了網頁上的錯誤信息,因此現在就要用到剛才所提到的 config.inc.php 文件了,在這個文件最上面幾行,你可以看到:

1. @ini_set('display_errors', 'off');
2. 你可以選擇把它打開或關閉
3. @ini_set('display_errors', 'on');

現在你可以關閉錯誤信息報告了。不過要注意在下次正式安裝前要吧它改回來。

下一步,來看看 header.php 的代碼:

1. <?php
2.
3. // P3P Policies (http://www.w3.org/TR/2002/REC-P3P-20020416/#compact_policies)
4. header('P3P: CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"');
5.
6. require_once(dirname(__FILE__).'/init.php');
7.
8. /* CSS */
9. $css_files[_THEME_CSS_DIR_.'global.css'] = 'all';
10.
11. /* Hooks are voluntary out the initialize array (need those variables already assigned) */
12. $smarty->assign(array(
13. 'HOOK_HEADER' => Mole::hookExec('header'),
14. 'HOOK_LEFT_COLUMN' => Mole::hookExec('leftColumn'),
15. 'HOOK_TOP' => Mole::hookExec('top'),
16. 'static_token' => Tools::getToken(false),
17. 'token' => Tools::getToken(),
18. 'priceDisplayPrecision' => _PS_PRICE_DISPLAY_PRECISION_,
19. 'content_only' => intval(Tools::getValue('content_only'))
20. ));
21.
22. if(isset($css_files) AND !empty($css_files)) $smarty->assign('css_files', $css_files);
23. if(isset($js_files) AND !empty($js_files)) $smarty->assign('js_files', $js_files);
24.
25. /* Display a maintenance page if shop is closed */
26. if (isset($maintenance) AND (!isset($_SERVER['REMOTE_ADDR']) OR $_SERVER['REMOTE_ADDR'] != Configuration::get('PS_MAINTENANCE_IP')))
27. {
28. header('HTTP/1.1 503 temporarily overloaded');
29. $smarty->display(_PS_THEME_DIR_.'maintenance.tpl');
30. exit;
31. }
32.
33. $smarty->display(_PS_THEME_DIR_.'header.tpl');
34.
35. ?>

接下來我們可以看到這句代碼:

1. $smarty->assign('HOOK_HOME', Mole::hookExec('home'));

這里將會指定分配hook(我們通常都會第一時間把hook給指定分配了,你也可以指定哪些模塊在你網站中出現)

1. $smarty->display(_PS_THEME_DIR_.'index.tpl');

這一行代碼是說明 index.tpl 相當於默認主題模版目錄的位置(你可以定義或者添加你的主題,backoffice>> preferances>>appearance)

最後我們再來看看footer.php

1. include(dirname(__FILE__).'/footer.php');

這一行代碼include了我們的footer.php文件,看下footer.php文件代碼:

1. <?php
2.
3. if (isset($smarty))
4. {
5. $smarty->assign(array(
6. 'HOOK_RIGHT_COLUMN' => Mole::hookExec('rightColumn'),
7. 'HOOK_FOOTER' => Mole::hookExec('footer'),
8. 'content_only' => intval(Tools::getValue('content_only'))));
9. $smarty->display(_PS_THEME_DIR_.'footer.tpl');
10. }
11.
12. ?>

盡管我們現在了解到了程序的配置設置,hooks還有不同的php文件包含,但是你會發現,目前為止,還沒出現我們所熟悉的HTML代碼。其實這個就是我們所有templates(tpl)的來源入口。tpl文件裡麵包含著HTML還有smarty模版語言。這些tpl文件大多都在你的模版目錄下,有些也在每個功能模塊目錄下。

現在來看看header.php文件,你會看到裡面有這些代碼:

1. $css_files[_THEME_CSS_DIR_.'global.css'] = 'all';
2. if(isset($css_files) AND !empty($css_files)) $smarty->assign('css_files', $css_files);
3. if(isset($js_files) AND !empty($js_files)) $smarty->assign('js_files', $js_files);
4.
5. $smarty->display(_PS_THEME_DIR_.'maintenance.tpl'); - Will display a maintenance page called maintenance.tpl if your shop is closed */
6.
7. $smarty->display(_PS_THEME_DIR_.'header.tpl');

我們的global.css和css、javascript文件都被包含在這里,html的顯示來自於header.tpl文件。

以此類推,index.php 和footer.php也有這對應的index.tpl和footer.tpl(其它的文件也是這樣的命名規則)

現在目前看起來好像有點混亂了,不用擔心,堅持下去,接下來會變得簡單些的。
好了,從這里開始打段,總結下:index.php文件包含著header.php,index.tpl和footer.tpl,header.php和footer.php的tpl文件也分別取自他們本身的文件名。

我們主要的HTML代碼都來源於這三個tpl文件。
現在我們來打開header.tpl,index,tpl 還有footer.tpl,這里對於web設計師會相對熟悉點

Header.tpl

1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{$lang_iso}">
3. <head>
4. <base href="{$protocol}{$smarty.server.HTTP_HOST|escape:'htmlall':'UTF-8'}{$base_dir}" />
5. <title>{$meta_title|escape:'htmlall':'UTF-8'}</title>
6. {if isset($meta_description) AND $meta_description}
7. <meta name="description" content="{$meta_description|escape:htmlall:'UTF-8'}" />
8. {/if}
9. {if isset($meta_keywords) AND $meta_keywords}
10. <meta name="keywords" content="{$meta_keywords|escape:htmlall:'UTF-8'}" />
11. {/if}
12. <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
13. <meta name="generator" content="PrestaShop" />
14. <meta name="robots" content="{if isset($nobots)}no{/if}index,follow" />
15. <link rel="icon" type="image/vnd.microsoft.icon" href="{$img_ps_dir}favicon.ico" />
16. <link rel="shortcut icon" type="image/x-icon" href="{$img_ps_dir}favicon.ico" />
17. {if isset($css_files)}
18. {foreach from=$css_files key=css_uri item=media}
19. <link href="{$css_uri}" rel="stylesheet" type="text/css" media="{$media}" />
20. {/foreach}
21. {/if}
22. <script type="text/javascript" src="{$base_dir}js/tools.js"></script>
23. <script type="text/javascript">
24. var baseDir = '{$base_dir}';
25. var static_token = '{$static_token}';
26. var token = '{$token}';
27. var priceDisplayPrecision = {$priceDisplayPrecision*$currency->decimals};
28. </script>
29. <script type="text/javascript" src="{$base_dir}js/jquery/jquery-1.2.6.pack.js"></script>
30. <script type="text/javascript" src="{$base_dir}js/jquery/jquery.easing.1.3.js"></script>
31. {if isset($js_files)}
32. {foreach from=$js_files item=js_uri}
33. <script type="text/javascript" src="{$js_uri}"></script>
34. {/foreach}
35. {/if}
36. {$HOOK_HEADER}
37. </head>
38.
39. <body {if $page_name}id="{$page_name|escape:'htmlall':'UTF-8'}"{/if}>
40. {if !$content_only}
41. <div id="page">
42.
43. <!-- Header -->
44. <div>
45. <h1 id="logo"><a href="{$base_dir}" title="{$shop_name|escape:'htmlall':'UTF-8'}"><img src="{$img_ps_dir}logo.jpg" alt="{$shop_name|escape:'htmlall':'UTF-8'}" /></a></h1>
46. <div id="header">
47. {$HOOK_TOP}
48. </div>
49. </div>
50.
51. <!-- Left -->
52. <div id="left_column" class="column">
53. {$HOOK_LEFT_COLUMN}
54. </div>
55.
56. <!-- Center -->
57. <div id="center_column">
58. {/if}

Index.tpl

1. {$HOOK_HOME}

Footer.tpl

1. {if !$content_only}
2. </div>
3.
4. <!-- Right -->
5. <div id="right_column" class="column">
6. {$HOOK_RIGHT_COLUMN}
7. </div>
8.
9. <!-- Footer -->
10. <div id="footer">{$HOOK_FOOTER}</div>
11. </div>
12. {/if}
13. </body>
14. </html>

現在我們來看看homepage的源文件:
Index.tpl

1. !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
3. <head>
4. <base href="http://127.0.0.1/prestashop/" />
5. <title>Prestashop demo</title>
6. <meta name="description" content="Shop powered by PrestaShop" />
7. <meta name="keywords" content="shop, prestashop" />
8. <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
9. <meta name="generator" content="PrestaShop" />
10. <meta name="robots" content="index,follow" />
11. <link rel="icon" type="image/vnd.microsoft.icon" href="/prestashop/img/favicon.ico" />
12. <link rel="shortcut icon" type="image/x-icon" href="/prestashop/img/favicon.ico" />
13. <link href="/prestashop/themes/commotion/css/global.css" rel="stylesheet" type="text/css" media="all" />
14. <script type="text/javascript" src="/prestashop/js/tools.js"></script>
15. <script type="text/javascript">
16. var baseDir = '/prestashop/';
17. var static_token = '';
18. var token = '';
19. var priceDisplayPrecision = 2;
20. </script>
21. <script type="text/javascript" src="/prestashop/js/jquery/jquery-1.2.6.pack.js"></script>
22. <script type="text/javascript" src="/prestashop/js/jquery/jquery.easing.1.3.js"></script>
23. </head>
24. <body id="index">
25. <div id="page">
26.
27. <!-- Header -->
28. <div>
29. <h1 id="logo"><a href="/prestashop/" title="Prestashop demo"><img src="/prestashop/img/logo.jpg" alt="Prestashop demo" /></a></h1>
30. <div id="header">
31.
32. </div>
33. </div>
34.
35. <!-- Left -->
36. <div id="left_column" class="column">
37.
38. </div>
39.
40. <!-- Center -->
41. <div id="center_column">
42. </div>
43.
44. <!-- Right -->
45. <div id="right_column" class="column">
46.
47. </div>
48.
49. <!-- Footer -->
50. <div id="footer">
51. </div>
52. </div>
53. </body>
54. </html>

可能你會注意到了index.tpl 只有一行{$HOOK_HOME}。這里是因為index文件只在homepage上顯示我們所指定的模塊,我們的目錄還有產品頁將會顯示其它的模塊。

當然,你可能也會發現我們每個頁面都有一個不同的body id,方便了我們用css去定義他們單獨的每個頁面,或許你以後還想在body上加上些class,那麼這句是從哪句代碼得來的呢?看看header.tpl,這段代碼就是用來實現它的:

1. <body {if $page_name} id="{$page_name|escape:'htmlall':'UTF-8'}"{/if}> and it is this code that gets the page name. So category.tpl will have the <body id="category">

Ⅱ git hooks 腳本怎麼寫

githooks(5)

===========

NAME

----

githooks - Hooks(鉤子) used by git

SYNOPSIS

--------

$GIT_DIR/hooks/*

簡介

-----------

Hooks(鉤子),是一些存放於`$GIT_DIR/hooks`文件夾的小腳本,在特定條件下觸發動作.

當執行'git init',幾個示例hook將復制到新資源庫的hooks文件夾, 但默認情況下他們都是禁用狀態.

要啟用一個hook(鉤子),請移除其`.sample`後綴.

注意: 你還需要為這些hook(鉤子)添加可執行許可權(譯者注: 僅針對非Windows系統, chmod u+x XXX).

然而,在新創建的資源庫中, - 那些`.sample`默認已經是可執行的(譯者注: 並非如此!!).

本文檔描述的是當前已經等於的hooks(鉤子).

HOOKS(鉤子)

-----

applypatch-msg

~~~~~~~~~~~~~~

這個hook由'git am'腳本觸發. 它將接受一個參數,即將提交的commit msg的臨時文件路徑.

如果這個hook以非0狀態退出,那麼'git am'將在patch(補丁)應用之前取消.

這個hook可以用於修改message(信息)文件, 用來匹配項目的規范格式(如果有的話).

也可以用於校驗commit msg,並在必要時拒絕提交.

預設的'applypatch-msg' hook, 當其啟用時,將調用'commit-msg' hook.

熱點內容
nba2k17文件夾 發布:2025-07-18 11:48:53 瀏覽:867
朔源碼是什麼 發布:2025-07-18 11:44:33 瀏覽:773
迷你世界解壓劇場 發布:2025-07-18 11:43:48 瀏覽:153
linux安裝opencv 發布:2025-07-18 11:42:10 瀏覽:445
編程游戲的軟體有哪些 發布:2025-07-18 11:41:34 瀏覽:955
c程序設計語言電子書 發布:2025-07-18 11:35:58 瀏覽:641
lightning耳機如何在安卓手機上用 發布:2025-07-18 11:21:47 瀏覽:174
妄想山海新宿怎麼配置好 發布:2025-07-18 11:07:43 瀏覽:615
androidsaxxml解析xml 發布:2025-07-18 10:57:58 瀏覽:386
ios透明文件夾插件 發布:2025-07-18 10:51:36 瀏覽:842