Lawyer Law and Attorney Website CMS – 律师和律师事务所网站CMS项目分析

作者 : tideit 本文共8036个字,预计阅读时间需要21分钟 发布时间: 2026-03-11 共6人阅读

Lawyer Law and Attorney Website CMS – 律师和律师事务所网站CMS项目分析

项目概述

Lawyer Law and Attorney Website CMS 是一个专为律师事务所和法律服务机构设计的网站内容管理系统。基于 Laravel 12.x 框架开发,采用 Tailwind CSS 构建现代化响应式界面,提供完整的网站管理功能。

  • 框架: Laravel 12.x
  • PHP 版本: 8.2+
  • 前端: Tailwind CSS + Vite
  • 数据库: MySQL/PostgreSQL/SQLite
  • 许可证: CodeCanyon 标准许可证

核心功能

1. 律师管理 (Lawyer Management)

 

  • 律师档案管理
  • 律师照片和简介
  • 专业领域展示
  • 社交媒体链接
  • 律师详情页面

 

2. 服务管理 (Service Management)

 

  • 法律服务分类
  • 服务详情页面
  • 服务特色展示
  • 服务定价

 

3. 案例展示 (Project/Case Portfolio)

 

  • 成功案例展示
  • 案例分类管理
  • 案例详情页面
  • 客户评价关联

 

4. 定价套餐 (Pricing Packages)

 

  • 多层级定价方案
  • 套餐功能对比
  • 在线预约咨询

 

5. 博客系统 (Blog System)

 

  • 文章发布管理
  • 文章分类
  • 评论系统(支持回复)
  • SEO 优化

 

6. 多媒体管理

 

  • 图片库 (Photo Gallery): 图片上传、分类、展示
  • 视频管理 (Video): 视频嵌入、分类展示
  • 轮播图 (Slider): 首页轮播Banner管理

 

7. 客户评价 (Testimonials)

 

  • 客户评价管理
  • 星级评分
  • 评价展示

 

8. 常见问题 (FAQ)

 

  • FAQ 分类管理
  • 问答展示

 

9. 订阅系统 (Subscriber)

 

  • 邮件订阅
  • 订阅者管理
  • 邮件通知

 

10. 页面管理 (Page Management)

 

  • 首页内容管理
  • 关于我们页面
  • 联系表单
  • 自定义页面

 

11. 计数器/统计 (Counter Items)

 

  • 案件数量统计
  • 客户数量统计
  • 获奖数量统计
  • 律师数量统计

 

12. 系统设置 (Settings)

 

  • 网站基本信息
  • Logo 和 Favicon
  • 联系信息
  • 社交媒体链接
  • SEO 设置
  • 邮件配置

 

13. 多语言支持 (Translation)

 

  • 多语言界面
  • 内容翻译管理

 

14. 验证码保护

 

  • 联系表单验证码
  • Mews Captcha 集成

 

项目结构

lawyer-cms/
├── main_files/                   # 主应用程序
│   ├── app/
│   │   ├── Http/
│   │   │   ├── Controllers/
│   │   │   │   ├── Admin/        # 后台管理控制器
│   │   │   │   │   ├── AdminController.php
│   │   │   │   │   ├── AdminLawyerController.php
│   │   │   │   │   ├── AdminServiceController.php
│   │   │   │   │   ├── AdminPackageController.php
│   │   │   │   │   ├── AdminProjectController.php
│   │   │   │   │   ├── AdminPostController.php
│   │   │   │   │   ├── AdminPostCategoryController.php
│   │   │   │   │   ├── AdminPhotoController.php
│   │   │   │   │   ├── AdminVideoController.php
│   │   │   │   │   ├── AdminSliderController.php
│   │   │   │   │   ├── AdminTestimonialController.php
│   │   │   │   │   ├── AdminFaqController.php
│   │   │   │   │   ├── AdminFeatureController.php
│   │   │   │   │   ├── AdminCounterItemController.php
│   │   │   │   │   ├── AdminPageItemController.php
│   │   │   │   │   ├── AdminMenuController.php
│   │   │   │   │   ├── AdminSubscriberController.php
│   │   │   │   │   ├── AdminSettingController.php
│   │   │   │   │   └── AdminTranslationController.php
│   │   │   │   ├── Front/        # 前端控制器
│   │   │   │   │   └── FrontController.php
│   │   │   │   └── Controller.php
│   │   │   └── Middleware/       # 中间件
│   │   ├── Models/               # 数据模型
│   │   │   ├── Admin.php         # 管理员
│   │   │   ├── Lawyer.php        # 律师
│   │   │   ├── Service.php       # 服务
│   │   │   ├── Feature.php       # 特色
│   │   │   ├── Project.php       # 案例
│   │   │   ├── Package.php       # 套餐
│   │   │   ├── PackageFeature.php # 套餐功能
│   │   │   ├── Post.php          # 文章
│   │   │   ├── PostCategory.php  # 文章分类
│   │   │   ├── Comment.php       # 评论
│   │   │   ├── Reply.php         # 回复
│   │   │   ├── Photo.php         # 图片
│   │   │   ├── Video.php         # 视频
│   │   │   ├── Slider.php        # 轮播图
│   │   │   ├── Faq.php           # FAQ
│   │   │   ├── Testimonial.php   # 评价
│   │   │   ├── Subscriber.php    # 订阅者
│   │   │   ├── Menu.php          # 菜单
│   │   │   ├── Setting.php       # 设置
│   │   │   ├── PageItem.php      # 页面项
│   │   │   ├── CounterItem.php   # 计数器
│   │   │   └── User.php          # 用户
│   │   ├── Mail/
│   │   │   └── Websitemail.php   # 邮件发送
│   │   └── Providers/
│   │       └── AppServiceProvider.php
│   ├── bootstrap/                # 启动文件
│   ├── config/                   # 配置文件
│   ├── database/
│   │   ├── migrations/           # 数据库迁移
│   │   ├── seeders/              # 数据填充
│   │   └── factories/            # 模型工厂
│   ├── public/                   # 公共资源
│   │   ├── uploads/              # 上传文件
│   │   ├── dist-admin/           # 后台编译资源
│   │   └── dist-front/           # 前台编译资源
│   ├── resources/
│   │   ├── views/                # Blade 模板
│   │   │   ├── admin/            # 后台模板
│   │   │   └── front/            # 前台模板
│   │   ├── css/                  # Tailwind CSS
│   │   └── js/                   # JavaScript
│   ├── routes/
│   │   └── web.php               # 路由定义
│   ├── storage/                  # 存储目录
│   ├── tests/                    # 测试文件
│   ├── vendor/                   # Composer 依赖
│   ├── .env                      # 环境配置
│   ├── .env.example              # 环境模板
│   ├── artisan                   # Artisan 命令
│   ├── composer.json             # Composer 配置
│   ├── package.json              # NPM 配置
│   ├── vite.config.js            # Vite 配置
│   └── README.md                 # 项目文档
├── database/
│   └── lawyer.sql                # 完整数据库备份
├── documentation/                # 文档
├── assets/                       # 资源文件
└── index.html                    # 入口页面

核心模块详解

1. 控制器层 (Controllers)

前端控制器 (FrontController)

处理所有前端页面请求:

class FrontController extends Controller
{
    public function index()      // 首页
    public function about()      // 关于我们
    public function services()   // 服务列表
    public function service($slug) // 服务详情
    public function projects()   // 案例列表
    public function project($slug) // 案例详情
    public function lawyers()    // 律师列表
    public function lawyer($slug) // 律师详情
    public function pricing()    // 定价页面
    public function blog()       // 博客列表
    public function post($slug)  // 文章详情
    public function contact()    // 联系页面
    public function appointment() // 预约表单
    public function faq()        // FAQ页面
}

后台控制器 (Admin Controllers)

每个功能模块都有独立的管理控制器:

 

  • AdminController: 仪表盘、登录
  • AdminLawyerController: 律师管理 (CRUD)
  • AdminServiceController: 服务管理 (CRUD)
  • AdminProjectController: 案例管理 (CRUD)
  • AdminPackageController: 套餐管理 (CRUD)
  • AdminPostController: 文章管理 (CRUD)
  • AdminPhotoController: 图片管理
  • AdminVideoController: 视频管理
  • AdminSliderController: 轮播图管理
  • AdminTestimonialController: 评价管理
  • AdminFaqController: FAQ管理
  • AdminSettingController: 系统设置

 

2. 模型层 (Models)

核心业务模型

Lawyer (律师)

class Lawyer extends Model
{
    // 字段: name, slug, photo, designation, 
    //       description, phone, email, 
    //       facebook, twitter, linkedin, 
    //       website, experience
}

Service (服务)

class Service extends Model
{
    // 字段: name, slug, short_description, 
    //       description, icon, photo, seo_title, seo_meta
}

Project (案例)

class Project extends Model
{
    // 字段: name, slug, short_description,
    //       description, client_name, client_company,
    //       start_date, end_date, website, photo
}

Package (套餐)

class Package extends Model
{
    // 关联: hasMany(PackageFeature::class)
    // 字段: name, price, period
}

Post (文章)

class Post extends Model
{
    // 关联: belongsTo(PostCategory::class)
    //       hasMany(Comment::class)
    // 字段: title, slug, excerpt, description,
    //       photo, seo_title, seo_meta
}

Comment & Reply (评论系统)

class Comment extends Model
{
    // 关联: belongsTo(Post::class)
    //       hasMany(Reply::class)
}

class Reply extends Model { // 关联: belongsTo(Comment::class) }

3. 页面内容管理 (PageItem)

首页内容配置:

 

  • 首页律师显示数量
  • 首页博客显示数量
  • 关于页面律师数量
  • 服务列表每页数量
  • 案例列表每页数量
  • 律师列表每页数量

 

4. 设置系统 (Setting)

全局设置管理:

 

  • 网站标题、Logo、Favicon
  • 联系邮箱、电话、地址
  • 社交媒体链接
  • 页脚版权信息
  • SEO 默认设置
  • 邮件配置

 

5. 邮件系统

使用 Laravel Mail 发送:

 

  • 联系表单提交通知
  • 预约请求通知
  • 订阅确认邮件

 

class Websitemail extends Mailable
{
    public function build()
    {
        return $this->view('emails.contact')
                    ->subject('New Contact Message');
    }
}

核心业务逻辑

1. 前台页面渲染流程

用户请求 → 路由 → FrontController → 获取数据 → 返回视图 → 渲染页面

2. 后台管理流程

管理员登录 → 权限检查 → AdminController → 数据操作 → 重定向/返回视图

3. 表单提交流程

表单提交 → 验证请求 → 数据处理 → 保存数据库 → 发送通知 → 返回响应

4. 评论系统流程

提交评论 → 验证码验证 → 保存评论 → 邮件通知 → 显示评论
回复评论 → 关联父评论 → 保存回复 → 通知原作者

5. 文件上传流程

选择文件 → 前端验证 → 上传服务器 → 生成缩略图 → 保存路径 → 关联记录

核心代码示例

前端首页控制器

public function index()
{
    $testimonials = Testimonial::get();
    $page_item = PageItem::where('id', 1)->first();
    $posts = Post::orderBy('id','desc')
                 ->take($page_item->home_blog_total)
                 ->get();
    $features = Feature::get();
    $sliders = Slider::get();
    $lawyers = Lawyer::take($page_item->home_lawyer_total)->get();
    $admin_data = Admin::where('id', 1)->first();
    $counter_item = CounterItem::where('id',1)->first();
    
    return view('front.home', compact(
        'testimonials','posts','features',
        'sliders','lawyers','admin_data','counter_item'
    ));
}

后台存储方法

public function store(Request $request)
{
    $request->validate([
        'name' => 'required',
        'email' => 'required|email',
        'photo' => 'required|image'
    ]);
    
    $lawyer = new Lawyer();
    $lawyer->name = $request->name;
    $lawyer->slug = Str::slug($request->name);
    $lawyer->email = $request->email;
    
    // 处理图片上传
    if($request->hasFile('photo')) {
        $photo = $request->file('photo');
        $photo_name = time() . '.' . $photo->extension();
        $photo->move(public_path('uploads'), $photo_name);
        $lawyer->photo = $photo_name;
    }
    
    $lawyer->save();
    
    return redirect()->route('admin.lawyer.index')
                     ->with('success', 'Lawyer added successfully');
}

联系表单处理

public function contact_submit(Request $request)
{
    $validator = Validator::make($request->all(), [
        'name' => 'required',
        'email' => 'required|email',
        'message' => 'required',
        'captcha' => 'required|captcha'
    ]);
    
    if($validator->fails()) {
        return redirect()->back()->withErrors($validator);
    }
    
    // 发送邮件
    $data = $request->all();
    Mail::to(setting('contact_email'))
        ->send(new Websitemail($data));
    
    return redirect()->back()
                     ->with('success', 'Message sent successfully');
}

技术栈

后端

 

  • Laravel 12.x: PHP 框架
  • PHP 8.2+: 编程语言
  • Eloquent ORM: 数据库操作
  • Blade: 模板引擎
  • Laravel Mail: 邮件发送
  • Mews Captcha: 验证码

 

前端

 

  • Tailwind CSS 4.x: CSS 框架
  • Vite 6.x: 构建工具
  • Axios: HTTP 客户端
  • Alpine.js (可能): 响应式框架

 

数据库

 

  • MySQL/PostgreSQL/SQLite: 关系型数据库
  • Laravel Migrations: 数据库迁移

 

开发工具

 

  • Composer: PHP 依赖管理
  • NPM: JavaScript 包管理
  • Laravel Pint: 代码格式化
  • PHPUnit: 测试框架

 

数据库架构

核心表

 

  • admins: 管理员账户
  • lawyers: 律师信息
  • services: 法律服务
  • features: 服务特色
  • projects: 案例项目
  • packages: 定价套餐
  • package_features: 套餐功能关联
  • posts: 博客文章
  • post_categories: 文章分类
  • comments: 评论
  • replies: 评论回复
  • photos: 图片库
  • videos: 视频
  • sliders: 轮播图
  • testimonials: 客户评价
  • faqs: 常见问题
  • subscribers: 邮件订阅
  • page_items: 页面配置
  • counter_items: 计数器统计
  • menus: 导航菜单
  • settings: 系统设置

 

路由结构

前台路由

/                    → 首页
/about              → 关于我们
/services           → 服务列表
/service/{slug}     → 服务详情
/projects           → 案例列表
/project/{slug}     → 案例详情
/lawyers            → 律师列表
/lawyer/{slug}      → 律师详情
/pricing            → 定价页面
/blog               → 博客列表
/post/{slug}        → 文章详情
/contact            → 联系页面
/appointment        → 预约咨询
/faq                → 常见问题

后台路由

/admin/login        → 登录
/admin/dashboard    → 仪表盘
/admin/lawyer       → 律师管理
/admin/service      → 服务管理
/admin/project      → 案例管理
/admin/package      → 套餐管理
/admin/post         → 文章管理
/admin/photo        → 图片管理
/admin/video        → 视频管理
/admin/slider       → 轮播图管理
/admin/testimonial  → 评价管理
/admin/faq          → FAQ管理
/admin/subscriber   → 订阅管理
/admin/setting      → 系统设置

安全特性

 

  • CSRF 保护: Laravel 内置 CSRF Token
  • XSS 防护: Blade 自动转义
  • SQL 注入防护: 查询构造器/ORM
  • 文件上传安全: 类型检查、大小限制
  • 验证码: Mews Captcha 图形验证码
  • 密码安全: Bcrypt 哈希
  • 会话安全: Laravel 会话管理

 

总结

Lawyer Law and Attorney Website CMS 是一个功能完整的律师事务所网站解决方案:

 

  • 专业定位: 专为法律行业设计
  • 功能全面: 涵盖律师展示、服务介绍、案例展示、博客等
  • 易于管理: 完善的后台管理系统
  • 现代化设计: Tailwind CSS 响应式界面
  • SEO 友好: 支持自定义 SEO 元数据
  • 多语言支持: 可扩展多语言版本
  • 安全稳定: 多层安全防护机制

 

适合律师事务所、法律咨询机构、个人律师等使用,快速搭建专业形象网站。


资源在线 » Lawyer Law and Attorney Website CMS – 律师和律师事务所网站CMS项目分析

常见问题FAQ

发表评论