0 0 0

织梦修改{dede:field.body/}给文章自动增加关键词内链

admin
2024-11-01 15:27:32 37

第一步,修改article_article.htm中的{dede:field.body/}为{dede:field.body function='body_url(@me)'/}
第二部,修改INC/extend.func.php新增函数body_url代码如下:

function body_url($text) {

$datelist = file_get_contents(__DIR__ . '/testlist.json');

    // 将 JSON 字符串解码为 PHP 数组  

    $datelist = json_decode($datelist, true);  

    if (json_last_error() !== JSON_ERROR_NONE) {  

        throw new Exception("Invalid JSON string provided.");  

    }  

  

    // 创建一个关联数组来存储替换映射  

    $replacementMap = [];  

    foreach ($datelist as $item) {  

        if (isset($item['text']) && isset($item['textlist'])) {  

            $replacementMap[$item['text']] = $item['textlist'];  

        }  

    }  

  

    // 使用一个数组来跟踪每个词的替换次数  

    $replacementCounts = array_fill_keys(array_keys($replacementMap), 0);  

  

    // 全局替换计数器,确保总替换次数不超过两次  

    $globalReplacementCount = 0;  

  

    // 分割文本,捕获要替换的词和它们之间的文本  

    $segments = preg_split('/(' . implode('|', array_map('preg_quote', array_keys($replacementMap))) . ')/', $text, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);  

    $result = '';  

    $i = 0;  

    while ($i < count($segments)) {  

        $segment = $segments[$i];  

        if (isset($replacementMap[$segment]) && $replacementCounts[$segment] < 1 && $globalReplacementCount < 2) {  

            // 执行替换  

            $replacedSegment = $replacementMap[$segment];  

            // 更新替换次数  

            if (!isset($replacementCounts[$segment])) {

                $replacementCounts[$segment] = 0;

            }

            $replacementCounts[$segment]++;  

            $globalReplacementCount++;  

            // 将替换后的词添加到结果中  

            $result .= $replacedSegment;  

        } else {  

            // 如果不符合替换条件,直接添加原词到结果中  

            $result .= $segment;  

        }  

        $i++;  

    }  

  

    return $result;  

}

这里的$datelist = file_get_contents('testlist');  会读取本地路面下的testlist文件,testlist文件格式如下:

[

{

    "text": "关键词1",

    "textlist": "<a href=\"关键词1链接\">关键词1</a>"

},

{

    "text": "关键词2",

    "textlist": "<a href=\"//关键词2链接\">关键词2</a>"

}]

多的关键词自己新增即可。然后生成文档

最新回复 (0)

    暂无评论

请先登录后发表评论!

返回
请先登录后发表评论!