什么是類目組合?
類目組合——其實我不知道業內怎么叫的,這是我個人的叫法……畢竟,我只是一個網絡獨行俠,對于專業知識很片面。不過很好理解,就是多個類目兩兩組合形成大量數據。
說實話,我太宅了,這不僅僅表現在現實生活中,在網上也是這樣,我很少去看一些我認為亂七八糟的內容,所以有點后知后覺。第一次看見這種方式還是去年的時候(應該老早老早就有這種做法了),當時其實是看seo的,結果看見一個排名不錯的網站(做歐美家具的)就點進去,才發現這種做法——驚為天人!之前我只知道用于搜索,而無法呈現給用戶或搜索引擎……于是開始看怎么做,網上找了很久沒找到做法,只是看到了更多這種表現形式,如旅游網就特別多。
還是先看一下類目組合到底是個什么樣子吧!
如上圖所示,這里有很多不同的分類方式,每一個方式可以與其他分類方式下的一種進行組合,從而產生無數的類目頁面。如石雕、人物、醫院是一個單獨的類目,有相關的數據;而如果你選擇了“石雕+人物”,則又組合成一個新的類目“石雕人物”,調取的數據當然是既屬于“石雕”又屬于“人物”的那些內容了;而如果你選擇了“石雕+人物+醫院”,那么又形成了一個新的類目“醫院人物石雕”,調取的數據當然是“既屬于石雕又屬于人物還屬于醫院”的那些內容……如此兩兩組合,就產生了無數的類目頁面。這就是我所說的類目組合。
類目組合有什么用?
1、方便用戶查閱他想看的
類目組合其實就是之前的多級聯動搜索,只是用另外一種方式來呈現了。對于方便用戶來說,直接呈現點擊比下拉選擇更方便和直觀。
2、搜索引擎可抓??!
這一點應該是其最為有價值的地方。目前來說,用戶搜索表單是搜索引擎無法抓起的,而網站中那么多的數據卻只能有個別的欄目頁面(甚至有的網站就一個產品列表頁面)提供給搜索引擎,這是資源的浪費。對于seo來說,這——很可恥??!之前我的做法是建立專題頁面來組合,就是多了一個后臺動作,你需要手動去創建n多專題頁。
3、行業需要
對于這一點,在09年就遇到了,當時第一次接觸雕塑這個行業,再與客戶溝通后發現:一個雕塑作品,既可能是“石雕”,又可能是“人物雕塑”,還可能是“名人雕塑”、“抽象雕塑”、“西方雕塑”……那么傳統的分類不論在后臺管理以及前臺呈現上都不足以表現這個特點。當時就做成了tag的形式,也是后續相關網站的前身,只是前臺部分除了既定類目外就是手動創建專題了……由此也可以看出,本思路需要與你的行業結合,如果你所在的領域只有固定的分類形式,那么這個類目組合不適合你!
類目組合怎么做?
后臺部分
后臺部分的做法很簡單,就是傳統的分類管理程序。根據你的分類劃分,可以添加二級分類甚至三級分類??紤]前臺程序,你可能需要自定義路徑。如我,前臺程序是這樣的形式:diaosu-shidiao--renwu--yiyuan--1.html,那么久需要路徑字段,當然如果沒有設定路徑你的前臺程序應該類似與這樣:diaosu-1-101-2-201-3-301-1.html。
前臺部分
1、你可能需要偽靜態
<!--產品列表--> <rule name="Plist" stopProcessing="true"> <match url="^diaosu-([a-z]*)-([a-z]*)-([a-z]*)-([a-z]*)-([a-z]*)-([a-z]*)-([\d]+).html" /> <conditions logicalGrouping="MatchAll" trackAllCaptures="false" /> <action type="Rewrite" url="index.php?c=Index&a=plist&k1={R:1}&k2={R:2}&k3={R:3}&k4={R:4}&k5={R:5}&k6={R:6}&p={R:7}" /> </rule>
2、獲取參數后組合標題、關鍵詞和描述、調取相關數據
$tj='s=1';//數據條件,包括產品、文章。我的內容默認都是不發布的,讓程序每隔一段時間自動發布n條,s=1代表已經發布的數據 $casetj='';//相關案例的查詢條件 $g=I('get.');//獲取地址欄參數 $title='';//要生成的標題 $keyw='';//要生成的關鍵詞 $conf=S('conf');//系統配置文件,包括網站名稱、電話等等信息 $desc=$conf['title'].'為您提供各種';//要生成的描述內容。$conf['title']為網站名稱 $i=0;//這個參數主要用于控制標題,如果選擇了3個甚至更多類目會導致標題太長 foreach ($g as $key => $value) { if($value){ if($value>0){ //大于0為最后一個參數:分頁頁碼 }else{ $t=M('Category')->where('path="'.$value.'"')->find();//讀取當前參數所屬類目 if($t){ $i++; $tj.=' and tags like "%,'.$t['id'].',%"';//追加條件 $casetj.='tags like "%,'.$t['id'].',%" or ';//追加案例條件 if($t['pid']){ $tj=str_replace(' and tags like "%,'.$t['pid'].',%"','',$tj); //當前是子類,去掉其父類條件(也可以不去,看后臺怎么做的,我之所以去掉是因為后臺發布產品的時候可以選擇子類而父類不會被選中,如果你后臺選了子類會自動選擇父類就可以屏蔽這一段) } $titles[$key]=$t['title'];//標題數組,為什么是把標題存起來而不直接組合標題呢?因為我要考慮通俗的叫法。比如選擇“石雕+漢白玉+人物”,如果直接組合得到的標題是:石雕漢白玉人物雕塑,但事實上我們習慣叫:漢白玉人物石雕。所以把它存起來,后面根據類目具體情況進行組合 $keyw.=$t['title'].'雕塑,';//追加關鍵詞 }else{ $this->_empty();//沒有該類目則返回404。正常情況下應該無需此代碼,只是我再做的過程中改過路徑,并且舊路徑已經被收錄。 } } } } //下面就是根據類目進行組合標題了,這個需要根據你的實際情況進行調整,或者直接在上面生成固定順序的,那么下面這部分就不要了 if($t=$titles['k5']){ $title.=$t; } if($t=$titles['k6']){ $title.=$t; } if($t=$titles['k2']){ $title.=$t; }else{ if($t=$titles['k1']){ $title.=$t; } } if($t=$titles['k4']){ $title.=$t; }else{ if($t=$titles['k3']){ $title.=$t; } } $title.='雕塑';//追加標題文字 $desc.=$title.'作品圖片及價格,專業加工定制'.$title.',支持按圖定制,歡迎咨詢。';//追加描述文字 if($i<3){ $seotitle='【'.$title.'】廠家作品圖片價格_'.$title.'定制加工'; //當所選類目少于3個的時候的標題 重復了2次核心關鍵詞 }else{ $seotitle='【'.$title.'】廠家定制作品圖片價格'; //當所選類目大于等于3個時的標題 沒有重復核心關鍵詞(重復會導致太長,超過30和字) }
© 致遠 2020-02-03,原創內容,轉載請注明出錯:網站類目組合的價值與實現方法(php)