feat(widgets): simplify locations and paid sidebar

Remove deprecated widget locations and widgets, standardize sidebar labels, and render a compact paid-post purchase card in the article sidebar.
This commit is contained in:
kate522 committed 2026-08-14 01:49:50 +08:00
1 parent 51d2ab3aa7
commit bd7d3046a5
43 files changed
+294 -3581

No files matched your search

-38
View File
@@ -95,44 +95,6 @@
setInterval(update, 1000);
}
/* ============================================================
* 3. 合作伙伴无缝滚动 (marquee)
* 用法:<div class="aksrt-marquee" data-speed="1">...内容...</div>
* ============================================================ */
function initMarquee() {
document.querySelectorAll('.aksrt-marquee').forEach(function (el) {
if (el.dataset.marqueeBound) return;
el.dataset.marqueeBound = '1';
var speed = parseFloat(el.dataset.speed || '1');
var inner = el.querySelector('.aksrt-marquee__inner') || el.children[0];
if (!inner) return;
// 克隆内容实现无缝
var clone = inner.cloneNode(true);
el.appendChild(clone);
var pos = 0;
var width = inner.scrollWidth;
function animate() {
pos -= speed;
if (Math.abs(pos) >= width) pos = 0;
inner.style.transform = 'translateX(' + pos + 'px)';
clone.style.transform = 'translateX(' + (pos + width) + 'px)';
if (!reducedMotion) requestAnimationFrame(animate);
}
if (!reducedMotion) {
requestAnimationFrame(animate);
}
// 暂停/恢复
el.addEventListener('mouseenter', function () { el.dataset.paused = '1'; });
el.addEventListener('mouseleave', function () { delete el.dataset.paused; });
});
}
/* ============================================================
* 4. 3D 悬停倾斜 (vanilla tilt)
* 用法:<div data-aksrt-tilt data-tilt-max="15">...</div>
-83
View File
@@ -1,83 +0,0 @@
/**
* AKSRT Frontend Translate — 前端即时翻译
*
* 渐进增强,默认关。通过 Settings 启用后,
* 在语言切换 Widget 中添加"翻译本页"按钮,
* 使用浏览器原生翻译或自定义翻译 API。
*
* @package AKSRT
*/
(function () {
'use strict';
var config = (window.aksrtData && window.aksrtData.translate) || {};
if (!config.enabled) return;
/**
* 触发浏览器原生翻译(Chrome/Edge 内置)
*/
function triggerBrowserTranslate(targetLang) {
// Chrome/Edge 有内置翻译功能
if (document.querySelector('.goog-te-banner-frame') || document.querySelector('#goog-gt-tt')) {
return; // 已经在翻译中
}
// 尝试使用 Google Translate Element
if (window.google && window.google.translate) {
new google.translate.TranslateElement({
pageLanguage: config.sourceLang || 'zh-CN',
includedLanguages: targetLang || '',
layout: google.translate.TranslateElement.InlineLayout.SIMPLE,
autoDisplay: false,
}, 'aksrt-translate-container');
return;
}
// 动态加载 Google Translate
var script = document.createElement('script');
script.src = '//translate.google.com/translate_a/element.js?cb=aksrtTranslateInit';
document.head.appendChild(script);
window.aksrtTranslateInit = function () {
if (!window.google || !window.google.translate) return;
new google.translate.TranslateElement({
pageLanguage: config.sourceLang || 'zh-CN',
includedLanguages: targetLang || config.targetLang || 'en',
layout: google.translate.TranslateElement.InlineLayout.SIMPLE,
autoDisplay: false,
}, 'aksrt-translate-container');
};
}
/**
* 创建翻译容器和按钮
*/
function init() {
// 检查是否有语言切换 Widget
var langWidget = document.querySelector('.aksrt-lang-switch, [data-aksrt-lang-switch]');
if (!langWidget && !config.showButton) return;
// 创建隐藏的翻译容器
var container = document.createElement('div');
container.id = 'aksrt-translate-container';
container.style.cssText = 'position:fixed;top:-9999px;left:-9999px;visibility:hidden;';
document.body.appendChild(container);
// 如果配置了显示按钮,在语言切换 Widget 旁添加
if (config.showButton && langWidget) {
var btn = document.createElement('button');
btn.type = 'button';
btn.className = 'aksrt-translate-btn';
btn.innerHTML = '<i class="fas fa-language"></i> 翻译本页';
btn.addEventListener('click', function () {
triggerBrowserTranslate(config.targetLang || 'en');
btn.textContent = '翻译中...';
btn.disabled = true;
});
langWidget.appendChild(btn);
}
}
document.addEventListener('DOMContentLoaded', init);
})();
+2 -2
View File
@@ -26,9 +26,9 @@
document.querySelector('[data-nav="posts"]') ||
document.querySelector('[data-nav]');
// Support multiple TOC shells (built-in single sidebar + WidgetPostsNavs).
// The article sidebar and mobile drawer share one built-in TOC source.
var tocWidgets = Array.prototype.slice.call(
document.querySelectorAll('.posts-nav-box.toc-widget, .posts-nav-box[data-title]')
document.querySelectorAll('.posts-nav-box.toc-widget')
);
var tocLists = [];
tocWidgets.forEach(function (box) {
-37
View File
@@ -280,42 +280,6 @@
});
}
// Feature intro media tabs.
function initFeatureIntro() {
document.querySelectorAll('[data-aksrt-feature-intro]').forEach(function (root) {
if (root.dataset.aksrtFiBound === '1') return;
root.dataset.aksrtFiBound = '1';
var tabs = [].slice.call(root.querySelectorAll('.aksrt-fi__tab'));
var panels = [].slice.call(root.querySelectorAll('.aksrt-fi__panel'));
if (!tabs.length || !panels.length) return;
function go(i) {
tabs.forEach(function (t, idx) {
t.classList.toggle('is-active', idx === i);
});
panels.forEach(function (p, idx) {
p.classList.toggle('is-active', idx === i);
var v = p.querySelector('video');
if (!v) return;
if (idx === i) {
if (!v.getAttribute('src') && v.getAttribute('data-src')) {
v.setAttribute('src', v.getAttribute('data-src'));
}
if (v.play) v.play().catch(function () {});
} else if (v.pause) {
v.pause();
}
});
}
tabs.forEach(function (t) {
t.addEventListener('click', function () {
go(parseInt(t.getAttribute('data-index') || '0', 10));
});
});
});
}
function initFloatingQRCodes() {
var wrap = document.querySelector('.float-right');
if (!wrap) return;
@@ -363,7 +327,6 @@
initCategoryTabs();
initProductTabs();
initMainPostsLazy();
initFeatureIntro();
initFloatingQRCodes();
}