承接 statikbe/craft-contacts 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

statikbe/craft-contacts

Composer 安装命令:

composer require statikbe/craft-contacts

包简介

Adds a crm-like layers over Craft's users

README 文档

README

Adds a crm-like layers over Craft's users

Requirements

This plugin requires Craft CMS 5.7.0 or later, and PHP 8.2 or later.

Installation

You can install this plugin from the Plugin Store or with Composer.

From the Plugin Store

Go to the Plugin Store in your project's Control Panel and search for "Contacts". Then press "Install".

With Composer

Open your terminal and run the following commands:

# go to the project directory
cd /path/to/my-project.test

# tell Composer to load the plugin
composer require statikbe/craft-contacts

# tell Craft to install the plugin
./craft plugin/install contacts

Features

  • Contact Management: Create and manage contacts as inactive users
  • Advanced Filtering: Save personal and shared filters for quick access
  • Export Functionality: Export contacts to XLSX format
  • User Conversion: Convert contacts to active users with activation emails
  • Field Layout Customization: Control which User fields are visible for contacts
  • Relations Table Template: Display related data in clean, formatted tables

Displaying Related Data

The plugin includes a flexible relations table template for displaying related data on contact detail pages.

Relations Table Template

Include the _relations-table.twig template to display any related data in a formatted table:

{% set columns = [
    {label: 'Title', key: 'title', link: true},
    {label: 'Status', key: 'status'},
    {label: 'Created', key: 'dateCreated', type: 'date'}
] %}

{% include 'contacts/_relations-table' with {
    title: 'Related Entries',
    columns: columns,
    rows: relatedEntries,
    emptyMessage: 'No related entries found.'
} %}

Column Configuration

Each column supports the following properties:

  • label (string): Column header label
  • key (string): Property key to access in row data
  • link (boolean): Whether to link to element's CP edit URL (default: false)
  • type (string): Format type for cell value (default: 'text')

Supported Column Types

  • text: Renders value as-is (supports HTML)
  • date: Formats date using |date('short')
  • datetime: Formats datetime using |datetime('short')
  • timestamp: Formats timestamp using |timestamp
  • relation: Resolves relation field and displays title (automatically linked)
  • dropdown: Displays dropdown field label instead of value

Example: Display Registrations

{# Get related registrations for this contact #}
{% set registrations = craft.entries()
    .section('registrations')
    .relatedTo(element)
    .all() %}

{% set columns = [
    {label: 'Registration', key: 'title', link: true},
    {label: 'Course', key: 'course', type: 'relation'},
    {label: 'Status', key: 'registrationStatus', type: 'dropdown'},
    {label: 'Date', key: 'dateCreated', type: 'date'}
] %}

{% include 'contacts/_relations-table' with {
    title: 'Registrations',
    columns: columns,
    rows: registrations
} %}

This will display:

  • Registration: Clickable title linking to the registration entry
  • Course: Related course title, linking to the course entry
  • Status: Human-readable dropdown label (e.g., "Pending Approval")
  • Date: Formatted date (e.g., "Jan 15, 2024")

All links open in a new tab to preserve the contact detail page.

Pagination Support

For large datasets, enable pagination by passing an element query and setting paginate: true:

{% set columns = [
    {label: 'Registration', key: 'title', link: true},
    {label: 'Course', key: 'course', type: 'relation'},
    {label: 'Date', key: 'dateCreated', type: 'date'}
] %}

{% include 'contacts/_relations-table' with {
    title: 'Registrations',
    columns: columns,
    rows: craft.entries().section('registrations').relatedTo(element),  {# Pass query, not .all() #}
    paginate: true,
    pageSize: 20
} %}

Important: When using pagination, pass the element query directly (don't call .all()). The template will handle executing the query with pagination.

Pagination Parameters:

  • paginate (boolean): Enable pagination (default: false)
  • pageSize (integer): Items per page (default: 20)

Pagination works with both element queries and arrays. The template automatically uses Craft's native pagination UI for queries and a custom implementation for arrays. Array pagination uses the relationPage URL parameter to avoid conflicts with CP routing.

statikbe/craft-contacts 适用场景与选型建议

statikbe/craft-contacts 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 671 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 07 月 04 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 statikbe/craft-contacts 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 statikbe/craft-contacts 我们能提供哪些服务?
定制开发 / 二次开发

基于 statikbe/craft-contacts 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 671
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 18
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: mit
  • 更新时间: 2025-07-04