Lawyer Law and Attorney Website CMS – 律师和律师事务所网站CMS项目分析
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 元数据
- 多语言支持: 可扩展多语言版本
- 安全稳定: 多层安全防护机制
适合律师事务所、法律咨询机构、个人律师等使用,快速搭建专业形象网站。