itineris / sage-flbuilder
x
Requires
- php: ^8.1
- illuminate/support: ~8.0
- lunar-build/sage-lib: ^9.0.11
Requires (Dev)
- beaver-builder/bb-plugin: *
- beaver-builder/bb-theme-builder: *
- roave/security-advisories: dev-master
- roots/sage: *
- 0.15.5
- 0.15.4
- 0.15.3
- 0.15.2
- 0.15.1
- 0.15.0
- 0.14.0
- 0.13.0
- 0.12.0
- dev-master / 0.11.x-dev
- 0.11.6
- 0.11.5
- 0.11.4
- 0.11.3
- 0.11.2
- 0.11.1
- 0.11.0
- 0.10.1
- 0.10.0
- 0.9.2
- 0.9.1
- 0.9.0
- 0.8.0
- 0.7.5
- 0.7.4
- 0.7.3
- 0.7.2
- 0.7.1
- 0.7.0
- 0.6.0
- 0.5.2
- 0.5.1
- 0.5.0
- 0.4.2
- 0.4.1
- 0.4.0
- 0.3.3
- 0.3.2
- 0.3.1
- 0.3.0
- 0.2.0
- 0.1.2
- dev-version-bump
- dev-sage10-support
- dev-sage9
- dev-helpers
- dev-initializables-improvements
- dev-fix-gravity-forms
- dev-testimonial-module-markup
- dev-fix-blade-template-vars
- dev-clean-obsolete-code
- dev-filter-bar-logic
- dev-fix-post-grid-show-dropdown
- dev-events-archive-cleanup
- dev-events_hide_children
- dev-filter-bar
- dev-filter_count
This package is auto-updated.
Last update: 2024-09-12 14:00:13 UTC
README
- 最低要求
- 安装
- 规则
- 注意事项
- 自定义
PostGrid - 使用 - 最小
- 使用 - 自定义 PHP 模块
- 使用 - 自定义 Blade 模块
- 使用 - 自定义设置
- 使用 - 额外设置
- 使用 - 排除默认模块/设置
- 从 Fabric 迁移
最低要求
- PHP v7.1
- Sage v9.0.0-beta.4
- illuminate/support v5.4
- Advanced Custom Fields PRO v5.6.9
- Beaver Builder 插件(专业版)v2.1.1.1
- Beaver Themer v1.1.1
- Gravity Forms v2.2.6.5
您必须确保通过 Bedrock 的 composer.json 安装了这 3 个必需的插件。
安装
➜ composer require itineris/sage-flbuilder
规则
注意事项
模块名称
Beaver Builder 不能接受文件名相同的两个模块,即使它们遵循 PSR-4。
例如,以下 3 个模块相互冲突
vendor/itineris/sage-flbuilder/src/Modules/Button/Button.phpapp/Plugins/FLBuilder/Modules/BrainHouse/Button/Button.phpapp/Plugins/FLBuilder/Modules/Trinity/Button/Button.php
解决方案 - 使用唯一的类名
vendor/itineris/sage-flbuilder/src/Modules/Button/Button.phpapp/Plugins/FLBuilder/Modules/BrainHouseButton/BrainHouseButton.phpapp/Plugins/FLBuilder/Modules/TrinityButton/TrinityButton.php
自定义 PostGrid
模板
已弃用:在 v0.5.0 之前,使用 PostGrid::DIR 来定位模板目录。这已被 AbstractHelper::getPostGridTemplateDir 替换。
过滤栏和文章主题模板可以在项目中自定义,支持 Blade 和正常的 .php。
例如
➜ tree web/app/themes/greenwich/app/Plugins/FLBuilder
web/app/themes/greenwich/app/Plugins/FLBuilder
├── Helper.php
└── post-grid
├── filter-bar-event.blade.php
├── filter-bar.php
├── post-theme-event.blade.php
├── post-theme-product.php
└── post-theme.blade.php
class Helper extends AbstractHelper { /** * Full path to PostGrid template directory. * * @return string */ public function getPostGridTemplateDir(): string { return __DIR__ . '/post-grid'; } }
子类
重要:不建议覆盖 PostGrid。尽可能调整您的项目以适应默认的 PostGrid。
如果您必须作为最后的手段通过子类覆盖 PostGrid,您必须将其放入 Sage 的容器中 之后 SageFLBuilder::init
use App\Plugins\FLBuilder\Settings\PostGrid;
use Itineris\SageFLBuilder\Settings\PostGrid as SageFLBuilderPostGrid;
$sageFLBuilder->add(PostGrid::class)
->remove(SageFLBuilderPostGrid::class)
->init();
sage()->bind(SageFLBuilderPostGrid::class, PostGrid::class);
使用 - 最小
步骤 1 - 定义辅助类
namespace App\Plugins\FLBuilder; use Itineris\SageFLBuilder\AbstractHelper; class Helper extends AbstractHelper { // Implement all abstract methods. }
步骤 2
在 app/setup.php / app/farbic.php
use App\Plugins\FLBuilder\Helper; use Itineris\SageFLBuilder\SageFLBuilder; $sageFLBuilder = new SageFLBuilder( new Helper() ); $sageFLBuilder->init();
提示:将这些行放入类方法中。
使用 - 自定义 PHP 模块
步骤 1 - 定义模块类
查看:https://kb.wpbeaverbuilder.com/article/124-custom-module-developer-guide
namespace App\Plugins\FLBuilder\Modules\RunnerBlock; use Itineris\SageFLBuilder\AbstractModule; use Itineris\SageFLBuilder\AbstractHelper; class RunnerBlock extends AbstractModule { /** * Register the module and its form settings. * If needed, register a settings form to use in the "form" field type. */ public static function register(): void { // Invoke `\FLBuilder::register_module` here // Invoke `\FLBuilder::register_settings_form` here } public function __construct() { /** @var AbstractHelper $helper */ $helper = sage(AbstractHelper::class); parent::__construct([ 'name' => __('Runner block', 'fabric'), 'description' => __('Runner block widget', 'fabric'), 'category' => 'Basic', 'group' => $helper->getModuleGroup(), 'dir' => __DIR__, 'url' => $helper->assetPath(__DIR__), 'icon' => 'layout.svg', ]); } }
步骤 2 - 前端模板
创建 includes/frontend.php
<sage>/app/Plugins/FLBuilder/Modules
└── RunnerBlock
├── RunnerBlock.php
└── includes
└── frontend.php
步骤 3 - 将自定义模块添加到 SageFLBuilder
use App\Plugins\FLBuilder\Helper; use App\Plugins\FLBuilder\Modules\RunnerBlock\RunnerBlock; use Itineris\SageFLBuilder\SageFLBuilder; $sageFLBuilder = new SageFLBuilder( new Helper() ); $sageFLBuilder->add(RunnerBlock::class) ->init();
使用 - 自定义 Blade 模块
类似于自定义 PHP 模块。
步骤 1 - 继承自 AbstractBladeModule.
namespace App\Plugins\FLBuilder\Modules\BladeRunnerBlock; use Itineris\SageFLBuilder\AbstractBladeModule; class BladeRunnerBlock extends AbstractBladeModule { // Similar to custom PHP module }
步骤 2 - 前端模板
创建 includes/frontend.blade.php
<sage>/app/Plugins/FLBuilder/Modules
└── BladeRunnerBlock
├── BladeRunnerBlock.php
└── includes
└── frontend.blade.php
步骤 3
$sageFLBuilder->add(RunnerBlock::class, BladeRunnerBlock::class) ->init();
使用 - 自定义设置
步骤 1 - 定义设置类
namespace App\Plugins\FLBuilder\Settings; use Itineris\SageFLBuilder\InitializableInterface; class MySetting implements InitializableInterface { // Implement all required methods. }
步骤 2
$sageFLBuilder->add(RunnerBlock::class, BladeRunnerBlock::class, MySetting::class) ->init();
使用 - 额外设置
以下设置默认禁用
要启用它们
// Example: Enabling `FourOFourThemeLayout` $sageFLBuilder->add(FourOFourThemeLayout::class) ->init();
使用 - 排除默认模块/设置
$sageFLBuilder->add(RunnerBlock::class, BladeRunnerBlock::class, MySetting::class) ->remove(FilterBar::class, EventsArchive::class) ->init();
从 Fabric 迁移
由于 sage-flbuilder 使用 PSR-4,而 Fabric 不使用,模块名称已更改。在从 Fabric 迁移时,您必须 搜索和替换 数据库中保存的所有模块名称
$ wp search-replace 'OLD_NAME' 'NEW_NAME' $ wp search-replace 'fab_accordion' 'Accordion'
这是一个为 sage-flbuilder 的默认模块的 bash 脚本
#!/bin/bash declare -A modules # Base Modules modules[fab_accordion]=Accordion modules[fab_alert]=Alert modules[fab_breadcrumbs]=Breadcrumbs modules[fab_button]=Button modules[fab_content_image]=ContentImage modules[fab_filter_bar]=FilterBar modules[fab_gallery]=Gallery modules[fab_gravity_form]=GravityForm modules[fab_page_heading]=PageHeading modules[fab_page_slider]=PageSlider modules[fab_secondary_nav]=SecondaryNav modules[fab_table]=Table modules[fab_testimonial]=Testimonial modules[fab_video]=Video # Add project-specific modules here, for example: # modules[gh_welcome_section]=WelcomeSection for i in "${!modules[@]}" do echo "$i -> ${modules[$i]}" command="wp search-replace '$i' '${modules[$i]}' --dry-run" echo "Running $command" result=$(eval "${command} 2> /dev/null") if [ $? -eq 0 ];then echo "${result##*$'\n'}" printf "\n------------\n\n" else echo "Failed!" echo $(result | tail -n 1) break fi done