HTML包装函数之输出链接地址

链接函数:zen_href_link()
该函数就是HTML链接标签的包装,它主要就是输出标签的href="“里面的链接地址。比如:shopping cart,它的意思就是输出购物车的地址,常量定义:define(‘FILENAME_SHOPPING_CART’, ‘shopping_cart’);所指的页面是index.php?main_page=shopping_cart
参数列表:
$page :指的是 index.php?main_page=shopping_cart 中的shopping_cart ,意思就是说,你要输出那个页面的URL
$parameters :顾名思义就是参数了。主要就是 index.php?main_page=shopping_cart&…后面的参数
$connection:这个参数是表示是否使用HTTPS协议,如果使用HTTPS链接的话该参数赋值"SSL”,否则赋值“NONSSL”,一般使用的都是NONSSL,这也是默认的值,因为大部分的网站都是共享IP的,不适合用HTTPS协议的链接。
$add_session_id:这个就是zen_id=.。。。。。。。,如果不想要这个这个zen_id的话,就把这个值设置为false
$search_engine_safe:该URL是否对搜索引擎友好,如果是的话就TRUE,否则false,就算是true了,他还要跟一个变量一起判断:(SEARCH_ENGINE_FRIENDLY_URLS == ‘true’) && ($search_engine_safe == true) 才可以。SEARCH_ENGINE_FRIENDLY_URLS这个是做后台设置,但是到现在zencart还没有做这个功能,所以后台默认是false,而且是不显示,所以不可以设置。正因为它没有这个功能,所以才有了seo插件。
$static :这个参数表示是否是静态URL,默认的不是静态。一般这个参数使用默认值:false
$use_dir_ws_catalog:这个参数表示是否要使用目录,默认为true,就是使用该网站所在的目录,代码:if ($use_dir_ws_catalog) { if ($connection == 'SSL' && ENABLE_SSL == 'true') { $link .= DIR_WS_HTTPS_CATALOG; } else { $link .= DIR_WS_CATALOG; } } 在配置文件中定义,
define(‘DIR_WS_CATALOG’, ‘/zencarten/’);//我这里的
define(‘DIR_WS_HTTPS_CATALOG’, ‘/zencarten/’);//我这里的
这样的话,访问的url就包含这个目录名字
一般都是放在根目录下,所以很多时候都是这样定义

define(‘DIR_WS_CATALOG’, ‘/’);
define(‘DIR_WS_HTTPS_CATALOG’, ‘/’);
这样的话,访问的URL就不包含名字,因为它就是相当根目录“/”
函数的原型如下:
function zen_href_link($page = ‘’, $parameters = ‘’, $connection = ‘NONSSL’, $add_session_id = false, $search_engine_safe = true, $static = false, $use_dir_ws_catalog = true)
源代码代码如下:(原始的代码,没有见过seo插件的修改) function zen_href_link($page = '', $parameters = '', $connection = 'NONSSL', $add_session_id = true, $search_engine_safe = true, $static = false, $use_dir_ws_catalog = true) { global $request_type, $session_started, $http_domain, $https_domain; 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 . ' -->'); } 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 />'); } if ($use_dir_ws_catalog) { if ($connection == 'SSL' && ENABLE_SSL == 'true') { $link .= DIR_WS_HTTPS_CATALOG; } else { $link .= DIR_WS_CATALOG; } } 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; } } $separator = '&'; while ( (substr($link, -1) == '&') || (substr($link, -1) == '?') ) $link = substr($link, 0, -1); // Add the session ID when moving from different HTTP and HTTPS servers, or when SID is defined if ( ($add_session_id == true) && ($session_started == true) && (SESSION_FORCE_COOKIE_USE == 'False') ) { if (defined('SID') && zen_not_null(SID)) { $sid = SID; // } elseif ( ( ($request_type == 'NONSSL') && ($connection == 'SSL') && (ENABLE_SSL_ADMIN == 'true') ) || ( ($request_type == 'SSL') && ($connection == 'NONSSL') ) ) { } elseif ( ( ($request_type == 'NONSSL') && ($connection == 'SSL') && (ENABLE_SSL == 'true') ) || ( ($request_type == 'SSL') && ($connection == 'NONSSL') ) ) { if ($http_domain != $https_domain) { $sid = zen_session_name() . '=' . zen_session_id(); } } } // clean up the link before processing while (strstr($link, '&&')) $link = str_replace('&&', '&', $link); while (strstr($link, '&&')) $link = str_replace('&&', '&', $link); if ( (SEARCH_ENGINE_FRIENDLY_URLS == 'true') && ($search_engine_safe == true) ) { while (strstr($link, '&&')) $link = str_replace('&&', '&', $link); $link = str_replace('&', '/', $link); $link = str_replace('?', '/', $link); $link = str_replace('&', '/', $link); $link = str_replace('=', '/', $link); $separator = '?'; } if (isset($sid)) { $link .= $separator . zen_output_string($sid); } // clean up the link after processing while (strstr($link, '&&')) $link = str_replace('&&', '&', $link); $link = preg_replace('/&/', '&', $link); return $link; }