yzncms标识做url优化

第一步:后台增加控制开关 url_on

第二步: routeroute_cms.php 修改 路由

Route::rule('lists/:catid/[:condition]', 'cms/index/lists')->pattern(['catid' => 'd+', 'condition' => '[0-9_&=a-zA-Z]+']);
Route::rule('shows/:catid/:id', 'cms/index/shows')->pattern(['catid' => 'd+', 'id' => 'd+']);

替换如下

$url_on = Db::name('config')->where('name','url_on')->cache(3600)->value('value');
    if($url_on == 1){
    	Route::rule('/:catid/:id', 'cms/index/shows')->pattern(['catid' => '[d|w/]+', 'id' => 'd+'])->before(['appcmsbehaviorShowInfo']);
    	Route::rule(':catid/[:condition]', 'cms/index/lists')->pattern(['catid' => '[d|w/]+', 'condition' => '[0-9_&=a-zA-Z]+'])->before(['appcmsbehaviorCategoryInfo']);
		
    }else{
    	Route::rule('lists/:catid/[:condition]', 'cms/index/lists')->pattern(['catid' => 'd+', 'condition' => '[0-9_&=a-zA-Z]+']);
    	Route::rule('shows/:catid/:id', 'cms/index/shows')->pattern(['catid' => 'd+', 'id' => 'd+']);
    }


第三步: 修改applicationcmsfunction.php

buildContentUrl方法改为如下

//创建内容链接

function buildContentUrl($catid, $id, $suffix = true, $domain = false)
{
    $url_on = Db::name('config')->where('name','url_on')->value('value');
    if($url_on == 1){
        $catdir = Db::name('category')->where('id',$catid)->value('catdir');
        return url('cms/index/shows', ['catid' => $catdir, 'id' => $id], $suffix, $domain);
    }else{
        return url('cms/index/shows', ['catid' => $catid, 'id' => $id], $suffix, $domain);
    }
}

第四步: 修改applicationcmscontrollerIndex.php

内容 shows()方法修改

$catid = $this->request->param('catid/d', 0);

替换

$catid = $this->request->param('catid/s', 0);


$category = getCategory($catid);

替换为

if (config('url_on') == 1) // winner.zyy  栏目判断 20-11-17
        {
            $category = getCategoryByName($catid);
            $catid = $category['id'];
        }
        else
        {
            $category = getCategory($catid);
}


$modelInfo = cache('Model')[$modelid];

下方加入判断

if (!is_numeric($id)) // winner.zyy  栏目判断 20-11-17
{ 
    $id = Db::name($modelInfo['tablename'])->where('subtitle', $id)->value("id"); 
}




内容 lists()方法修改

$catid = $this->request->param('catid/d', 0);

替换

$catid = $this->request->param('catid/s', 0);


继续找到

$category = getCategory($catid);

替换为

if (config('url_on') == 1) 
{
  $category = getCategoryByName($catid);
  $catid = $category['id'];
}else{
  $category = getCategory($catid);
}

继续找到

$modelInfo = cache('Model')[$modelid];

替换为

if (!is_numeric($id)) 
{
    $id = Db::name($modelInfo['tablename'])->where('subtitle', $id)->value("id");
}


第五步:

applicationcmsbehavior 目录下创建ShowInfo.php

代码如下:

<?php
namespace appcmsbehavior;
use appcmsmodelCategory as CategoryModel;
use appcommoncontrollerAdminbase;
use thinkDb;
class ReadInfo
{
    public function run()
    {
       $w_url = explode("/",request()->url());
       $url_on = Db::name('category')->where('catdir',$w_url['1'])->find();
       if(!$url_on){
        return false;
       }
    }
}

第六步:

applicationcmsbehavior 目录下创建CategoryInfo.php

代码如下:

<?php
namespace appcmsbehavior;

use appcmsmodelCategory as CategoryModel;
use appcommoncontrollerAdminbase;
use thinkDb;

class CategoryInfo
{
    public function run()
    {

       $request_url = explode("/",request()->url());
       $w_url = str_replace(".html","",$request_url['1']);
       $url_on = Db::name('category')->where('catdir',$w_url)->find();
       $url = $url_on['catdir'].".html";
       if($url !== $request_url['1']){
       		return false;
       }
    }
}


完成 记得开关