zen_image() 函数位于 /includes/functions/html_output.php 文件中(大约160行),主要用于图片的输出。zen_image()它一共有5个参数。
参数介绍
参数
|
作用
|
$src
|
图片地址
|
$alt
|
输出图片alt和title属性
|
$width
|
图片宽度
|
$height
|
图片高度
|
$parameters
|
额外参数,可以用于增加id,class属性
|
代码分析
3
|
// soft clean the alt tag
|
4
|
$alt= zen_clean_html($alt);
|
定义全局变量模板路径,zen_clean_html()字面上就可以看出,除去html格式的。后期介绍。
1
|
//auto replace with defined missing image
|
2
|
if($src== DIR_WS_IMAGESandPRODUCTS_IMAGE_NO_IMAGE_STATUS =='1') {
|
3
|
$src= DIR_WS_IMAGES . PRODUCTS_IMAGE_NO_IMAGE;
|
作用当数据库中图片字段为空,$src仅显示images时,前台会显示一张默认的图片。
DIR_WS_IMAGES常量 /includes/configure.php
文件中找到,PRODUCTS_IMAGE_NO_IMAGE在后台Configuration --> Images
-->Product Image - No Image picture中定义
1
|
if( (empty($src) || ($src== DIR_WS_IMAGES)) && (IMAGE_REQUIRED =='false') ) {
|
$src为空,IMAGE_REQUIRED图片调试为false时,返回false
1
|
if(!file_exists($src)) {
|
2
|
$src=str_replace(DIR_WS_TEMPLATES .$template_dir, DIR_WS_TEMPLATES .'template_default',$src);
|
当图片不存在时,如会将路径转换为默认模板路径尝试。
1
|
if(function_exists('handle_image')) {
|
2
|
$newimg= handle_image($src,$alt,$width,$height,$parameters);
|
3
|
list($src,$alt,$width,$height,$parameters) =$newimg;
|
Image Handler中用到。zencart默认没集成这个模块。
1
|
$width=empty($width) ?$width:intval($width);
|
2
|
$height=empty($height) ?$height:intval($height);
|
$width和$height部位空时,转换为一个整数。
1
|
$image='<img src="'. zen_output_string($src) .'" alt="'. zen_output_string($alt) .'"';
|
组合图片的src路径,和alt属性
1
|
if(zen_not_null($alt)) {
|
2
|
$image.=' title=" '. zen_output_string($alt) .' "';
|
$alt不为空时,title属性和alt属性值一致
1
|
$image_size= @getimagesize($src);
|
getimagesize()可以获取图片参数,函数不需要 GD 图像库,返回数组4个值,宽度,高度,图片格式,imageinfo
1
|
$ratio= ($image_size[0] != 0 ?$width/$image_size[0] : 1);
|
2
|
if($image_size[1]*$ratio>$height) {
|
3
|
$ratio=$height/$image_size[1];
|
4
|
$width=$image_size[0] *$ratio;
|
6
|
$height=$image_size[1] *$ratio;
|
作用:保护图片缩放后不变形, $ratio定义size和实际size比。
实例
1
|
zen_image($template->get_template_dir(HEADER_LOGO_IMAGE, DIR_WS_TEMPLATE,$current_page_base,'images').'/'. HEADER_LOGO_IMAGE, HEADER_ALT_TEXT)
|
输出logo,参数$width 和$height为空,$alt为HEADER_ALT_TEXT,其中HEADER_ALT_TEXT和HEADER_LOGO_IMAGE常量在languages\english\header.php中
1
|
zen_image(DIR_WS_IMAGES .$categories->fields['categories_image'],$categories->fields['categories_name'], SUBCATEGORY_IMAGE_WIDTH, SUBCATEGORY_IMAGE_HEIGHT)
|
子分类图片,图片路径$categories->fields['categories_image'],alt属
性$categories->fields['categories_name'],宽高SUBCATEGORY_IMAGE_WIDTH,
SUBCATEGORY_IMAGE_HEIGHT后台设置。