sgalinski/sg-seo

TYPO3 的 SEO 工具

安装: 2

依赖项: 0

建议者: 1

安全: 0

类型:typo3-cms-extension


README

许可证: GNU GPL, Version 2

仓库: https://gitlab.sgalinski.de/typo3/sg_seo

请在此处报告错误: https://gitlab.sgalinski.de/typo3/sg_seo

关于

此扩展提供了一种带有额外功能(如)的 Google 网站地图实现:

  • 忽略具有指向其他页面规范链接的页面
  • 尊重 noindex & nofollow 选项
  • 忽略快捷方式和状态页面

调度程序

为此扩展提供了两个调度任务

  1. 一个调度任务用于为每种语言生成网站地图
  2. 一个调度任务用于生成处理文件的 webp 版本

网站地图生成

此调度任务可以激活以创建每种语言的静态网站地图,然后可以用它来代替可能需要很长时间的动态处理过程。

任务接受 3 个参数

  1. relativePathToSitemap: 描述在文件系统中保存生成的网站地图文件的位置。默认为项目根目录。
  2. siteRootId: 网站根的 id,网站地图将从这里开始
  3. enableFilter: 切换以添加隐藏页面(不影响 "NOT_IN_MENU")到网站地图

WebP 生成

此调度任务可以生成处理文件夹中图像的 webp 版本。它使用 PHP 内置函数 imagewebp,因此依赖于已安装的 gd 扩展(TYPO3 的默认要求)。

任务接受 5 个参数

  1. storageUid: 处理的文件存储的 uid。默认为 1,通常是 fileadmin。
  2. savingPercentage: 定义过程必须达到的最小文件大小节省百分比。默认设置为 10。
  3. imageQuality: 定义图像质量。默认设置为 80。
  4. batchSize: 一次处理文件的数目。注意:任务不会在文件数量达到后停止,而是在获取文件数量后处理它们,然后再获取下一批文件。如果它崩溃,可以再次执行任务,并且它将从中断的地方继续处理批次。)默认为 500。
  5. processGif: 包括 gif 图像在处理中,默认为 0,表示不包含。

Apache .htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_ACCEPT} image/webp
    RewriteCond %{DOCUMENT_ROOT}/$1.$2.webp -f
    RewriteRule ^(fileadmin/.+)\.(png|jpe?g)$ $1.$2.webp [L]
</IfModule>

<IfModule mod_headers.c>
    Header append Vary Accept env=REDIRECT_accept
</IfModule>

AddType image/webp .webp

nginx

在你的全局 nginx 配置中添加 map 指令

map $http_accept $webp_suffix {
    default   "";
    "~*webp"  ".webp";
}

并将以下规则添加到你的服务器配置中

location ~* ^/fileadmin/.+\.(png|jpg|jpeg)$ {
        add_header Vary Accept;
        try_files $uri$webp_suffix $uri =404;
}
location ~* ^/other-storage/.+\.(png|jpg|jpeg)$ {
        add_header Vary Accept;
        try_files $uri$webp_suffix $uri =404;
}

确保没有其他规则已经应用于指定的图像格式并阻止进一步执行!

扩展 - SeoAccessPageListEventListener

你可以挂钩到过程以轻松扩展网站地图。

示例:Services.yaml

services:
    MyExt\Event\Listener\SeoAccessPageListEventListener:
        tags:
            -   name: event.listener
                identifier: 'accessPageListEvent'
                event: SGalinski\SgSeo\Events\AccessPageListEvent

事件监听器类

class SeoAccessPageListEventListener {
    public function __invoke(\SGalinski\SgSeo\Events\AccessPageListEvent $event) {
        $pageList = $event->getPageList();
        // ... do something with the list and write it back to the event
        $pageList[] = [
            'url' => 'MY FURTHER URL',
            'title' => ''
        ];
        $event->setPageList($pageList);
    }
}

更多事件

此外,sg_seo 5.3 还增加了新的事件

OverrideSitemapRendererEvent

允许设置不同的渲染器以进行最终输出

ShouldIncludePageInSitemapEvent

给定一个包含 $pageInfo 和 $language 的数组,你可以决定不使用页面进行常规页面渲染

扩展 - XmlSitemapDataProviders

我们还支持 TYPO3 的官方 XmlSitemapDataProviders API。你可以在这里了解更多 https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/XmlSitemap/Index.html .

当我们生成网站地图时,我们会将每种网站地图类型生成到一个新的索引中。默认的xmlSitemap类型正在合并到我们的sitemap.xml中。请记住,我们忽略任何针对pages唯一键的附加数据提供者,因为这是默认的TYPO3唯一键,我们不希望有任何重复。为您的扩展使用另一个唯一键。

其他网站地图类型将生成到它们各自的网站地图索引中。

示例(新闻扩展)

plugin.tx_seo {
    config {
        xmlSitemap { // new entries to the default sitemap.xml
            sitemaps {
                news {
                    provider = GeorgRinger\News\Seo\NewsXmlSitemapDataProvider
                    config {
                        ...
                    }
                }
            }
        }
        googleNewsSitemap { // a completely new googlenewssitemap.xml
            sitemaps {
                news {
                    provider = GeorgRinger\News\Seo\NewsXmlSitemapDataProvider
                    config {
                        googleNews = 1
                        ...
                        template = GoogleNewsXmlSitemap.html
                    }
                }
            }
        }
    }
}

此示例将导致将news唯一键数据提供者条目添加到默认网站地图(xmlSitemap)。googleNewsSitemap条目将从此数据提供者获取条目并创建一个新的网站地图索引。

更改您