>  기사  >  CMS 튜토리얼  >  Dreamweaver Dedecms는 알파벳순 색인 검색 기능을 구현합니다.

Dreamweaver Dedecms는 알파벳순 색인 검색 기능을 구현합니다.

(*-*)浩
(*-*)浩원래의
2019-12-27 14:43:212218검색

Dreamweaver Dedecms는 알파벳순 색인 검색 기능을 구현합니다.

DEDE 시스템에는 "알파벳순 인덱스" 기능이 있습니다

# 🎜 🎜#구현 방법은 다음과 같습니다

첫 번째 단계: 먼저 데이터베이스 구조를 수정하고 병음을 저장할 필드를 추가해야 합니다. (권장 학습:##((((#)#🎜🎜 ## 🎜🎜#dede_archives 테이블을 수정하고 pytitle, varchar(250)을 추가하고 비워둘 수 있습니다. 다음은 테이블을 생성하는 SQL 입니다. 빨간색 부분은 새로운 부분으로, phpmyadmin으로 테이블 구조를 직접 수정하여 구현할 수 있습니다.

CREATE TABLE `dede_archives` (
`ID` int(11) unsigned NOT NULL auto_increment,
`typeid` int(11) unsigned NOT NULL default ‘0′,
`typeid2` int(11) unsigned NOT NULL default ‘0′,
`sortrank` int(11) NOT NULL default ‘0′,
`iscommend` smallint(6) NOT NULL default ‘0′,
`ismake` smallint(6) NOT NULL default ‘0′,
`channel` int(11) NOT NULL default ‘1′,
`arcrank` smallint(6) NOT NULL default ‘0′,
`click` int(11) unsigned NOT NULL default ‘0′,
`money` smallint(6) NOT NULL default ‘0′,
`title` varchar(80) NOT NULL default ”,
`shorttitle` varchar(36) NOT NULL default ”,
`color` varchar(10) NOT NULL default ”,
`writer` varchar(30) NOT NULL default ”,
`source` varchar(50) NOT NULL default ”,
`litpic` varchar(100) NOT NULL default ”,
`pubdate` int(11) NOT NULL default ‘0′,
`senddate` int(11) NOT NULL default ‘0′,
`arcatt` smallint(6) NOT NULL default ‘0′,
`adminID` int(11) NOT NULL default ‘0′,
`memberID` int(11) unsigned NOT NULL default ‘0′,
`description` varchar(250) NOT NULL default ”,
`keywords` varchar(60) NOT NULL default ”,
`templet` varchar(60) NOT NULL default ”,
`lastpost` int(11) NOT NULL default ‘0′,
`postnum` int(11) NOT NULL default ‘0′,
`redirecturl` varchar(150) NOT NULL default ”,
`mtype` int(11) NOT NULL default ‘0′,
`userip` varchar(20) NOT NULL default ”,
`locklikeid` smallint(6) NOT NULL default ‘0′,
`likeid` varchar(240) default ”,
`pytitle` varchar(250) default NULL,
PRIMARY KEY (`ID`),
KEY `click` (`click`),
KEY `senddate` (`senddate`),
KEY `typeid` (`typeid`),
KEY `arcrank` (`arcrank`),
KEY `sortrank` (`sortrank`),
KEY `pubdate` (`pubdate`),
KEY `litpic` (`litpic`),
KEY `typeid2` (`typeid2`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
2단계: 기사 제목의 병음 이니셜을 가져와 데이터베이스에 저장합니다.

수정해야 할 파일은 다음과 같습니다.

article_add.php、article_add_action.php、article_edit.php、article_eidt_action.php

은 각각 기사를 추가하고 기사를 수정하여 제어되는 4개의 파일입니다.

article_add.php를 다음으로 수정하세요.

        <td> <input name=”iscommend” type=”checkbox” id=”iscommend” value=”11″>
        推荐
        <input name=”isbold” type=”checkbox” id=”isbold” value=”5″>
        加粗
        <input name=”isjump” type=”checkbox” id=”isjump” value=”1″ onClick=”ShowUrlTr()”>
        跳转网址
        <input name=”upinyin” type=”checkbox” id=”upinyin” value=”1″ checked=”checked”>保存拼音 </td>

병음 저장 옵션을 추가하세요.

article_edit.php를 다음으로 수정하세요.

        <td> <input name=”iscommend” type=”checkbox” id=”iscommend” value=”11″<?php if($arcRow["iscommend"]>10) echo ” checked”;?>>
        推荐
        <input name=”isbold” type=”checkbox” id=”isbold” value=”5″<?php if($arcRow["iscommend"]==5||$arcRow["iscommend"]==16) echo ” checked”;?>>
        加粗
          <input name=”isjump” onClick=”ShowUrlTrEdit()” type=”checkbox” id=”isjump” value=”1″<?php echo $arcRow["redirecturl"]==”" ? “” : ” checked”;?>>
        跳转网址
        <input name=”upinyin” type=”checkbox” id=”upinyin” value=”1″<?php if($arcRow["pytitle"]<>”") echo ” checked”;?>>
保存拼音 </td>

위와 동일합니다.

artify_add_action.php를 다음으로 수정:

//获得标题的拼音码
if($upinyin==1) $pytitle = str_replace(“_”,”",GetPinyin($title,1));
//加入数据库的SQL语句
//———————————-
$inQuery = “INSERT INTO dede_archives(
typeid,typeid2,sortrank,iscommend,ismake,channel,
arcrank,click,money,title,shorttitle,color,writer,source,litpic,
pubdate,senddate,arcatt,adminID,memberID,description,keywords,templet,redirecturl,pytitle)
VALUES (‘$typeid’,&#39;$typeid2′,’$sortrank’,&#39;$iscommend’,&#39;$ismake’,&#39;$channelid’,
‘$arcrank’,&#39;0′,’$money’,&#39;$title’,&#39;$shorttitle’,&#39;$color’,&#39;$writer’,&#39;$source’,&#39;$litpic’,
‘$pubdate’,&#39;$senddate’,&#39;$arcatt’,&#39;$adminID’,&#39;0′,’$description’,&#39;$keywords’,&#39;$templet’,&#39;$redirecturl’,‘$pytitle’);”;

GetPingyin 시스템 기능을 통해 기사 제목의 병음 이니셜을 가져오고 삽입 문을 생성합니다. 제목 병음의 첫 글자를 pytitle 필드에 저장합니다.

마찬가지로, article_eidt_action.php를 다음과 같이 수정합니다:

//用拼音命名
if($upinyin==1) $pytitle = str_replace(“_”,”",GetPinyin($title,1));
//更新数据库的SQL语句
//———————————-
$inQuery = ”
update dede_archives set
typeid=’$typeid’,
typeid2=’$typeid2′,
sortrank=’$sortrank’,
redirecturl=’$redirecturl’,
iscommend=’$iscommend’,
ismake=’$ismake’,
arcrank=’$arcrank’,
money=’$money’,
title=’$title’,
color=’$color’,
writer=’$writer’,
source=’$source’,
litpic=’$litpic’,
pubdate=’$pubdate’,
description=’$description’,
keywords=’$keywords’,
templet=’$templet’,
shorttitle=’$shorttitle’,
arcatt=’$arcatt’,
pytitle=’$pytitle’
where ID=’$ID’; “;

세 번째 단계는 홈페이지 템플릿이나 사용해야 하는 기타 템플릿을 수정하는 것입니다. 이 기능.

<div>中文按声母排列:<a href=”/plus/search.php?keyword=a&searchtype=pytitle”>A</a> – <a href=”/plus/search.php?keyword=b&searchtype=pytitle”>B</a> – <a href=”/plus/search.php?keyword=c&searchtype=pytitle”>C</a> – <a href=”/plus/search.php?keyword=d&searchtype=pytitle”>D</a> – <a href=”/plus/search.php?keyword=e&searchtype=pytitle”>E</a> – <a href=”/plus/search.php?keyword=f&searchtype=pytitle”>F</a> – <a href=”/plus/search.php?keyword=g&searchtype=pytitle”>G</a> – <a href=”/plus/search.php?keyword=h&searchtype=pytitle”>H</a> – <a href=”/plus/search.php?keyword=j&searchtype=pytitle”>J</a> – <a href=”/plus/search.php?keyword=k&searchtype=pytitle”>K</a> – <a href=”/plus/search.php?keyword=l&searchtype=pytitle”>L</a> – <a href=”/plus/search.php?keyword=m&searchtype=pytitle”>M</a> – <a href=”/plus/search.php?keyword=n&searchtype=pytitle”>N</a> – <a href=”/plus/search.php?keyword=o&searchtype=pytitle”>O</a> – <a href=”/plus/search.php?keyword=p&searchtype=pytitle”>P</a> – <a href=”/plus/search.php?keyword=q&searchtype=pytitle”>Q</a> – <a href=”/plus/search.php?keyword=r&searchtype=pytitle”>R</a> – <a href=”/plus/search.php?keyword=s&searchtype=pytitle”>S</a> – <a href=”/plus/search.php?keyword=t&searchtype=pytitle”>T</a> – <a href=”/plus/search.php?keyword=w&searchtype=pytitle”>W</a> – <a href=”/plus/search.php?keyword=x&searchtype=pytitle”>X</a> – <a href=”/plus/search.php?keyword=y&searchtype=pytitle”>Y</a> – <a href=”/plus/search.php?keyword=z&searchtype=pytitle”>Z</a> <- 中文软件名按第一汉字声母排列</div>
핵심 부분은 키워드=문자&검색 유형=pytitle입니다.

네 번째 단계는 search.php를 통해 검색을 구현하는 것입니다. dedecms는 3자 미만의 검색을 허용하지 않으므로 수정이 필요합니다.

/plus/search.php 파일을 수정합니다. 수정된 부분은 빨간색입니다.

//判断是否为声母搜索
if($searchtype<>”pytitle”){
if($keyword==”"||strlen($keyword)<3){
ShowMsg(“关键字不能小于3个字节!”,”-1″);
exit();
}
}

다섯 번째 단계, 검색을 수정하고 구현합니다.

Modify /include/inc_arcsearch_view.php, target:

문자 키워드 얻기, 새로운 검색 조건 생성, 검색 유형 키워드 얻기($searchtype) , 호출 다양한 디스플레이 템플릿.

자, 계속해서 수정해 보겠습니다. 빨간색 부분은 신규 또는 수정된 부분입니다.

GetKeywordSql() 함수를 수정하고 다음을 추가합니다.

//声母搜索支持
if($this->SearchType==”pytitle”){
  $kwsql .= ” And dede_archives.pytitle like ‘$this->Keywords%’ “;
}

foreach($ks에 넣는 것이 좋습니다. as $k) {…}다음

6번째 단계는 위의 과정을 거쳐 알파벳순 색인을 이루었지만 시스템의 검색 템플릿이 호출되어 시스템의 특성에 적합하지 않습니다. 알파벳순 색인이 필요하므로 한 단계 더 나아가 새로운 템플릿 지원을 추가해야 합니다.

1. /include/inc_arcsearch_view.php를 수정하고 __construct() 생성자 함수를 수정합니다. For:

if($this->SearchType==”pytitle”) $tempfile = $GLOBALS[&#39;cfg_basedir&#39;].$GLOBALS[&#39;cfg_templets_dir&#39;].”/”.$GLOBALS[&#39;cfg_df_style&#39;].”/”.$GLOBALS[&#39;cfg_templets_pysearch&#39;];
  else $tempfile = $GLOBALS[&#39;cfg_basedir&#39;].$GLOBALS[&#39;cfg_templets_dir&#39;].”/”.$GLOBALS[&#39;cfg_df_style&#39;].”/search.htm”;

목표는 $searchtype==pytitle일 때 전역 변수 cfg_templets_pysearch로 정의된 템플릿을 호출하는지 결정하는 것입니다.

2. include/config_hand.php 파일을 수정합니다. 전역 변수 cfg_templets_pysearch를 추가합니다.

//拼音搜索模板
$cfg_templets_pysearch = ‘pylist.htm’;

그런 다음 템플릿 폴더에 pylist.htm 템플릿을 추가하여 알파벳순 목록의 결과를 표시할 수 있습니다.

7단계, 아직 끝나지 않았습니다. 디스플레이 범위를 제한하려면 어떻게 해야 합니까? 예를 들어, 한 단계 더 나아가기 위해 소프트웨어나 특정 열만 표시하고 싶습니다.

사실 검색은 $typeid(열 번호), $channeltype(문서 유형 번호), $orderby(정렬 방법) 등과 같은 많은 매개 변수를 지원합니다. 이제 무엇을 해야 할지 알았습니다. ?

아직 모릅니다. 예는 다음과 같습니다.

<a href=”/plus/search.php?keyword=a&searchtype=pytitle&typeid=2&$channeltype=3&$orderby=title”>A</a>

위 내용은 Dreamweaver Dedecms는 알파벳순 색인 검색 기능을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.