diff --git a/assets/css/frontend/widget-batch5.css b/assets/css/frontend/widget-batch5.css index 930abbf3..977feeca 100644 --- a/assets/css/frontend/widget-batch5.css +++ b/assets/css/frontend/widget-batch5.css @@ -2533,3 +2533,22 @@ a.main-color > .icon-cover-card:hover, .aksrt-plate-info .count-mates .em14 { font-weight: 700; line-height: 1.2; } .aksrt-fi[data-aksrt-feature-intro] .aksrt-fi__panel { display: none; } .aksrt-fi[data-aksrt-feature-intro] .aksrt-fi__panel.is-active { display: block; } + + +/* batch43-45 residual */ +.aksrt-product-widget__item--mini { + gap: 10px; padding: 8px 0; + border-bottom: 1px solid var(--color-line, rgba(0,0,0,.06)); +} +.aksrt-product-widget__item--mini:last-child { border-bottom: 0; } +.aksrt-product-widget__thumb.mini { + flex: 0 0 56px; width: 56px; height: 56px; border-radius: 8px; overflow: hidden; + background: var(--surface-2, #f3f4f6); display: block; +} +.aksrt-product-widget__thumb.mini img { width: 100%; height: 100%; object-fit: cover; display: block; } +.aksrt-paid-posts.style-card { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 12px; } +.aksrt-paid-posts.style-list .aksrt-paid-posts__item { margin-bottom: 10px; } +.aksrt-paid-posts__price.badge { + display: inline-block; margin-top: 4px; padding: 1px 6px; border-radius: 4px; + background: rgba(240,68,148,.1); color: var(--theme-color, #f04494); font-size: 12px; +} diff --git a/src/AKSRT/Core/WidgetAjax.php b/src/AKSRT/Core/WidgetAjax.php index febe7a93..1a3cdbf8 100644 --- a/src/AKSRT/Core/WidgetAjax.php +++ b/src/AKSRT/Core/WidgetAjax.php @@ -134,6 +134,7 @@ class WidgetAjax { 'orderby' => sanitize_key((string) ($request->get_param('orderby') ?? 'date')), 'cat' => max(0, (int) ($request->get_param('cat') ?? 0)), 'limit_day' => max(0, (int) ($request->get_param('limit_day') ?? 0)), + 'style' => sanitize_key((string) ($request->get_param('style') ?? 'mini')), 'paginate' => $paginate, ]; $page = max(1, (int) ($request->get_param('page') ?? $request->get_param('paged') ?? 1)); diff --git a/src/AKSRT/Widgets/WidgetPaidPosts.php b/src/AKSRT/Widgets/WidgetPaidPosts.php index 6a790ef3..86e3c508 100644 --- a/src/AKSRT/Widgets/WidgetPaidPosts.php +++ b/src/AKSRT/Widgets/WidgetPaidPosts.php @@ -72,7 +72,7 @@ class WidgetPaidPosts extends \WP_Widget { return $query; } - public static function render_items_html(\WP_Query $q): string { + public static function render_items_html(\WP_Query $q, string $style = 'mini'): string { if (!$q->have_posts()) { return ''; } @@ -91,17 +91,18 @@ class WidgetPaidPosts extends \WP_Widget { } else { $badge = __('付费', 'aksrt'); } + $mode = in_array($style, ['list', 'card', 'mini'], true) ? $style : 'mini'; if (function_exists('aksrt_render_post')) { $item = aksrt_render_post([ - 'mode' => 'mini', + 'mode' => $mode, 'context' => 'widget', 'show_thumb' => true, 'show_meta' => true, - 'show_excerpt' => false, - 'extra_class' => 'ajax-item aksrt-paid-posts__mini', + 'show_excerpt' => $mode === 'list', + 'extra_class' => 'ajax-item aksrt-paid-posts__' . $mode, ]); if ($item !== '') { - echo '
'; + echo '
'; echo $item; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo '' . esc_html($badge) . ''; echo '
'; @@ -126,9 +127,13 @@ class WidgetPaidPosts extends \WP_Widget { $paginate = sanitize_key((string) ($instance['paginate'] ?? 'ajax')); $count = max(1, min(20, (int) ($instance['count'] ?? 6))); $q = new \WP_Query(self::build_query_args($instance, $page)); - $items = self::render_items_html($q); + $style = sanitize_key((string) ($instance['style'] ?? 'mini')); + if (!in_array($style, ['mini', 'list', 'card'], true)) { + $style = 'mini'; + } + $items = self::render_items_html($q, $style); $wrap_tag = (strpos($items, 'posts-mini') !== false || strpos($items, 'aksrt-paid-posts__mini') !== false) ? 'div' : 'ul'; - $html = $items !== '' ? '<' . $wrap_tag . ' class="aksrt-paid-posts">' . $items . '' : ''; + $html = $items !== '' ? '<' . $wrap_tag . ' class="aksrt-paid-posts style-' . esc_attr($style) . '">' . $items . '' : ''; if ($html === '' && $page === 1) { $html = function_exists('aksrt_get_ajax_null') ? aksrt_get_ajax_null(__('暂无付费内容', 'aksrt')) @@ -142,6 +147,7 @@ class WidgetPaidPosts extends \WP_Widget { 'orderby' => sanitize_key((string) ($instance['orderby'] ?? 'date')), 'cat' => max(0, (int) ($instance['cat'] ?? 0)), 'limit_day' => max(0, (int) ($instance['limit_day'] ?? 0)), + 'style' => $style, 'paginate' => $paginate, ], static function ($v) { return $v !== '' && $v !== null; @@ -203,6 +209,15 @@ class WidgetPaidPosts extends \WP_Widget {

+

+ +