fix(widgets): align mini paid badges with reference
This commit is contained in:
1 parent
fd034ff055
commit
985f18c750
8 files changed
+249
-31
No files matched your search
@@ -97,6 +97,7 @@ if (!function_exists('aksrt_renderer_collect_post_data')) {
|
||||
'post_type' => (string) get_post_type($post_id),
|
||||
'is_sticky' => is_sticky($post_id),
|
||||
'resource_badge' => (string) aksrt_resource_card_badge_text($post_id),
|
||||
'pay_meta' => $pay_meta,
|
||||
'pay_type' => sanitize_key((string) ($pay_meta['pay_type'] ?? 'no')),
|
||||
'pay_limit' => (int) ($pay_meta['pay_limit'] ?? 0),
|
||||
];
|
||||
@@ -175,6 +176,9 @@ if (!function_exists('aksrt_renderer_mult_thumb')) {
|
||||
|
||||
if (!function_exists('aksrt_renderer_pay_badge')) {
|
||||
function aksrt_renderer_pay_badge(array $data, bool $compact = false): string {
|
||||
if ($compact) {
|
||||
return aksrt_renderer_compact_pay_badge((array) ($data['pay_meta'] ?? []));
|
||||
}
|
||||
if ((string) $data['resource_badge'] === '') {
|
||||
return '';
|
||||
}
|
||||
@@ -184,24 +188,58 @@ if (!function_exists('aksrt_renderer_pay_badge')) {
|
||||
$type_labels = function_exists('aksrt_get_pay_types') ? aksrt_get_pay_types() : [];
|
||||
$title = (string) ($type_labels[(string) ($data['pay_type'] ?? '')] ?? __('付费内容', 'aksrt'));
|
||||
$icon = $is_vip ? aksrt_renderer_vip_icon($vip_level) : '';
|
||||
if ($compact) {
|
||||
return '<item class="meta-pay badg badg-sm mr6 ' . esc_attr($class) . '" data-toggle="tooltip" title="' . esc_attr($title) . '">' . $icon . esc_html((string) $data['resource_badge']) . '</item>';
|
||||
}
|
||||
$tooltip = $is_vip ? ' data-toggle="tooltip" title="' . esc_attr($title) . '"' : '';
|
||||
return '<a rel="nofollow" href="' . esc_url((string) $data['permalink']) . '#posts-pay"' . $tooltip . ' class="meta-pay but ' . esc_attr($is_vip ? $class : 'jb-yellow') . '">' . $icon . esc_html((string) $data['resource_badge']) . '</a>';
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('aksrt_renderer_compact_pay_badge')) {
|
||||
/** Compact article meta uses the published price and a type icon, not the large tag's text. */
|
||||
function aksrt_renderer_compact_pay_badge(array $meta): string {
|
||||
$types = [
|
||||
'reading' => [__('付费阅读', 'aksrt'), 'fa fas fa-book'],
|
||||
'download' => [__('付费资源', 'aksrt'), 'fa fas fa-download'],
|
||||
'gallery' => [__('付费图片', 'aksrt'), 'fa far fa-file-image'],
|
||||
'video' => [__('付费视频', 'aksrt'), 'fa fas fa-play-circle'],
|
||||
];
|
||||
$type = (string) ($meta['pay_type'] ?? 'no');
|
||||
if (!isset($types[$type])) {
|
||||
return '';
|
||||
}
|
||||
[$title, $type_icon] = $types[$type];
|
||||
$points = ($meta['pay_modo'] ?? '0') === 'points';
|
||||
$price = $points ? (string) max(0, (int) ($meta['points_price'] ?? 0)) : aksrt_format_price((string) ($meta['price'] ?? '0.00'));
|
||||
$icon = aksrt_icon_markup($type_icon, 'mr3');
|
||||
$class = 'c-yellow';
|
||||
if ($price === '0') {
|
||||
$title = str_replace(__('付费', 'aksrt'), __('免费', 'aksrt'), $title);
|
||||
$label = esc_html__('免费', 'aksrt');
|
||||
} else {
|
||||
$level = max(0, min(2, (int) ($meta['pay_limit'] ?? 0)));
|
||||
$vip = \AKSRT\Settings\Settings::get_payment_vip_settings();
|
||||
if ($level > 0 && !empty($vip['enabled'])) {
|
||||
$class = 'jb-vip' . $level;
|
||||
$icon = aksrt_renderer_vip_icon($level);
|
||||
$label = esc_html__('会员专属', 'aksrt');
|
||||
} else {
|
||||
$display = \AKSRT\Settings\Settings::get_paid_content_settings()['display'];
|
||||
$mark = $points ? aksrt_icon_markup('zibsvg-points', 'points-mark') : esc_html((string) ($display['currency_symbol'] ?? '¥'));
|
||||
$label = '<span class="em09">' . $mark . '</span>' . esc_html($price);
|
||||
}
|
||||
}
|
||||
return '<item class="meta-pay badg badg-sm mr6 ' . esc_attr($class) . '" data-toggle="tooltip" title="' . esc_attr($title) . '">' . $icon . $label . '</item>';
|
||||
}
|
||||
}
|
||||
|
||||
if (!function_exists('aksrt_renderer_vip_icon')) {
|
||||
function aksrt_renderer_vip_icon(int $level): string {
|
||||
if (!class_exists('\AKSRT\Settings\Settings')) {
|
||||
return '<i class="fa fas fa-certificate mr3" aria-hidden="true"></i>';
|
||||
}
|
||||
$settings = \AKSRT\Settings\Settings::get_payment_vip_settings();
|
||||
$url = esc_url((string) ($settings['levels'][$level]['img_icon'] ?? ''));
|
||||
return $url !== ''
|
||||
? '<img class="mr3" src="' . $url . '" alt="" aria-hidden="true">'
|
||||
: '<i class="fa fas fa-certificate mr3" aria-hidden="true"></i>';
|
||||
$url = (string) ($settings['levels'][$level]['img_icon'] ?? '');
|
||||
if ($url === '') {
|
||||
$url = get_template_directory_uri() . '/assets/img/user/vip/vip-' . $level . '.svg';
|
||||
}
|
||||
$name = (string) ($settings['levels'][$level]['name'] ?? 'VIP');
|
||||
return '<img' . aksrt_get_lazy_attr('lazy_other', $url, 'img-icon mr3') . ' data-toggle="tooltip" title="' . esc_attr($name) . '" alt="' . esc_attr($name) . '">';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user