- Tham gia
- 28/02/2015
- Bài viết
- 16,728
- Được Like
- 12,680
Tabbed Options - Tùy chọn Tabbed cho XenForo 2.x
Hướng dẫn này sẽ cho phép bạn có một nhóm tùy chọn duy nhất cho tất cả các lựa chọn của bạn, tách chúng thành các phần có tab thay vì buộc người dùng phải thay đổi các nhóm tùy chọn.
Ví dụ:
Code Event Listener
Event: templater_macro_pre_render
Event Hint: adminption_macrosption_form_block
Execute Callback: Your\Namespace\XenForo2\EventListener\MacroRender :: preRender
PHP Code:
Admin Template
Template Name: your_namespace_option_macros
Template Contents:
Hướng dẫn này sẽ cho phép bạn có một nhóm tùy chọn duy nhất cho tất cả các lựa chọn của bạn, tách chúng thành các phần có tab thay vì buộc người dùng phải thay đổi các nhóm tùy chọn.
Ví dụ:
Event: templater_macro_pre_render
Event Hint: adminption_macrosption_form_block
Execute Callback: Your\Namespace\XenForo2\EventListener\MacroRender :: preRender
PHP Code:
Mã:
<?php
namespace Your\Namespace\XenForo2\EventListener;
class MacroRender
{
public static function preRender(\XF\Template\Templater $templater, &$type, &$template, &$name, array &$arguments, array &$globalVars)
{
if ($arguments['group']->group_id == 'your_group')
{
// Override template name
$template = 'your_namespace_option_macros';
}
}
}
Admin Template
Template Name: your_namespace_option_macros
Template Contents:
Mã:
<xf:macro name="option_form_block" arg-group="" arg-options="!" arg-containerBeforeHtml="">
<xf:if is="$options is not empty">
<xf:form action="{{ link('options/update') }}" ajax="true" class="block">
{$containerBeforeHtml|raw}
<div class="block-container">
<h2 class="block-tabHeader tabs" data-xf-init="tabs" role="tablist">
<a class="tabs-tab is-active" role="tab" tabindex="0" aria-controls="generalOptions">{{ phrase('general_options') }}</a>
<a class="tabs-tab" role="tab" tabindex="0" aria-controls="moreOptions">{{ phrase('your_namespace_more_options') }}</a>
<a class="tabs-tab" role="tab" tabindex="0" aria-controls="evenMoreOptions">{{ phrase('your_namespace_even_more_options') }}</a>
</h2>
<ul class="tabPanes">
<li class="is-active" role="tabpanel" id="generalOptions">
<div class="block-body">
<xf:foreach loop="$options" value="$option">
<xf:if is="$option.Relations.your_group.display_order < 200">
<xf:macro template="option_macros" name="option_row" arg-group="{$group}" arg-option="{$option}" />
</xf:if>
</xf:foreach>
</div>
</li>
<li role="tabpanel" id="moreOptions">
<div class="block-body">
<xf:foreach loop="$options" value="$option">
<xf:if is="$option.Relations.your_group.display_order >= 200 AND $option.Relations.your_group.display_order < 300">
<xf:macro template="option_macros" name="option_row" arg-group="{$group}" arg-option="{$option}" />
</xf:if>
</xf:foreach>
</div>
</li>
<li role="tabpanel" id="evenMoreOptions">
<div class="block-body">
<xf:foreach loop="$options" value="$option">
<xf:if is="$option.Relations.your_group.display_order >= 300 AND $option.Relations.your_group.display_order < 400">
<xf:macro template="option_macros" name="option_row" arg-group="{$group}" arg-option="{$option}" />
</xf:if>
</xf:foreach>
</div>
</li>
</ul>
<xf:submitrow sticky="true" icon="save" />
</div>
</xf:form>
</xf:if>
</xf:macro>
- Thay thế tất cả các trường của your_group với ID nhóm tuỳ chọn bạn đã sử dụng.
- Thay thế tất cả các trường trong Your\Namespace hoặc your_namespace bằng namespace có liên quan mà bạn sử dụng.
- Tôi đã chọn để tách các tùy chọn cho mỗi 100 thứ tự hiển thị, nhưng bạn có thể chỉnh sửa HTML và thực hiện nó nếu bạn thích
Nguồn: xenforo.com
Bài viết liên quan
Bài viết mới