Wordpress-相册插件-NextGEN

教程大全 2026-01-08 09:22:07 浏览

NextGEN Gallery是Wordpress中著名的相册插件,遗憾的是不支持中文等unicode字符,本文将介绍如何将目录转换为拼音(添加图集时)。

以NextGEN 1.6.2为例:

“新增图集/图片”的路径是:admin.php?page=nggallery-add-gallery,我们在nextgen-gallery/admin/admin.php中查找“nggallery-add-gallery”,

复制代码 代码如下:switch ($_GET['page']){case "nggallery-add-gallery" :include_once ( dirname (__FILE__) . '/functions.php' ); // admin functionsinclude_once ( dirname (__FILE__) . '/addgallery.php' ); // nggallery_admin_add_gallery$ngg->addgallery_page = new nggAddGallery ();$ngg->addgallery_page->controller();break;

类nggAddGallery在addgallery.php中,鼠标悬停在”新增图集“Tab上时从浏览器的状态栏可以看到URL是 admin.php?page=nggallery-add-gallery#addgallery , 在addgallery.php中查找"addgallery"看到其调用了: nggAdmin类位于functions.php中,create_gallery函数修改如下:(红色粗体是新增加的行)

复制代码 代码如下:require_once('cn2pinyin.php');/*** nggAdmin - class for admin operation** @package NextGEN Gallery* @author Alex Rabe* @copyright 2007-2010* @access public*/class nggAdmin{/*** create a new gallery & folder** 添加中文支持 by:Elf Sundae** @class nggAdmin* @param string $gallerytitle* @param string $defaultpath* @param bool $output if the function should show an error messsage or not* @return*/function create_gallery($gallerytitle, $defaultpath, $output = true) {global $wpdb, $user_ID;// get the current user IDget_currentuserinfo();//cleanup pathname$galleryname = sanitize_file_name( $gallerytitle );// 中文转换为拼音$galleryname = cn2pinyin($galleryname,1);$galleryname = apply_filters('ngg_gallery_name', $galleryname);$nggpath = $defaultpath . $galleryname;$nggRoot = WINABSPATH . $defaultpath;$txt = '';

其中cn2pinyin是汉字转换为拼音的函数,位于cn2pinyin.php(新建此文件)中。

中文 复制代码 代码如下:= '5.0') ? array_combine($_TDataKey, $_TDataValue) : _Array_Combine($_TDataKey, $_TDataValue);arsort($_Data);reset($_Data);if ($_Code != 'gb2312')$_String = _U2_Utf8_Gb($_String);$_Res = '';for ($i = 0; $i < strlen($_String); $i++) {$_P = ord(substr($_String, $i, 1));if ($_P > 160) {$_Q = ord(substr($_String, ++$i, 1));$_P = $_P * 256 + $_Q - 65536;}$_Res .= _Pinyin($_P, $_Data);}return preg_replace("/[^a-z0-9]*/", '', $_Res);}function _Pinyin($_Num, $_Data) {if ($_Num > 0 && $_Num < 160)return chr($_Num);elseif ($_Num < -20319 || $_Num > -10247)return '';else {foreach ($_Data as $k => $v) {if ($v <= $_Num)break;}return $k;}}function _U2_Utf8_Gb($_C) {$_String = '';if ($_C < 0x80)$_String .= $_C;elseif ($_C < 0x800) {$_String .= chr(0xC0 | $_C >> 6);$_String .= chr(0x80 | $_C & 0x3F);} elseif ($_C < 0x10000) {$_String .= chr(0xE0 | $_C >> 12);$_String .= chr(0x80 | $_C >> 6 & 0x3F);$_String .= chr(0x80 | $_C & 0x3F);} elseif ($_C < 0x200000) {$_String .= chr(0xF0 | $_C >> 18);$_String .= chr(0x80 | $_C >> 12 & 0x3F);$_String .= chr(0x80 | $_C >> 6 & 0x3F);$_String .= chr(0x80 | $_C & 0x3F);}return iconv('UTF-8', 'GB2312', $_String);}function _Array_Combine($_Arr1, $_Arr2) {for ($i = 0; $i < count($_Arr1); $i++)$_Res[$_Arr1[$i]] = $_Arr2[$i];return $_Res;}//用法://第二个参数留空则为gb1232编码//echo cn2pinyin('中文测试');//第二个参数随意设置则为utf-8编码//echo cn2pinyin('中文测试',1);?>

另外,修改“新增图集”中的名称支持字符提示:

复制代码 代码如下:function tab_addgallery() {?>/// .... defaultpath ?>
(图集名称支持以下字符:中文、A-Z、a-z、0-9、-、_ ,中文将自动转换为拼音)//...
本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐