fromholdio/silverstripe-superlinker-targets
Composer 安装命令:
composer require fromholdio/silverstripe-superlinker-targets
包简介
A SilverStripe module providing basic link/target data objects built using the Superlinker foundation
README 文档
README
Basic link/target DataObjects built on SuperLinker foundation.
Overview
Provides a Target class that extends SuperLink for general-purpose link objects. Useful for:
- Related links
- Resource links
- Navigation links
- Any generic link collection
Requirements
- SilverStripe Framework ^6.0
- fromholdio/silverstripe-superlinker ^4.0.0
Installation
composer require fromholdio/silverstripe-superlinker-targets
Run dev/build:
vendor/bin/sake dev/build flush=1
Usage
Basic Usage
use Fromholdio\SuperLinkerTargets\Model\Target; class Page extends SiteTree { private static $has_many = [ 'RelatedLinks' => Target::class ]; }
CMS Fields
use Fromholdio\MiniGridField\MiniGridField; public function getCMSFields(): FieldList { $fields = parent::getCMSFields(); $fields->addFieldToTab('Root.Links', MiniGridField::create('RelatedLinks', 'Related Links', $this) ->setLimit(10) ); return $fields; }
Templates
<% if $RelatedLinks %> <div class="related-links"> <h3>Related Links</h3> <ul> <% loop $RelatedLinks %> <li> <a href="$URL" $AttributesHTML>$Title</a> </li> <% end_loop %> </ul> </div> <% end_if %>
Usage Examples
Example 1: Footer Links
namespace App\Extensions; use Fromholdio\SuperLinkerTargets\Model\Target; use SilverStripe\Core\Extension; class SiteConfigExtension extends Extension { private static $has_many = [ 'FooterLinks' => Target::class ]; }
SilverStripe\SiteConfig\SiteConfig: extensions: - App\Extensions\SiteConfigExtension
Template:
<footer> <nav class="footer-nav"> <% loop $SiteConfig.FooterLinks %> <a href="$URL" $AttributesHTML>$Title</a> <% end_loop %> </nav> </footer>
Example 2: Resource Links
class ResourcePage extends Page { private static $has_many = [ 'ResourceLinks' => Target::class ]; public function getValidResourceLinks(): ArrayList { return Target::excludeInvalidLinks($this->ResourceLinks()); } }
Template:
<% if $ValidResourceLinks %> <div class="resources"> <h2>Resources</h2> <% loop $ValidResourceLinks %> <div class="resource-item"> <a href="$URL" $AttributesHTML> <strong>$Title</strong> <% if $Description %> <p>$Description</p> <% end_if %> </a> </div> <% end_loop %> </div> <% end_if %>
Example 3: Social Media Links
namespace App\Extensions; use Fromholdio\SuperLinkerTargets\Model\Target; use SilverStripe\Core\Extension; class SiteConfigExtension extends Extension { private static $has_many = [ 'SocialLinks' => Target::class ]; }
With Icons:
Fromholdio\SuperLinkerTargets\Model\Target: extensions: - Fromholdio\SuperLinker\Extensions\SuperLinkIconExtension
Template:
<div class="social-links"> <% loop $SiteConfig.SocialLinks %> <a href="$URL" target="_blank" rel="noopener" class="social-link"> <% if $Icon %> <img src="$Icon.URL" alt="$Title"> <% else %> $Title <% end_if %> </a> <% end_loop %> </div>
Example 4: Card Links with Images
Fromholdio\SuperLinkerTargets\Model\Target: extensions: - Fromholdio\SuperLinker\Extensions\SuperLinkImageExtension - Fromholdio\SuperLinker\Extensions\SuperLinkDescriptionExtension
class HomePage extends Page { private static $has_many = [ 'FeatureCards' => Target::class ]; }
Template:
<div class="feature-cards"> <% loop $FeatureCards %> <a href="$URL" class="card"> <% if $Image %> <img src="$Image.FocusFill(400,300).URL" alt="$Title"> <% end_if %> <div class="card-content"> <h3>$Title</h3> <% if $Description %> <p>$Description</p> <% end_if %> </div> </a> <% end_loop %> </div>
Customization
Adding Custom Fields
Extend the Target class:
namespace App\Extensions; use SilverStripe\Forms\FieldList; use SilverStripe\Forms\TextField; use SilverStripe\Core\Extension; class TargetExtension extends Extension { private static $db = [ 'CustomField' => 'Varchar(255)' ]; public function updateCMSFields(FieldList $fields): void { $fields->addFieldToTab('Root.Main', TextField::create('CustomField', 'Custom Field') ); } }
Fromholdio\SuperLinkerTargets\Model\Target: extensions: - App\Extensions\TargetExtension
Creating Subclasses
For specific use cases, create subclasses:
namespace App\Model; use Fromholdio\SuperLinkerTargets\Model\Target; class SocialLink extends Target { private static $table_name = 'App_SocialLink'; private static $singular_name = 'Social Link'; private static $plural_name = 'Social Links'; private static $allowed_types = [ 'external' ]; }
Alternative for New Projects
Instead of using this module, create your own link classes:
namespace App\Model; use Fromholdio\SuperLinker\Model\SuperLink; class Link extends SuperLink { private static $table_name = 'App_Link'; private static $singular_name = 'Link'; private static $plural_name = 'Links'; }
This gives you full control without an extra dependency.
Documentation
For complete SuperLinker documentation, see:
License
BSD-3-Clause
Support
fromholdio/silverstripe-superlinker-targets 适用场景与选型建议
fromholdio/silverstripe-superlinker-targets 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 814 次下载、GitHub Stars 达 0, 最近一次更新时间为 2020 年 07 月 19 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「link」 「silverstripe」 「button」 「CTA」 「superlinker」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 fromholdio/silverstripe-superlinker-targets 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 fromholdio/silverstripe-superlinker-targets 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 fromholdio/silverstripe-superlinker-targets 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A couple of handy form fields and objects for managing external and internal links on DataObjects
PHP library that allows linking queries from diferent physical databases using mysql pdo database connections
Custom links on your sidebar for Laravel Nova.
Set Links with a specific language parameter
A tool for scraping URL resources (oEmbed, OpenGraph, Twitter cards, JSON-LD)
统计信息
- 总下载量: 814
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 13
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: BSD-3-Clause
- 更新时间: 2020-07-19