网络营销电子商务研究中心  
How to buy the best prescription safety glasses in Canada? Let's study!
Go Back   网络营销电子商务研究中心 > 网站建设 > ZenCart
User Name
Password
 
FAQ Members List Calendar Cheap Glasses Mark Forums Read

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #1   IP: 49.87.187.58
Old 2016-04-11, 09:47 AM
Kaweah Kaweah is offline
初级会员
 
Join Date: 2013-08-09
Posts: 1
Kaweah 现在声名狼藉
Default ZenCart页面链接输出函数:zen_href_link()分析

zen_href_link 函数位于 /includes/functions/html_output.php 文件中,主要用于输出超级链接。使用此函数好处在于使用伪静态插件后,输出链接就会自动伪静态

zen_href_link()它一共有7个参数,但是事实上我们只熟习最常用的3个参数就行了,分别是:$page,$parameters,$connection这个三个

参数介绍


参数

作用

$page 这个变量通常由 /includes/filename.php 文件中的常量取得,
代表的是链接中main_page的值,
如zen_href_link(FILENAME_CONTACT_US) ,即使联系我们页面链接 index.php?main_page=contact_us
$parameters 传递的参数
用&符前面生成的url链接
zen_href_link(’products’, ‘id=1′),那么index.php?main_page=products&id=1
$connection 链接方式
即是否https,默认是http
如zen_href_link(FILENAME_LOGIN, '', 'SSL'),在有SSL证书时,就会是https://www.xxx.com/index.php?main_page=login
$add_session_id url最后跟了一串形如zenid=XXXXX的内容,这是服务器给每个访客分配一个标识,zencart在服务器上针对每个访客保存一份资料,例如访客最后浏览的页面、时间、购物车里的商品、选择的货币、语言等等
$search_engine_safe 作用是将特殊字符,转换为/
$static 静态化参数
$use_dir_ws_catalog 网站在二级目录时,链接的方式

代码分析

Code:
 
if (!zen_not_null($page)) { 

  die('</td></tr></table></td></tr></table><br /><br /><strong class="note">Error!<br /><br />Unable to determine the page link!</strong><br /><br /><!--' . $page . '<br />' . $parameters . ' -->'); 
 
}
判断传递过来的 $page 变量是否为空,如果 $page 为空,这输出错误提示,并die()终止程序
Code:
 
 
if ($connection == 'NONSSL') { 

  $link = HTTP_SERVER; 
 
} elseif ($connection == 'SSL') { 
 
  if (ENABLE_SSL == 'true') { 
 
    $link = HTTPS_SERVER ; 
 
  } else { 

    $link = HTTP_SERVER; 
 
  } 

 
} else { 

  die('</td></tr></table></td></tr></table><br /><br /><strong class="note">Error!<br /><br />Unable to determine connection method on a link!<br /><br />Known methods: NONSSL SSL</strong><br /><br />'); 

}
是否启用安全链接判断,参数HTTP_SERVER和HTTPS_SERVER在includes/configure.php

Code:
 
if ($use_dir_ws_catalog) { 

 
  if ($connection == 'SSL' && ENABLE_SSL == 'true') { 
 
    $link .= DIR_WS_HTTPS_CATALOG; 
 
  } else { 

    $link .= DIR_WS_CATALOG; 

  } 
 
}
由于 $use_dir_ws_catalog 默认为真,所以将执行以上代码。这个是一个条件语句,如果 $connection 的值为 SSL,并且 ENABLE_SSL 这个常量为真,则把 DIR_WS_HTTPS_CATALOG 这个常量赋值给 $link;否则将把 DIR_WS_CATALOG 这个常量赋值给 $link。ENABLE_SSL,DIR_WS_HTTPS_CATALOG 和 DIR_WS_CATALOG 这三个常量都可以 /includes/configure.php 文件中找到。

Code:
 
if (!$static) { 

  if (zen_not_null($parameters)) { 

 
    $link .= 'index.php?main_page='. $page . "&" . zen_output_string($parameters); 

  } else { 
 
    $link .= 'index.php?main_page=' . $page; 
 
  } 
 
} else { 

  if (zen_not_null($parameters)) { 

    $link .= $page . "?" . zen_output_string($parameters); 

  } else { 

    $link .= $page; 

  } 

}
通过$static来判断链接组成样式

实例
Code:
 
zen_href_link(FILENAME_ADVANCED_SEARCH)
生成搜索页链接

Code:
 
http://www.xxx.com/advanced_search.php
Code:
 
zen_href_link(FILENAME_DEFAULT,'cPath=1_2')
生成一级分类id1下二级分类id2的分类页链接

Code:
  
http://www.xxx.com/index.php?main_page=index&cPath=1_2
Code:
 
zen_href_link(FILENAME_PRODUCT_INFO,'cPath=1_4&products_id=1')
生成一级分类id1下二级分类id4的里的产品id1的产品页链接

Code:
 
http://www.xxx.com/index.php?main_page=product_info&cPath=1_4&products_id=1
产品页链接有更规范的方式:zen_href_link(zen_get_info_page(1) 'cPath=1_4&products_id=1')
Reply With Quote
 


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Prescription-glasses.com offers prescription glasses online at discount prices.
All times are GMT +8. The time now is 01:20 AM.


Powered by vBulletin Version 3.8.7
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.