如何使用 php 或 js 复制元描述的页面内容并限制为 150 个字符?
How can I copy page content for meta description and limit to 150 characters with php or js?
以前,我的网站只有几个页面,每个页面都有几个包含各个文章的选项卡。因此,我的元描述简单而广泛,每个页面都涵盖了所有内容。
不过,我最近将文章分开放在不同的页面上以帮助我进行 SEO。结果,我现在有 174 页,描述基本相同。显然,这对SEO和CTR不利。
每篇文章都在一个单独的文本文档中,存储在根目录中模板文件夹深处的几个目录中。
我尝试了几个文件函数来读取和回显文件的内容,但只有当调用的文本文件与脚本位于同一目录中时,我才让它工作。
所以我想到从当前页面抓取文章并使用它而不是使用外部文件。我使用当前页面尝试了相同的文件功能,但没有用,我只显示了头部内容,没有正文内容。
我的问题真的是2个问题:
1.) 如何回显不同目录中文件的内容并将其限制为 150 个字符,最好使用 php?
2.) 如果上述方法不起作用或不可能,我如何使用代码所在的脚本内容和 php 执行相同的操作,还是 js?我可以更改包含文章的 div 以具有 id。
我正在寻找一个无论在哪个页面上都完全相同的代码,这样我就可以批量处理 search/replace 而不是编辑 174 页。
注意:我还尝试在我的实验中专门使用超全局变量来使代码与我想要的一样。另外,我不懂 js,所以请提供解释或完整的代码片段以得到任何关于 js 的答案。
文件结构:
root
!
!-tpl
! !
! !-articles
! !
! !-topic1
! !
! !-article1.txt
!-topic
! !
! !-topic1
! !
! !-page1.php
Article1.txt = p 标签的几段内容
Page1.php 期望的效果 =
<!DOCTYPE html>
<head>
<meta id="desc" name="Description" content="Copy of first 150 chars of article1.txt">
</head>
<body>
<div class="container-fluid article" id="article">
<?include "article1.txt"?>
</div>
</body>
</html>
我假设你提供给我的当前变量,为你写了一个程序。将其存储在根级别并运行它
for file in `find . -type f -name article*.txt`
do
filename=`echo $file | cut -d"/" -f 5`
filename_no_ext=${filename%".txt"}
number_of_file=${filename_no_ext#"article"}
output_file_name=./topic/topic$number_of_file/page$number_of_file.php
awk '{
printf "\<\!DOCTYPE html\>\n\<head\>\n"
printf "\<meta id=\"desc\" name=\"Description\" content=\"" substr([=10=],0,50)
printf "\"\>\n\</head\>\n\<body\>\n"
printf "\<div class=\"container-fluid article\" id=\"article\"\>\n"
printf "\<\?include \"" FILENAME "\"\?\>\n"
printf "\<\/div\>\n\</body\>\n\</html\>"
}' $file > $output_file_name
done
希望对您有所帮助,希望您能根据自己的需要稍作修改
以前,我的网站只有几个页面,每个页面都有几个包含各个文章的选项卡。因此,我的元描述简单而广泛,每个页面都涵盖了所有内容。
不过,我最近将文章分开放在不同的页面上以帮助我进行 SEO。结果,我现在有 174 页,描述基本相同。显然,这对SEO和CTR不利。
每篇文章都在一个单独的文本文档中,存储在根目录中模板文件夹深处的几个目录中。
我尝试了几个文件函数来读取和回显文件的内容,但只有当调用的文本文件与脚本位于同一目录中时,我才让它工作。
所以我想到从当前页面抓取文章并使用它而不是使用外部文件。我使用当前页面尝试了相同的文件功能,但没有用,我只显示了头部内容,没有正文内容。
我的问题真的是2个问题:
1.) 如何回显不同目录中文件的内容并将其限制为 150 个字符,最好使用 php?
2.) 如果上述方法不起作用或不可能,我如何使用代码所在的脚本内容和 php 执行相同的操作,还是 js?我可以更改包含文章的 div 以具有 id。
我正在寻找一个无论在哪个页面上都完全相同的代码,这样我就可以批量处理 search/replace 而不是编辑 174 页。
注意:我还尝试在我的实验中专门使用超全局变量来使代码与我想要的一样。另外,我不懂 js,所以请提供解释或完整的代码片段以得到任何关于 js 的答案。
文件结构:
root
!
!-tpl
! !
! !-articles
! !
! !-topic1
! !
! !-article1.txt
!-topic
! !
! !-topic1
! !
! !-page1.php
Article1.txt = p 标签的几段内容
Page1.php 期望的效果 =
<!DOCTYPE html>
<head>
<meta id="desc" name="Description" content="Copy of first 150 chars of article1.txt">
</head>
<body>
<div class="container-fluid article" id="article">
<?include "article1.txt"?>
</div>
</body>
</html>
我假设你提供给我的当前变量,为你写了一个程序。将其存储在根级别并运行它
for file in `find . -type f -name article*.txt`
do
filename=`echo $file | cut -d"/" -f 5`
filename_no_ext=${filename%".txt"}
number_of_file=${filename_no_ext#"article"}
output_file_name=./topic/topic$number_of_file/page$number_of_file.php
awk '{
printf "\<\!DOCTYPE html\>\n\<head\>\n"
printf "\<meta id=\"desc\" name=\"Description\" content=\"" substr([=10=],0,50)
printf "\"\>\n\</head\>\n\<body\>\n"
printf "\<div class=\"container-fluid article\" id=\"article\"\>\n"
printf "\<\?include \"" FILENAME "\"\?\>\n"
printf "\<\/div\>\n\</body\>\n\</html\>"
}' $file > $output_file_name
done
希望对您有所帮助,希望您能根据自己的需要稍作修改