【问题标题】:Google Sitemap issue Contao 4.4Google Sitemap 问题 Contao 4.4
【发布时间】:2018-03-16 07:27:06
【问题描述】:

我正在使用 contao 4.4 实例。我在生成 google 站点地图时遇到问题。 我有一个时事通讯页面(页面类型 = 常规)。在那个页面中,我有一些时事通讯文章(带有预告片)。当我生成站点地图时,这些文章的 url 生成了两次。当我检查核心时,我发现了一个创建页面数组以生成站点地图的类

供应商/contao/core-bundle/src/Resources/contao/classes/Backend.php
第 662 - 680 行。

将“articles/”附加到带有预告片的文章中。所以站点地图生成了url

  1. 与文章/

  2. 列表项

没有文章/

第一个是正确的 url。第二个 Url 生成 404。我如何解决这个问题?

我的站点配置如下

->创建了一个隐藏在导航中的常规页面,并创建了带有配置显示预告片的文章 ->创建另一个页面并将元素创建为“预告文章”并从上述页面中选择文章

【问题讨论】:

  • 我不太了解您的设置。您是在谈论文章预告还是时事通讯?
  • 我编辑了问题。希望你有问题

标签: sitemap contao


【解决方案1】:

所以你的网站结构是这样的?

  • 第 1 页包含多篇文章
  • 第 2 页有一篇文章包含“文章预告”元素,此页面应从站点地图中排除

正确吗?如果是,这可能是解决方案:

在您的“站点结构”中,您可以编辑第 2 页:向下滚动到“专家设置”,有一个选项“在站点地图中显示”,您可以选择“从不显示”。

【讨论】:

  • 我按照您的建议更改了设置,但问题仍然存在。
【解决方案2】:

我解决了这个问题。 url 是从时事通讯包中重新生成的。在 core bundle 中,会生成带有 Teaser 的文章的 url。 newsletter-bundle 还包含用于创建可搜索页面数组的钩子。钩子会重新生成 url。我在 vendor/contao/newsletter-bundle/src/Resources/contao/classes/Newsletter.php 中写了一个函数来检查数组是否包含任何重复的 url。

修改函数 getSearchablePages() ( line 889-897 )

if($this->checkValidUrl($arrPages, $objItem, $strUrl)){
        $arrPages[] = sprintf($strUrl, ($objItem->alias ?: $objItem->id));
}

定义查找重复项的新函数

public function checkValidUrl($arrPages, $objItem, $strUrl)
{
    $alias      = $objItem->alias ?: $objItem->id;
    $urlExplode = explode('%s', $strUrl);
    $articleUrl = $urlExplode[0] . 'articles';
    foreach ($arrPages as $arrPage) {
        $validarticleUrl = $articleUrl . '/' . $alias;
        if (strcasecmp($arrPage,$validarticleUrl) == 0) {
            return false;
        }
    }
    return true;
}

【讨论】:

  • 听起来像一个错误?如果是这样,你应该在 GitHub 上报告。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-28
  • 2020-05-05
  • 1970-01-01
  • 1970-01-01
  • 2020-03-19
  • 2021-09-30
相关资源
最近更新 更多