ZenCart图片输出函数:zen_image()分析

zen_image() 函数位于 /includes/functions/html_output.php 文件中(大约160行),主要用于图片的输出。zen_image()它一共有5个参数。

参数介绍

参数作用
$src图片地址
$alt输出图片alt和title属性
$width图片宽度
$height图片高度
$parameters额外参数,可以用于增加id,class属性

代码分析

global $template_dir;

// soft clean the alt tag
$alt = zen_clean_html($alt);

定义全局变量模板路径,zen_clean_html()字面上就可以看出,除去html格式的。后期介绍。

//auto replace with defined missing image
    if ($src == DIR_WS_IMAGES and PRODUCTS_IMAGE_NO_IMAGE_STATUS == '1') {
      $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中定义

if ( (empty($src) || ($src == DIR_WS_IMAGES)) && (IMAGE_REQUIRED == 'false') ) {
  return false;
}


$src为空,IMAGE_REQUIRED图片调试为false时,返回false

if (!file_exists($src)) {
  $src = str_replace(DIR_WS_TEMPLATES . $template_dir, DIR_WS_TEMPLATES . 'template_default', $src);
}


当图片不存在时,如会将路径转换为默认模板路径尝试。

if (function_exists('handle_image')) {
  $newimg = handle_image($src, $alt, $width, $height, $parameters);
  list($src, $alt, $width, $height, $parameters) = $newimg;
}


Image Handler中用到。zencart默认没集成这个模块。

$width = empty($width) ? $width : intval($width);
$height = empty($height) ? $height : intval($height);


$width和$height部位空时,转换为一个整数。

$image = '<img src="' . zen_output_string($src) . '" alt="' . zen_output_string($alt) . '"';


组合图片的src路径,和alt属性

if (zen_not_null($alt)) {
  $image .= ' title=" ' . zen_output_string($alt) . ' "';
}


$alt不为空时,title属性和alt属性值一致

$image_size = @getimagesize($src);

 

getimagesize()可以获取图片参数,函数不需要 GD 图像库,返回数组4个值,宽度,高度,图片格式,imageinfo

$ratio = ($image_size[0] != 0 ? $width / $image_size[0] : 1);
     if ($image_size[1]*$ratio > $height) {
       $ratio = $height / $image_size[1];
       $width = $image_size[0] * $ratio;
     } else {
       $height = $image_size[1] * $ratio;
     }

 

作用:保护图片缩放后不变形, $ratio定义size和实际size比。

实例

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中

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后台设置。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值