Wishlist 0 ¥0.00

J2Store文章作为商品功能的设计与影响

J2Store 是一款专为 Joomla! 平台设计的轻量级电子商务扩展,其独特的功能之一是允许用户将 Joomla! 文章设置为商品。这一设计引发了人们对其目的及内容与商品管理影响的关注。本文将探讨 J2Store 为何采用这一功能、其优势,以及文章与商品在关联和解除关联后的状态。

为什么设计文章作为商品?

J2Store 允许文章作为商品的设计,源于其与 Joomla! 内容管理系统的深度整合,以及为用户简化电子商务操作的目标。以下是这一设计背后的主要原因:

  1. 与 Joomla! 内容管理的无缝整合
    Joomla! 以文章作为核心内容单元,用于展示文本、图片和多媒体内容。J2Store 利用这一特性,允许文章直接作为商品页面,避免用户在单独的商品界面重复输入内容。这降低了 Joomla! 用户的学习门槛,特别适合希望转型为电商的内容驱动型网站(如博客或教育网站)。

  2. 灵活且丰富的商品展示
    通过将文章作为商品页面,J2Store 让用户能够利用 Joomla! 文章编辑器的强大功能,创建包含图片、视频和格式化文本的吸引人商品描述。这种方式非常适合需要详细介绍的商品,如手工艺品、在线课程或数字下载,助力讲故事式营销和内容驱动的销售。

  3. 降低开发与维护成本
    复用 Joomla! 的文章系统而非开发独立的商品管理模块,降低了 J2Store 的开发和维护成本。这种轻量级设计简化了插件架构,减少资源占用,并确保与 Joomla! 生态的兼容性,对开发者和资源有限的用户都更加友好。

  4. 内容与商务的融合
    现代电子商务强调内容与销售的结合以吸引用户并提升转化率。J2Store 的文章作为商品功能,让博主、教育工作者和内容创作者能够直接将内容(如博客文章或教程)转化为可销售产品(如电子书或课程),无需改变原有工作流程。这种方式支持了内容变现,并适用于多种商业场景。

  5. 优化用户体验
    对于非技术背景的用户,J2Store 在文章编辑界面内管理商品更加直观。用户只需在熟悉的界面中添加价格、库存等商品属性即可完成设置。这种设计降低了操作门槛,特别适合小型企业或个人站长。

  6. 支持多样化的商业场景
    J2Store 支持多种商品类型,包括实体商品、数字商品和订阅服务。文章作为商品载体提供了灵活的展示方式,适应从简单零售到复杂订阅服务的各种销售模式,如会员制课程或咨询服务。

将文章设置为商品后会发生什么?

当一篇文章在 J2Store 中被设置为商品时,原始文章保持不变,同时生成一个商品记录,两者在系统中共存。以下是具体机制:

  • 文章保留:文章继续存在于 Joomla! 的文章管理器中,保留其内容(标题、文本、图片)和设置(分类、标签、权限),可作为普通内容进行管理。
  • 商品创建:J2Store 为文章添加商品数据(如价格、库存、SKU),在数据库中生成商品记录。文章内容成为商品页面的前端展示,附加“加入购物车”按钮等元素。
  • 前端体验:访客看到的是一个融合了文章内容和商品功能的页面,既是内容页面又是商品详情页。
  • 管理方式:文章内容在 Joomla! 文章管理器中编辑,商品属性在 J2Store 商品管理界面中调整,两者通过文章 ID 在数据库中关联。

这种设计确保了灵活性:文章可作为独立内容或商品页面,商品数据可单独管理而不影响文章核心内容。

解除文章与商品关联后会发生什么?

如果解除文章与商品的关联(例如删除商品记录或禁用商品设置),以下情况会发生:

  • 文章保留:原始文章在 Joomla! 文章管理器中保持不变,继续作为普通文章使用,内容和设置不受影响。
  • 商品移除:与文章关联的商品记录在 J2Store 中被删除或失效,商品相关功能(如价格、“加入购物车”按钮)从文章页面移除,商品在电子商务系统中不再存在。
  • 最终结果:系统中仅保留文章,商品功能消失。除非备份了商品数据,否则此过程不可逆。
  • 注意事项:建议在解除关联前备份数据以防丢失商品信息。如果直接删除文章,其关联的商品也会失效,因此需谨慎操作。

结论

J2Store 的文章作为商品功能是一项深思熟虑的设计,充分利用 Joomla! 的内容管理优势,简化电子商务操作。这一功能通过复用文章系统,降低了复杂性,增强了灵活性,并支持内容与商务的深度融合,非常适合小型企业和内容创作者。将文章设置为商品时,文章与商品共存,文章作为内容基础,商品提供电商功能。解除关联后,文章保留,商品移除,用户可以灵活调整内容与销售策略。这一设计体现了 J2Store 在 Joomla! 生态中提供用户友好、 versatile 电子商务解决方案的承诺。

参考资料

  • J2Store 官方文档
  • Joomla! 与 J2Store 数据结构指南
  • J2Store 商品管理教程

用 MCP 打造属于你的 AI 智能体:n8n 工作流实操指南

如果你最近关注 AI 技术,可能经常听到一个新词——MCP。今天这篇文章将带你深入了解什么是 MCP,它的作用是什么,以及如何在 n8n 工作流中使用 MCP,来打造你专属的 AI 智能体。

什么是 MCP?

MCP,全称 Model Context Protocol,是由 Claude 背后的公司 Anthropic 在 2023 年底提出的一项新协议。

用通俗的话来解释,现有的大语言模型,比如 ChatGPT、DeepSeek、Gemini 等,已经具备非常强大的自然语言理解与生成能力,就像是一个有大脑和嘴巴的“人”。但理想中的 AI 智能体,不仅要会“说话”,还应该会“做事”。

换句话说,我们希望给这个“大脑”装上一双“手”——能操作工具。这就是 MCP 的使命:让大语言模型能无缝调用各种工具和服务

过去,连接大语言模型和工具的方式主要有两种:

  1. 写代码接入:将模型嵌入应用底层。这种方式对非程序员极不友好。

  2. 使用工作流工具:如 n8n 或 make.com 来实现工具链集成,但配置繁琐,需要手动设定输入输出格式、操作方式等。

MCP 协议就像是给每一个工具增加了“通用接口”,让 AI 可以快速识别并调用它们。未来,当 MCP 成为标准协议,AI Agent 的能力和开发效率将会大幅提升。

MCP 如何与 n8n 搭配使用?

接下来我们以 n8n 为例,演示如何将 MCP 工具接入一个 AI Agent,进行网页爬取和内容总结操作。

1. 准备工作:部署自托管版 n8n

因为 MCP 节点是一个社区节点(community node),并非 n8n 官方内置,我们需要使用自托管版本的 n8n。

自托管有两种方式:

  • 本地部署(local hosting)

  • 云端部署(例如用 Railway)

本文采用 Railway:

  1. 前往 Railway 官网,用 GitHub 账号登录。

  2. 创建或进入一个 Workspace。

  3. 点击 Add NewDeploy a Template,搜索并部署 n8n

  4. 部署成功后,点击 Primary 查看运行状态。

  5. 设置自定义域名(如 yourname.up.railway.app)。

首次登录 n8n 时需要注册账号。

2. 配置 MCP 节点

  1. 在 n8n 中打开 SettingsCommunity Nodes

  2. 搜索并安装 MCP 节点(需设置环境变量)。

  3. 回到 Railway,进入 n8n 项目的 Variables,添加如下变量:

    • 名称:N8N_COMMUNITY_NODE_ALLOW_BETA

    • 值:true

3. 接入 Firecrawl MCP 工具

3.1 安装 Firecrawl MCP

  1. 打开命令行终端。

  2. 根据 Firecrawl GitHub 上的指引运行安装命令。

3.2 获取 Firecrawl API Key

  1. 登录 Firecrawl 官网。

  2. 创建 API Key,复制备用。

3.3 在 n8n 中配置 MCP 工具

  1. 添加 MCP 节点,命名为 Firecrawl

  2. 设置字段:

    • Command:npx firecrawl

    • Arguments:根据官方格式填写

    • Environment:添加你的 API Key,格式为 FIRECRAWL_API_KEY=your_key

  3. 工具描述选择“自动”(automatic)

4. 创建 AI Agent 工作流

  1. 创建一个新的工作流。

  2. 添加第一个节点:On Chat Message,用于接收用户输入。

  3. 添加 AI Agent 节点,依次配置:

    • Chat model:选择 OpenAI(如 GPT-4o Mini),设置 API Key。

    • Memory:选择 Simple memory

    • 工具调用设置:

      • 使用 MCP 协议的两个工具节点:

        • List Tools:列出所有 Firecrawl 可用功能(如 scrape、map 等)。

        • Execute Tool:让 AI Agent 选择并执行合适工具。

    • Prompt 设置:设定 AI Agent 的角色、任务、可用工具说明等。

5. 测试工作流效果

  1. 打开 Chat 界面。

  2. 粘贴你想要爬取的网页链接。

  3. 输入指令,比如“请抓取这个网页并用 Markdown 格式总结内容”。

  4. 工作流开始运行,AI 会自动调用工具完成网页内容抓取,并返回结构化结果。

你可以查看每个节点的执行详情,确认:

  • list tool 成功返回可用工具列表。

  • execute tool 正确调用爬虫功能并获取网页内容。

  • AI Agent 根据结果生成总结并输出。

MCP 的未来展望

虽然 MCP 目前还处于早期阶段,可用的工具不算多,但其标准化的设计理念已经展示出巨大的潜力。随着更多服务加入 MCP 协议,AI 与工具的连接将变得像搭积木一样简单

使用 n8n 等平台结合 MCP,将为非程序员群体打开构建强大 AI 智能体的大门。不久的将来,人人都可以拥有自己的“Manus”。


希望这篇文章能帮助你快速理解 MCP 的核心理念,并上手使用它打造属于你的智能代理。如果你感兴趣,欢迎继续关注后续关于 MCP 工具扩展、n8n 高级用法等内容!

HikaShop与J2Store能否在同一Joomla!网站上协同使用?

HikaShop 和 J2Store 是 Joomla! 平台上两款广受欢迎的电子商务扩展,各有独特的优势和设计理念。许多 Joomla! 用户好奇,这两个扩展能否安装在同一个网站上,相互补充功能不足,或者 HikaShop 的产品能否直接在 J2Store 中使用。本文将探讨它们的兼容性、协同使用的可能性以及实际操作中的注意事项。

HikaShop 与 J2Store 的兼容性

直接兼容性

HikaShop 和 J2Store 无法直接兼容,因为它们使用不同的数据结构和产品管理系统:

  • HikaShop:拥有独立的商品管理系统,数据存储在专用数据库表中,支持产品、分类、价格和属性等复杂功能,适合需要高级电子商务功能的场景。
  • J2Store:基于 Joomla! 的文章系统,将文章转化为产品页面,简化了与内容的整合,但高级功能较为有限。

由于这些差异,HikaShop 的产品无法直接在 J2Store 中使用,反之亦然。不过,通过特定的工具或手动操作,可以实现数据迁移。

数据迁移方案

虽然无法直接整合,但可以通过以下方式将 HikaShop 的产品迁移到 J2Store:

  • 第三方迁移工具
    • LitExtensionNext-Cart 提供从 HikaShop 到 J2Store 的数据迁移服务,支持迁移产品、分类、客户和订单等数据。用户需提供两个站点的 URL,并在站点上安装连接包(如 Kitconnect)。这些工具支持高级数据映射,确保迁移顺畅。
    • CommerceLab 也在开发类似工具,可能适用于此场景。
  • 手动迁移
    • 使用 HikaShop 的导出功能将产品数据导出为 CSV 文件。
    • 根据 J2Store 的导入格式调整 CSV 文件,然后使用 J2Store 的 CSV 导入工具上传产品。需特别注意产品图片、分类结构和属性的匹配,以确保数据一致性。
  • J2Store 官方支持
    • J2Store 官方论坛提到,他们可以提供脚本协助将 HikaShop 的订单或产品数据迁移到 J2Store。用户需联系 J2Store 团队并提供旧站点的备份。

在同一网站上同时使用 HikaShop 和 J2Store

技术可行性

在技术上,可以在同一个 Joomla! 网站上同时安装和运行 HikaShop 和 J2Store。作为独立的扩展,它们没有直接的依赖冲突,且使用不同的数据库表,数据层面不会相互干扰。

功能互补的可能性

通过结合两者的优势,可以在某些场景下弥补各自的不足:

  • HikaShop 的优势
    • 支持多供应商市场、订阅产品、拍卖和批发价格等高级功能。
    • 强大的产品属性和变体管理(如颜色、尺寸)。
    • 适合大型或高度定制化的在线商店。
  • J2Store 的优势
    • 简单易用,基于 Joomla! 文章系统,适合快速搭建小型商店。
    • 与 Joomla! 内容、模板和模块无缝整合。
    • 完全免费,适合预算有限的用户。
  • 互补使用场景
    • 使用 HikaShop 管理复杂产品(如定制商品或订阅服务),同时用 J2Store 创建基于文章的简单产品页面(如促销品或数字下载)。
    • HikaShop 用于 B2B 或批发业务,J2Store 用于面向普通消费者的零售页面。
    • 利用 J2Store 的文章整合能力展示产品内容,HikaShop 处理购物车和结账流程。

协同使用的挑战

尽管可以同时安装两者,但以下问题可能影响实际使用:

  • 功能重叠与冲突
    • 两者都提供购物车、结账和支付网关等功能,可能导致用户混淆。例如,同一产品可能在两套系统中重复添加,购物车数据无法同步。
    • 如果同时启用类似功能(如“加入购物车”按钮),可能导致前端显示冲突或用户体验不一致。
  • 性能影响
    • 同时运行两个电子商务扩展会增加数据库查询和服务器负载,尤其在产品数量较多时,可能降低网站性能。
    • 多个插件(如支付或运输插件)可能导致兼容性问题或重复加载。
  • 管理复杂性
    • 两套系统分别管理产品、订单和客户数据,无法统一。例如,HikaShop 的订单不会出现在 J2Store 后台,反之亦然。
    • 如果产品数据(如价格、库存)需在两套系统中同步,需手动更新或开发自定义脚本,增加维护成本。
  • 前端整合难度
    • HikaShop 和 J2Store 的前端模板和样式可能不一致,需额外调整 CSS 以保持统一。
    • 模块和菜单分配需谨慎配置,避免两套组件在同一页面上冲突。
  • 支付与运输整合
    • 如果两套系统使用不同的支付网关或运输方式,可能导致配置复杂或用户体验不统一。

协同使用的实用建议

若决定同时使用 HikaShop 和 J2Store,以下建议可帮助优化配置:

  • 明确分工
    • 为两套系统分配不同用途,例如 HikaShop 用于复杂产品,J2Store 用于简单产品。通过 Joomla! 菜单或模块将它们分配到不同页面(如 HikaShop 用于“商店”,J2Store 用于“促销”)。
  • 统一购物车(需开发)
    • 默认情况下,两者的购物车是分开的。若需统一购物车体验,需开发自定义插件,将 J2Store 的产品添加到 HikaShop 的购物车(或反之)。这需要熟悉两者的 API 和 Joomla! 开发。
  • 数据同步
    • 通过 CSV 导入/导出或第三方工具(如 LitExtension)定期同步产品数据。
    • 或者开发脚本,自动将 HikaShop 的产品数据映射到 J2Store 的文章系统。
  • 优化前端显示
    • 使用 Joomla! 的模板覆盖功能,调整 HikaShop 和 J2Store 的输出样式,确保前端一致。
    • 通过模块和菜单分配,确保两者的组件不会在同一页面上冲突。
  • 测试与备份
    • 在测试环境中尝试安装和配置,排查兼容性问题。
    • 使用 Akeeba Backup 定期备份站点,防止配置错误导致问题。

替代方案

考虑到同时运行两套扩展的复杂性,以下替代方案可能更适合:

  • 选择单一扩展
    • 若需要多供应商或订阅等高级功能,优先选择 HikaShop,并通过其插件实现 J2Store 的内容整合功能。
    • 若需要简单的内容驱动商店且预算有限,J2Store 更合适,可通过插件扩展功能。
  • 第三方整合插件
    • HikaShop 提供与 Seblod 或 K2 等内容管理扩展的整合插件,可实现类似 J2Store 的文章式产品展示,无需安装 J2Store。
    • J2Store 也支持功能扩展插件,但灵活性稍逊。
  • 自定义开发
    • 若有开发资源,可基于 HikaShop 或 J2Store 定制功能,弥补对方的不足,避免同时使用两套系统。

结论

在同一 Joomla! 网站上同时安装 HikaShop 和 J2Store 是可行的,可以利用两者的优势弥补功能不足,但需要面对功能冲突、性能问题和管理复杂性等挑战。对于大多数用户,选择单一扩展(HikaShop 适合高级需求,J2Store 适合简单场景)并通过插件或定制开发扩展功能更为实际。若必须结合使用,需明确分工、彻底测试,并可能需要定制开发以确保无缝体验。如需进一步指导,可参考官方文档:

如何通过插件将 Joomla! 文章内容导入为 VirtueMart 产品

VirtueMart 是一个基于 Joomla! 的强大电子商务扩展,广泛用于在线商店建设。然而,VirtueMart 本身没有内置功能支持直接将 Joomla! 文章内容批量转换为产品。如果您希望将文章内容(如标题、描述、图片等)导入为 VirtueMart 产品,可以通过第三方插件或工具实现。本文将详细介绍如何使用插件(如第三方内容导入工具)完成这一任务,重点推荐 CSVI Pro,并提供其他替代方案。


一、需求分析与准备

在开始之前,需要明确以下几点:

  1. 数据来源:Joomla! 的文章通常存储在 com_content 组件的数据库表(如 #__content)中,包含标题(title)、简介(introtext)、全文(fulltext)等字段。
  2. 目标格式:VirtueMart 产品需要字段如产品名称(product_name)、描述(product_desc)、价格(product_price)、SKU、分类等。
  3. 字段映射:明确文章字段如何对应到 VirtueMart 产品字段,例如文章标题映射到产品名称,文章内容映射到产品描述。
  4. 工具选择:选择适合的第三方导入工具或插件。

此外,建议备份 Joomla! 数据库和 VirtueMart 数据,以防导入过程中出现问题。


二、推荐的第三方导入工具

以下是几种常用的工具和插件,可用于将 Joomla! 文章内容导入为 VirtueMart 产品:

1. CSVI Pro (CSV Improved)

简介:CSVI Pro 是一款功能强大的 Joomla! 扩展,支持从 CSV 文件或数据库导入数据到 VirtueMart。它可以直接从 Joomla! 文章表提取数据并转换为产品。

功能

  • 支持从数据库(如 #__content 表)或 CSV 文件导入数据。
  • 提供灵活的字段映射功能,允许将文章字段映射到 VirtueMart 产品字段。
  • 支持批量导入产品、分类、价格、图片等。

使用步骤

  1. 安装 CSVI Pro
    • 从 CSVI 官网 下载并安装 CSVI Pro。
    • 确保安装 VirtueMart 和 Joomla! 的 CSVI 扩展包。
  2. 准备数据
    • 使用 CSVI 的“数据库导入”功能从 #__content 表提取文章数据,或将文章导出为 CSV 文件,包含标题、内容、图片等字段。
  3. 创建导入模板
    • 在 CSVI Pro 中创建一个新的导入模板,选择“VirtueMart 产品”作为目标。
    • 配置字段映射,例如:
      • Joomla! 文章标题 → VirtueMart 产品名称 (product_name)。
      • Joomla! 文章内容 → VirtueMart 产品描述 (product_desc)。
      • 设置默认值(如价格、SKU)或从其他字段提取。
  4. 执行导入
    • 上传 CSV 文件或运行数据库导入任务。
    • 检查导入结果,确保产品正确出现在 VirtueMart 产品管理页面。

优点:灵活性高,支持复杂映射和批量操作,适合大规模导入。 缺点:需要一定的配置学习成本,且为付费插件。

2. 自定义 PHP 脚本

简介:如果 CSVI Pro 不满足需求,可以通过自定义 PHP 脚本从 Joomla! 文章数据库提取数据并插入到 VirtueMart 产品表中。

实现步骤

  1. 分析数据库结构

    • Joomla! 文章存储在 #__content 表,包含 titleintrotextfulltext 等字段。
    • VirtueMart 产品存储在 #__virtuemart_products 表,包含 product_nameproduct_desc 等字段。
  2. 编写脚本

    • 使用 Joomla! 的 API(如 JDatabase)查询文章数据。

    • 将数据插入 VirtueMart 产品表,确保分类、价格等字段正确设置。

    • 示例代码:

      <?php
      defined('_JEXEC') or die;
      
      $db = JFactory::getDbo();
      $query = $db->getQuery(true)
          ->select('*')
          ->from($db->quoteName('#__content'));
      $db->setQuery($query);
      $articles = $db->loadObjectList();
      
      foreach ($articles as $article) {
          $product = new stdClass();
          $product->virtuemart_product_id = null;
          $product->product_name = $article->title;
          $product->product_desc = $article->introtext . $article->fulltext;
          $product->published = 1;
          $db->insertObject('#__virtuemart_products', $product);
      }
      
  3. 运行脚本

    • 将脚本放入 Joomla! 的 CLI 文件夹或通过自定义组件运行。
    • 确保处理分类关联(#__virtuemart_product_categories)和价格(#__virtuemart_product_prices)。

优点:完全自定义,适合复杂需求。 缺点:需要开发技能,维护成本较高。

3. 其他插件

  • J2Store:J2Store 是一个 Joomla! 电子商务扩展,可将文章直接转换为产品。如果考虑迁移到 J2Store,可以使用其内置功能。
  • SP Page Builder:某些内容管理扩展可能提供与 VirtueMart 集成的导入工具,但功能有限。

三、CSVI Pro 导入的具体流程

以 CSVI Pro 为例,以下是详细的操作流程:

  1. 安装 CSVI Pro 和 VirtueMart 扩展
    • 在 Joomla! 后台安装 CSVI Pro 和 VirtueMart 插件。
  2. 导出 Joomla! 文章数据
    • 使用 CSVI Pro 的“导出”功能,从 #__content 表导出文章数据到 CSV 文件。
    • 确保 CSV 文件包含所需字段(如标题、内容、图片路径等)。
  3. 创建 VirtueMart 产品导入模板
    • 在 CSVI Pro 中选择“导入” > “新建模板” > “VirtueMart 产品”。
    • 配置字段映射,例如:
      • CSV 列“title” → VirtueMart 字段“product_name”。
      • CSV 列“introtext” → VirtueMart 字段“product_s_desc”。
    • 设置默认值(如产品状态为“已发布”,价格为 0)。
  4. 处理分类和图片
    • 如果文章有分类,需先在 VirtueMart 中创建对应的产品分类,并映射分类 ID。
    • 如果文章包含图片,需将图片路径转换为 VirtueMart 的媒体路径(如 images/stories/virtuemart/product/)。
  5. 运行导入并验证
    • 上传 CSV 文件并运行导入任务。
    • 在 VirtueMart 产品管理中检查导入的产品是否正确。

四、注意事项

  • 数据清洗:导入前检查文章数据是否完整,避免缺失关键字段(如 SKU、价格)。
  • 分类映射:VirtueMart 产品需关联分类,需提前创建分类并在导入时指定。
  • 图片处理:确保文章图片路径正确,或将图片批量上传到 VirtueMart 的媒体文件夹。
  • 性能优化:对于大量文章,分批导入以避免超时或内存问题。
  • 测试环境:建议在测试环境中进行导入,确保数据准确性。

五、替代方案

如果插件或脚本实现复杂,可以考虑以下替代方案:

  • 手动转换:对于少量文章,手动复制文章内容到 VirtueMart 产品页面。
  • API 集成:使用 VirtueMart 的 API 或 Joomla! 的 REST API 开发自动化工具。
  • 外包开发:聘请开发者定制导入工具,适合复杂需求。

六、推荐资源


七、总结

通过 CSVI Pro 是将 Joomla! 文章内容导入为 VirtueMart 产品的最推荐方式,其强大的字段映射和批量导入功能能够高效完成任务。对于需要更高灵活性的场景,可以考虑自定义 PHP 脚本,但这需要一定的开发技能。无论选择哪种方法,建议在导入前做好数据准备和备份,并在测试环境中验证效果。如果您有特定的数据格式或插件问题,可以进一步咨询相关技术支持或社区论坛。

About Us

Since 1996, our company has been focusing on domain name registration, web hosting, server hosting, website construction, e-commerce and other Internet services, and constantly practicing the concept of "providing enterprise-level solutions and providing personalized service support". As a Dell Authorized Solution Provider, we also provide hardware product solutions associated with the company's services.
 

Contact Us

Address: No. 2, Jingwu Road, Zhengzhou City, Henan Province

Phone: 0086-371-63520088 

QQ:76257322

Website: 800188.com

E-mail: This email address is being protected from spambots. You need JavaScript enabled to view it.