文档章节

dedecms织梦获得首字母或拼音的方法,并实现文章列表按首字母归类

越野小生
 越野小生
发布于 2015/11/28 22:30
字数 669
阅读 63
收藏 4

方法一,织梦默认有这个函数,在include/inc/inc_fun_funAdmin.php中.即SpGetPinyin()

但他只能得到全拼,没法得到首字母,

用法举例

$pingyin=GetPinyin($row['title'],0,1);
$a=substr(GetPinyin($row['title']),0,1);//得到拼音首字母


方法二,如果你只想得到首字母,不需要全拼,还可以用以下函数得到首字母

if (ord($row['title'])>128) { //汉字开头

 $letter=getfirstchar2($row['title']);

}else if(ord($row['title'])>=48 and ord($row['title'])<=57){ //数字开头

 $letter=iconv_substr($title,0,1,'utf-8');

}else if(ord($row['title'])>=65 and ord($row['title'])<=90){ //大写英文开头

$letter=iconv_substr($row['title'],0,1,'utf-8');


}else if(ord($row['title'])>=97 and ord($row['title'])<=122){ //小写英文开头

 $letter=iconv_substr($row['title'],0,1,'utf-8');
$letter=strtoupper($letter);//字母转换成大写
}

print_r($letter);exit;
 function getfirstchar2($s0){
$s=iconv("UTF-8","gb2312", $s0); 
$asc=ord($s{0})*256+ord($s{1})-65536; 
if($asc>=-20319 and $asc<=-20284)return "A"; 
if($asc>=-20283 and $asc<=-19776)return "B"; 
if($asc>=-19775 and $asc<=-19219)return "C"; 
if($asc>=-19218 and $asc<=-18711)return "D"; 
if($asc>=-18710 and $asc<=-18527)return "E"; 
if($asc>=-18526 and $asc<=-18240)return "F"; 
if($asc>=-18239 and $asc<=-17923)return "G"; 
if($asc>=-17922 and $asc<=-17418)return "H"; 
if($asc>=-17417 and $asc<=-16475)return "J"; 
if($asc>=-16474 and $asc<=-16213)return "K"; 
if($asc>=-16212 and $asc<=-15641)return "L"; 
if($asc>=-15640 and $asc<=-15166)return "M"; 
if($asc>=-15165 and $asc<=-14923)return "N"; 
if($asc>=-14922 and $asc<=-14915)return "O"; 
if($asc>=-14914 and $asc<=-14631)return "P"; 
if($asc>=-14630 and $asc<=-14150)return "Q"; 
if($asc>=-14149 and $asc<=-14091)return "R"; 
if($asc>=-14090 and $asc<=-13319)return "S"; 
if($asc>=-13318 and $asc<=-12839)return "T"; 
if($asc>=-12838 and $asc<=-12557)return "W"; 
if($asc>=-12556 and $asc<=-11848)return "X"; 
if($asc>=-11847 and $asc<=-11056)return "Y"; 
if($asc>=-11055 and $asc<=-10247)return "Z"; 
return false; 
}


三,如何实现文章列表中,按首字母进行归类归档排序?下面是完整代码

<div class="container padding-big"style="min-height:200px;">
<p class="text-large">{dede:type }[field:typename/]{/dede:type}</p>
<div class="line-big">
{dede:php} 
$sql = "select arc.id,arc.writer,arc.typeid, arc.title, arc.senddate,tp.sitepath,tp.namerule,tp.typedir from dede_archives  arc  left join `#@__arctype` tp on arc.typeid=tp.id where arc.typeid=2";
 $dsql->SetQuery($sql);
$dsql->Execute();//执行SQL操作
while($row = $dsql->GetArray()){
//print_r($row['title']);exit;
//$pingyin=GetPinyin($row['title'],0,1);
$letter=substr(GetPinyin($row['title']),0,1);//取得拼音首字母
$letter=strtoupper($letter);

$arr[$letter]['writer'][]=$row["writer"];
$arr[$letter]['url'][]=GetFileUrl($row['id'],$row['typeid'],$row['senddate'],$row['title'],0,0,$row['namerule'],$row['typedir'],0, '',0,'',$row['sitepath']);
$arr[$letter]['title'][]=$row["title"];       
} 
ksort($arr);//字母排序
//print_r($arr);exit;
$b=1;
foreach($arr as $k=>$v){

//print_r($v);exit;
echo '<div class="x3"><p class="padding-left bg-eee st">'.strtoupper($k).'</p>';
for ($x=0; $x<count($v['title']); $x++) {
			 echo '<a href="'.$v[url][$x].'"><strong>'. $v[title][$x].'</strong></a><br/><hr/>';
			
		} 	 
			 echo '<br/></div>';// print_r($b%4);
			 if($b%3==0){echo '<hr class="space"></hr>';//hr{background:#ddd;color:#ddd;clear:both;float:none;width:100%;height:1px;margin:10px 0;border:none;-moz-box-sizing:content-box;box-sizing:content-box;}hr.space{background:#fff;color:#fff;visibility:hidden;}hr的css,强制换行,防止错位
			 }
			 $b++;
             }
{/dede:php}
</div>
</div>




© 著作权归作者所有

共有 人打赏支持
越野小生
粉丝 3
博文 113
码字总数 32174
作品 0
杨浦
DEDE删除织梦链友情链接以及logo图片友情链接

织梦CMS v5.7,在友情链接中会自动添加“织梦链”,可以考虑删除。不过,在后台管理中,并没有发现织梦链管理,所以只能修改源文件。dede博客-598080707.NET   DedeCMS v5.7 删除友情链接中...

asqq8
07/18
0
0
DedeCMS数据负载性能优化方案 简单几招让你DedeCMS提速N倍

前文介绍了DedeCMS栏目列表页实现完美分页的方法,避免了大部分重复栏目标题对搜索引擎的影响,对SEO更有利。今天,分享一下DedeCMS数据负载性能优化的方法。 接触织梦也有三年多时间了,对它...

mickelfeng
2014/05/31
0
0
DEDE 后台模块管理空列表的解决办法

很多用户反馈,打开插件管理,插件列表为空白,这个是织梦官方的插件服务器不稳定所致的. 官方的模块从V57发布后,基本没有发布新模块,出现此问题的解决办法,就是屏蔽掉链接官方的插件服务器更新...

吾爱
2013/06/09
0
0
织梦dedecms教程文章列表 “隔行换色” 的方法

织梦dedecms教程文章列表 “隔行换色” 的方法 {dede:arclist orderby=pubdate titlelen='26′ row='10′}[field:global runphp='yes' name=autoindex]$a="<div id='a'>";$b="<div id='b'>";......

西西爱OS
2012/10/02
0
0
dedecms织梦首页被篡改 网站被黑被跳转的解决办法建议

2018年的中秋节即将来临,我们Sine安全公司,最近接到很多用dedecms程序的企业公司网站客户的反馈,说是公司网站经常被篡改,包括网站首页的标题内容以及描述内容,都被改成了什么北京赛车,北...

网站安全
09/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Sql语言与MySql数据库

1. 数据库简介 1. 数据库,就是存储数据的仓库,只能通过sql语言来访问,数据库也是一个文件系统。通常,MySQL、Oracle等数据库,也被称为关系型数据库,其保存的不仅仅只是数据,还包括数据...

江左煤郎
26分钟前
0
0
IDEA 取消自动import .*

打开设置 > Editor > Code Style > Java > Scheme Default > Imports ① 将 Class count to use import with "*" 改为 99 (导入同一个包的类超过这个数值自动变为 * ) ② 将 Names count ......

乔老哥
28分钟前
1
0
PostGIS学习笔记(开篇)

PostGIS事实上算是笔者开始写博客的第一篇内容。而事实上那篇博文的内容并不丰富,笔者对PostGIS的了解仍然不多,然而17年在OSGeo课程学习时对PostGIS又有了进一步了解,并逐步发现它的强大。...

胖胖雕
28分钟前
1
0
【Centos】在nginx服务器中配置php和mysql

接上一章《【Centos】利用Vultr服务器和namesilo布网》(https://my.oschina.net/u/3776619/blog/2051986),在Centos中配置好nginx,并在iptables中开启了80端口,和为了远程mysql操作方便开...

yongh701
51分钟前
3
0
flume -- fileChannel简要分析其过程

flume之event写入FileChannel doPut(event)-->获取共享锁后[log.lockShared();]-->FlumeEventPointer ptr = log.put(transactionID, event); 此处的log.put即将transactionID及event进行后续......

-九天-
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部