【问题标题】:AJAX navigation in Wordpress - Trouble with PermalinksWordpress 中的 AJAX 导航 - 固定链接问题
【发布时间】:2011-02-01 17:20:47
【问题描述】:

所以我在这里:

我编写了一个博客主题,它类似于一张桌子,上面有很多东西,用户可以拖动,移动元素等等。博客的主要部分放在一本书中,您可以使用分页标记和翻页来浏览这些类别。

为了给用户留下他/她实际上在使用“书”的印象,我首先使用了一个复杂的结构(主要关注页面标记的位置):

  1. 每个类别都使用自己的模板(category-4.php、category-5.php 等)
  2. single.php 指向类别敏感模板(共 6 个类别)

完成后,我发现图形元素导致的流量过多,因为每次点击都会重新加载它们,页面速度非常慢。所以我想到了一个 AJAX 解决方案,最后使用了 ezjax-solution (http://www.fluidbyte.net/index.php?view=simple-ajax-content-changer-with-ezjax),它基本上是一个让在 index.php 中的某个 div 中加载具有某个类的所有 a href。当链接的内容被加载到 div 中时,我将交互式背景的代码(以及流量)保存在其他模板文件中,并以此方式保存流量。

您可以查看正在运行的页面here 并了解导航的工作原理。

基本上这正是我想要的,但它仍然会引起一些麻烦:

  1. 作为单篇文章、分类的模板文件,例如不包含您不能真正使用它们的永久链接的背景。您实际上可以这样做,但它看起来像页面的一半(http://www.palimpsest.eu/2011/02/01/differenzierung/)。访问者对内容有一个“正常”的看法显然很重要。

  2. 出于某种原因,一些需要与帖子 ID 挂钩的插件(如 Sexybookmarks 或 Flattr)无法正常工作。我猜原因与1.问题有关。

现在这是我的方法,我想问一下你认为最好采用哪一种(或者就解决问题的其他方法提供一些灵感):

  1. 导致 single.php 询问您是内联浏览还是来自外部站点,然后进入两个不同的模板(一个简短的模板和一个包含所有图形内容的模板)。在这种情况下,我不知道如何让 single.php 意识到你来自哪里。

  2. 我考虑过使用 AJAXed Wordpress,但我不确定它是否适合我的需要。我也没有看到太多关于导航模块的文档。

  3. 不会刷新临时 Internet 文件中已有内容的任何其他方式。

如果能得到如何解决这个问题的建议,我将不胜感激。

最好的问候, 拉拉

【问题讨论】:

    标签: jquery ajax wordpress navigation permalinks


    【解决方案1】:

    欢迎来到 SO。我不确定我是否理解你到底想要做什么,但这是 AJAX 仅在 WP 中请求内容的常见困境: 您想要链接,单击时像往常一样加载页面。但是您也想使用相同的链接通过 AJAX 加载相同的页面,然后您不希望布局也被加载。

    假设这是您问题的核心,我通常是这样处理的:

    // functions.php
    function is_ajax_request() {
      return (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) &&   
              strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
    }
    
    
    // e.g. in index.php or any other template file:
    <?php if (!is_ajax_request()) { get_header(); }  ?>
    
    // ... Rest of your template ...
    
    <?php if (!is_ajax_request()) { get_footer(); } ?>
    

    这样只有在通过 AJAX 请求模板文件时才会加载内容,否则页面会像往常一样加载。

    如果这对您有帮助,请告诉我,或者进一步解释您的目标。 而且我注意到这里的人回避太长的问题。所以——越短越好;)

    【讨论】:

    • 嗨,Polarblau,感谢您的回答。因此,如果我得到正确的代码,我会将两个代码放入我的模板中:一个用于案例 1(AJAX:)和一个用于案例 2(普通链接:)?
    • 很抱歉让它太长了......但不幸的是我不能让问题比这更短,所以我试图通过结构化来弥补它;)你知道什么是尝试捕获帖子 ID 的插件有问题吗?
    • 只有当你使用 AJAXnot 请求页面时,才会呈现标题(包含所有 CSS/JS 等),这通常意味着你会得到使用 AJAX 时的纯内容通常也很好,因为您已经在页面上拥有所有其他内容(导航、样式、标题等)。因此,不要在模板中使用get_header(),只需使用if (!is_ajax_request()) { get_header(); }。不需要else
    • 嗨,polarblau,我实现了代码,它就像一个魅力。我首先必须稍微清理一下代码(尽管它仍然很乱),因为某些部分必须重新加载,仍然在 index.php 的正文中。但是,我仍在与另一个问题作斗争:插件的问题。如果现在您输入一篇单数文章,sexybookmark-bar 就像一个魅力。它不会与 AJAX 负载。像 Smoothgallery 这样的东西也是如此。对此有什么建议吗?再次感谢你的帮助。现在页面开始呈现。
    • 你能展示一些关于这个问题的代码吗?我对这两个插件都没有经验,所以我需要看看你是如何实现它的。另外,如果您认为这个问题已经解决但又产生了一个新问题,您可能需要考虑通过将其标记为已解决并打开一个具有更多细节的新问题来关闭这个问题。
    猜你喜欢
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 2013-04-21
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    • 1970-01-01
    相关资源
    最近更新 更多