fix(comments): denser zibll-like chrome and guest fields

Tighten comment form density, collapse guest name/email behind a
toggle, and refine empty-state copy for closed/author-only views.
This commit is contained in:
2026-07-16 22:23:01 +08:00
parent 1d75170f8e
commit 357d710b1b
3 changed files with 125 additions and 9 deletions
+66 -3
View File
@@ -87,7 +87,7 @@
.comment-form__inner {
display: flex;
gap: 12px;
gap: 10px;
align-items: flex-start;
}
@@ -169,11 +169,74 @@
align-items: center;
gap: 8px;
margin-left: auto;
flex-wrap: wrap;
justify-content: flex-end;
}
.comment-form__guest {
display: flex;
flex-direction: column;
align-items: flex-end;
gap: 6px;
}
.comment-form__guest-toggle {
background: none;
border: 0;
padding: 0;
cursor: pointer;
color: var(--muted-color, #8b9198);
white-space: nowrap;
}
.comment-form__guest-toggle:hover,
.comment-form__guest-toggle[aria-expanded="true"] {
color: var(--focus-color, #f04494);
}
.comment-form__guest-fields {
display: flex;
gap: 6px;
align-items: center;
max-height: 0;
overflow: hidden;
opacity: 0;
transition: max-height 0.2s ease, opacity 0.15s ease;
}
.comment-form__guest-fields.is-open,
.comment-form__guest-fields:not([hidden]) {
max-height: 48px;
opacity: 1;
}
.comment-form__guest-field {
width: 120px;
height: 32px;
width: 110px;
height: 30px;
font-size: 12px;
padding: 0 8px;
}
.comt-box .comt-textarea,
.comt-box #comment {
min-height: 72px;
padding: 10px 12px;
border-radius: 8px;
font-size: 13px;
line-height: 1.5;
margin-bottom: 6px;
}
.comt-ctrl {
display: flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
}
.comment-form__submit {
height: 30px;
padding: 0 12px;
font-size: 13px;
}
+36 -1
View File
@@ -675,6 +675,41 @@
});
}
window.AksrtFrontend.register("aksrt-comment-system", function () { initCommentSystem(); });
function initGuestFields() {
var root = document.getElementById("comments") || document;
root.querySelectorAll("[data-aksrt-guest-toggle]").forEach(function (btn) {
if (btn.dataset.aksrtGuestBound === "1") return;
btn.dataset.aksrtGuestBound = "1";
var wrap = btn.closest(".comment-form__guest");
var fields = wrap ? wrap.querySelector("[data-aksrt-guest-fields]") : null;
if (!fields) return;
btn.addEventListener("click", function (e) {
e.preventDefault();
var open = btn.getAttribute("aria-expanded") === "true";
btn.setAttribute("aria-expanded", open ? "false" : "true");
if (open) {
fields.setAttribute("hidden", "");
fields.classList.remove("is-open");
} else {
fields.removeAttribute("hidden");
fields.classList.add("is-open");
var first = fields.querySelector("input");
if (first) first.focus();
}
});
// Auto-open if browser restored values or validation fails later.
var form = btn.closest("form");
if (form) {
form.addEventListener("invalid", function () {
fields.removeAttribute("hidden");
fields.classList.add("is-open");
btn.setAttribute("aria-expanded", "true");
}, true);
}
});
}
window.AksrtFrontend.register("aksrt-comment-system", function () { initCommentSystem(); initGuestFields(); });
window.AksrtFrontend.register("aksrt-comment-order", function (root) { initCommentOrder(root); });
})();
+23 -5
View File
@@ -463,7 +463,7 @@ if (!function_exists('aksrt_comments_render_form')) :
<span class="comt-tips-left comment-form__reply-text"></span>
<span class="comt-tips-right"><a href="javascript:;" id="cancel-comment-reply-link" class="comment-form__cancel-reply"><i class="fas fa-times"></i> <?php esc_html_e('取消', 'aksrt'); ?></a></span>
</div>
<textarea id="comment" name="comment" class="form-control grin" rows="3" placeholder="<?php echo esc_attr((string) $ctx['box_placeholder']); ?>" required></textarea>
<textarea id="comment" name="comment" class="form-control grin comt-textarea" rows="2" placeholder="<?php echo esc_attr((string) $ctx['box_placeholder']); ?>" required></textarea>
<div class="comt-ctrl">
<div class="comment-toolbar" role="toolbar" aria-label="<?php esc_attr_e('评论工具栏', 'aksrt'); ?>">
<button type="button" class="comment-toolbar__btn"<?php echo empty($toolbar['smilie']) ? ' hidden' : ''; ?> title="<?php esc_attr_e('表情', 'aksrt'); ?>" data-toolbar-action="emoji"><i class="far fa-smile"></i></button>
@@ -474,8 +474,15 @@ if (!function_exists('aksrt_comments_render_form')) :
</div>
<div class="comment-form__submit-area">
<?php if (!$is_logged_in) : ?>
<input type="text" name="author" class="form-control form-control-sm comment-form__guest-field" placeholder="<?php esc_attr_e('昵称', 'aksrt'); ?>" required>
<input type="email" name="email" class="form-control form-control-sm comment-form__guest-field" placeholder="<?php esc_attr_e('邮箱', 'aksrt'); ?>" required>
<div class="comment-form__guest">
<button type="button" class="comment-form__guest-toggle muted-color em09" data-aksrt-guest-toggle aria-expanded="false">
<i class="fa fa-user-edit em09" aria-hidden="true"></i> <?php esc_html_e('填写昵称邮箱', 'aksrt'); ?>
</button>
<div class="comment-form__guest-fields" data-aksrt-guest-fields hidden>
<input type="text" name="author" class="form-control form-control-sm comment-form__guest-field" placeholder="<?php esc_attr_e('昵称', 'aksrt'); ?>" required>
<input type="email" name="email" class="form-control form-control-sm comment-form__guest-field" placeholder="<?php esc_attr_e('邮箱', 'aksrt'); ?>" required>
</div>
</div>
<?php endif; ?>
<button type="submit" class="btn btn-primary btn-sm comment-form__submit" id="comment-submit">
<i class="fas fa-paper-plane" aria-hidden="true"></i>
@@ -571,10 +578,21 @@ if (!function_exists('aksrt_comments_render_empty')) :
* @param array<string,mixed> $ctx Comments context.
*/
function aksrt_comments_render_empty(array $ctx): void {
$closed = !comments_open();
$text = (string) ($ctx['empty_text'] ?? __('暂无评论内容', 'aksrt'));
if ($closed) {
$text = __('评论已关闭', 'aksrt');
} elseif (!empty($ctx['author_only'])) {
$text = __('暂无作者评论', 'aksrt');
}
$hint = $closed
? __('本文评论已关闭,仅可浏览历史留言', 'aksrt')
: (!empty($ctx['author_only'])
? __('切换到「查看全部」可浏览其他评论', 'aksrt')
: __('成为第一个评论者吧', 'aksrt'));
if (function_exists('aksrt_get_null')) {
echo aksrt_get_null($text, 40, 'null.svg', 'comment comment-null comments-empty', 220); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
echo '<p class="comments-empty__hint muted-3-color em09 text-center" style="margin-top:-20px;">' . esc_html__('成为第一个评论者吧', 'aksrt') . '</p>';
echo '<p class="comments-empty__hint muted-3-color em09 text-center" style="margin-top:-20px;">' . esc_html($hint) . '</p>';
return;
}
?>
@@ -583,7 +601,7 @@ if (!function_exists('aksrt_comments_render_empty')) :
<i class="far fa-comment-dots"></i>
</div>
<p class="comments-empty__text"><?php echo esc_html($text); ?></p>
<p class="comments-empty__hint"><?php esc_html_e('成为第一个评论者吧', 'aksrt'); ?></p>
<p class="comments-empty__hint"><?php echo esc_html($hint); ?></p>
</div>
<?php
}