在Blackfriday/v2中,将链接添加rel=”noreferrer noopener”,target=”_blank”选项

解释

我正在使用WordPress开发和迁移个人博客,将Black Friday更新为v2并尝试了上述主题。虽然问题几乎没有,但在特定情况下遇到了一些困难,所以记录下来备忘。

環境

    • Windows10

 

    • Visual Studio Code

 

    go version go1.15.5 windows/amd64

代码

package main

import (
    // ...省略
    "github.com/russross/blackfriday/v2"
)

func main() {
    // ...省略

    htmlFlag := blackfriday.NoopenerLinks | blackfriday.NoreferrerLinks | blackfriday.HrefTargetBlank
    renderer := blackfriday.NewHTMLRenderer(blackfriday.HTMLRendererParameters{Flags: htmlFlag})
    html := blackfriday.Run([]byte(mdText), blackfriday.WithRenderer(renderer))

    // ...省略
}

关于blackfriday/v2,这就结束了。关于如何设置HtmlFlags,我不太清楚(我英语不好)。

好像是位元運算。已經超過十年了,我已經不太記得了。

上瘾了

我們目前運營著WordPress,同時也運行著一個用於開發測試的新網站。因此,我們準備了一個工具,當我們在WordPress上新增一篇文章時,也會將它遷移到NEW網站的mongodb中。這段話比較長,我會簡化一下。

オレオレブログ移行ツールpackage main

import (
“context”
“database/sql”
“log”
“os”
“strings”

_ “github.com/go-sql-driver/mysql”
“go.mongodb.org/mongo-driver/bson”
“go.mongodb.org/mongo-driver/mongo”
“go.mongodb.org/mongo-driver/mongo/options”
)

// WpPost struct
type WpPost struct {
PostDate string
PostTitle string
PostName string
PostContentFiltered string
postModified string
Slug string
}

// MongoEntry struct
type MongoEntry struct {
EntryID int32 `bson:”entryId”`
EntryCode string `bson:”entryCode”`
PublishDate string `bson:”publishDate”`
Title string `bson:”title”`
Content string `bson:”content”`
Category []string `bson:”category”`
IsPublished int32 `bson:”isPublished”`
AuthorID int32 `bson:”authorId”`
CreatedAt string `bson:”createdAt”`
UpdatedAt string `bson:”updatedAt”`
}

func replaceContentString(val string) string {
rep := strings.NewReplacer(“>”, “>”, “<“, “<“, “””, “\””, “‘”, “=”, “&”, “&”, “\r\n”, “\n”) // CRLFでblackfridayの挙動がおかしくなるので”\r\n”, “\n”を追加
return rep.Replace(val)
}

func main() {
// args
if len(os.Args) < 2 {
println(“invalid args.”)
return
}
postName := os.Args[1]
// mysql
db, err := sql.Open(“mysql”, “user:pass@tcp(127.0.0.1:3306)/dobusarai_blog”)
if err != nil {
log.Fatal(err.Error())
}
defer db.Close()
// get wp-post data with category names
rows, err := db.Query(`select wp.post_date, wp.post_title, wp.post_name, wp.post_content_filtered, wp.post_modified, wt.slug
from wp_posts wp
inner join wp_term_relationships wtr on (wp.ID=wtr.object_id)
inner join wp_terms wt on (wtr.term_taxonomy_id=wt.term_id)
where wp.post_name = ‘` + postName + “‘”)
if err != nil {
log.Fatal(err.Error())
}
defer rows.Close()
// create data for mongodb
idx := 0
var category []string
var entry MongoEntry
for rows.Next() {
var post WpPost
err := rows.Scan(&post.PostDate, &post.PostTitle, &post.PostName, &post.PostContentFiltered, &post.postModified, &post.Slug)
if err != nil {
log.Fatal(err.Error())
}
if idx == 0 {
entry = MongoEntry{
EntryCode: post.PostName,
PublishDate: post.PostDate,
Title: post.PostTitle,
Content: replaceContentString(post.PostContentFiltered),
IsPublished: 1,
AuthorID: 1,
CreatedAt: post.postModified,
UpdatedAt: post.postModified,
}
}
category = append(category, post.Slug)
idx++
}
if entry.EntryCode == “” {
log.Fatal(“entry not found”)
}
// categoryまとめたのを代入
entry.Category = category
// mongodb
ctx := context.Background()
credential := options.Credential{
AuthSource: “doblog”,
Username: “user”,
Password: “pass”,
}
client, err := mongo.Connect(ctx, options.Client().ApplyURI(“mongodb://127.0.0.1:27017”).SetAuth(credential))
if err != nil {
log.Fatal(err.Error())
}
// entryIdの最大値を取得(entryIdを降順にソートして1件取得)
entries := client.Database(“doblog”).Collection(“entries”)
findOption := options.Find().SetSort(bson.D{{Key: “entryId”, Value: -1}}).SetLimit(1)
cur, err := entries.Find(ctx, bson.D{{}}, findOption)
if err != nil {
log.Fatal(err.Error())
}
for cur.Next(ctx) {
var result MongoEntry
err := cur.Decode(&result)
if err != nil {
log.Fatal(err)
}
entry.EntryID = result.EntryID + 1
}
// insert
res, err := entries.InsertOne(ctx, entry)
if err != nil {
log.Fatal(err.Error())
}
log.Println(res)
}

在黑色星期五活动中,只有一篇文章的HTML格式化出现了问题。虽然答案已经写在代码中,但其他正常工作的文章是以LF格式进行换行,而出现问题的文章却是以CRLF格式进行换行。

main.go

```go
package main
<p>main.go</p>

<pre><code class="language-go">package main
main.go

<code>go
package main

除了WordPress(PHP)和个人博客(Go)之外,我还会搞一些Windows/CentOS、MySQL/MongoDB和C#(当需要制作一些工具来方便自己时几乎都会使用它)。因为这些兴趣使然,解决问题需要花费一些时间。特别是在Compass(MongoDB的桌面应用程序)中,我想编辑掉一些不必要的换行符,结果不经意间就达到了预期的效果,反而让我有点慌乱。后来才发现,在更新时它会将所有的换行符转换为LF(换行)才原来的。

bannerAds