You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Elementor自定义代码中获取页面列表实现动态语言切换?

解决方案:动态语言路径切换逻辑

你可以通过维护页面路由映射表+路径解析函数的方式,替代繁琐的静态if判断,实现可扩展的语言切换功能,具体步骤如下:

1. 定义页面映射表

先把不同语言的对应页面用对象关联起来,新增页面时只需要在这个表里添加条目即可:

// 键是页面的统一标识,值是各语言对应的路径
const pageMappings = {
  'frontpage': {
    'dk': '/forside',
    'en': '/en/frontpage'
  },
  'faq': {
    'dk': '/faq',
    'en': '/en/faq'
  },
  // 新增页面直接在这里追加,比如关于页
  'about': {
    'dk': '/om-os',
    'en': '/en/about-us'
  }
};

2. 解析当前页面的语言与标识

写一个函数,自动从当前URL中提取语言代码和页面标识:

function getCurrentPageContext() {
  // 去除路径首尾的斜杠,避免拆分出空字符串
  const cleanPath = location.pathname.trim().replace(/^\/|\/$/g, '');
  const pathSegments = cleanPath.split('/');

  let currentLang, currentPageId;
  // 处理两种路径结构:
  // - 丹麦语默认路径:/forside → 拆分为["forside"]
  // - 英语路径:/en/frontpage → 拆分为["en", "frontpage"]
  if (pathSegments.length === 2) {
    [currentLang, currentPageId] = pathSegments;
  } else if (pathSegments.length === 1) {
    currentLang = 'dk'; // 默认语言设为丹麦语
    currentPageId = pathSegments[0];
  } else {
    // 异常路径(比如多级目录),默认跳首页
    return { lang: 'dk', pageId: 'frontpage' };
  }

  return { lang: currentLang, pageId: currentPageId };
}

3. 更新语言切换器链接

根据当前页面信息,自动生成对应语言的切换链接:

// 传入目标语言,更新对应切换器的href
function setLanguageSwitcher(targetLang) {
  const { pageId } = getCurrentPageContext();
  // 从映射表中获取目标语言的页面路径
  const targetPath = pageMappings[pageId]?.[targetLang];
  const switcherElement = document.getElementById(`${targetLang}-switcher`); // 假设切换器id是dk-switcher、en-switcher

  if (switcherElement) {
    if (targetPath) {
      // 存在对应语言的页面,直接跳转
      switcherElement.href = `https://mypage.dk${targetPath}`;
    } else {
      // 无对应页面时,跳转到目标语言的首页
      switcherElement.href = `https://mypage.dk${pageMappings['frontpage'][targetLang]}`;
    }
  }
}

// 页面加载时初始化所有切换器
document.addEventListener('DOMContentLoaded', () => {
  setLanguageSwitcher('dk');
  setLanguageSwitcher('en');
});

优势说明

  • 可扩展性强:新增页面只需在pageMappings里添加条目,无需修改逻辑代码
  • 代码更简洁:避免大量嵌套if判断,逻辑清晰易维护
  • 容错性高:对异常路径做了fallback处理,不会出现无效链接

内容的提问来源于stack exchange,提问作者Burizer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 11:35:17