从 CommerceTools 数据库的内容创建站点地图
Create sitemap from the content of the CommerceTools database
我需要为我的基于 CommerceTools 的商店创建站点地图文件,如果它可以根据 CTP 数据库的内容自动完成,那就太好了。
您知道是否已经开发了允许执行此任务的模块、工具或扩展吗?
编辑->
我知道每个在线商店都可以使用不同的技术来构建。
在我们的具体案例中,前端是基于 JVM 的 Sunrise,因此虽然不是必需的,但为该技术创建此工具会很方便。
我也认识到每个项目都可以具有使其不同于任何其他项目(主要是静态内容或来自外部 CMS)的特定功能,因此我知道创建通用工具非常复杂。
无论如何,我认为如果有一些工具能够使用类别和产品的片段从 CTP 的最动态内容创建 "sitemap-products.xml" 会很棒。
然后可以从站点地图索引调用此 "sitemap-products.xml",您可以从该站点地图索引 link 可以由 CMS(如果有的话)自行生成的此站点地图和其他辅助站点地图和/或其他更静态的,可以由开发团队手动创建和维护。
<-编辑
提前致谢。
我会给你一个简单的规则来从数据库创建一个完美的站点地图。
Sitemap.php :
<?php
$site = "https://yourdomain.ccom/"; // your URL addres with slash at end "/".
$chfreqprod = "weekly"; // the frequency of sitemaps
$priority = "0.8"; // priority
$date = date("Y-m-d\TH:m:s+02:00", time());
define ('DB_USER', 'changeWithYourUser');
define ('DB_PASSWORD', 'changeWithYourPassword');
define ('DB_HOST', 'localhost');
define ('DB_NAME', 'cangeWithYourDataBase');
$conn = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die("Could not connect to the database.");
mysql_select_db(DB_NAME, $conn) or die("Can not select the table in the database!");
header("Content-Type: text/xml;charset=utf-8");
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<?xml-stylesheet type=\"text/xsl\" href=\"smap.xsl\"?>
<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">";
$query = @mysql_query("SELECT * FROM products LIMIT 0,25000");
while($row = @mysql_fetch_array($query)){
$product = $row['product_seo'];
echo "<url>
<loc>".$site.$product.".html</loc>
<lastmod>".$date."</lastmod>
<changefreq>".$chfreqprod."</changefreq>
<priority>".$priority."</priority>
</url>";
}
echo "</urlset>";
?>
smap.xsl :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:html="http://www.w3.org/TR/REC-html40"
xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes" />
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>XML Sitemap</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="robots" content="noindex,follow" />
<style type="text/css">
body {
font-family:"Lucida Grande","Lucida Sans Unicode",Tahoma,Verdana;
font-size:13px;
}
#intro {
background-color:#CFEBF7;
border:1px #2580B2 solid;
padding:5px 13px 5px 13px;
margin:10px;
}
#intro p {
line-height:16.8667px;
}
#intro strong {
font-weight:normal;
}
table {
width:100%;
}
td {
font-size:11px;
}
th {
text-align:left;
padding-right:30px;
font-size:11px;
background-color:#E1E3EE;
}
tr.high {
background-color:whitesmoke;
}
tr:hover {
background-color:#E8EAF2;
}
#footer {
width:100%;
padding:2px;
margin-top:10px;
font-size:8pt;
color:gray;
text-align:center;
}
#footer a {
color:gray;
}
a {
color:#000;
text-decoration:none;
}
a:hover {
text-decoration:underline;
}
</style>
</head>
<body>
<xsl:apply-templates></xsl:apply-templates>
</body>
</html>
</xsl:template>
<xsl:template match="sitemap:urlset">
<h1 align="center">XML Sitemap</h1>
<div id="content">
<table cellpadding="5">
<tr style="border-bottom:1px black solid;">
<th width="70%">URL</th>
<th width="5%">Priority</th>
<th width="12%">Change frequency</th>
<th width="13%">Last modified</th>
</tr>
<xsl:variable name="lower" select="'abcdefghijklmnopqrstuvwxyz'"/>
<xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
<xsl:for-each select="./sitemap:url">
<tr>
<xsl:if test="position() mod 2 != 1">
<xsl:attribute name="class">high</xsl:attribute>
</xsl:if>
<td>
<xsl:variable name="itemURL">
<xsl:value-of select="sitemap:loc"/>
</xsl:variable>
<a href="{$itemURL}">
<xsl:value-of select="sitemap:loc"/>
</a>
</td>
<td>
<xsl:value-of select="concat(sitemap:priority*100,'%')"/>
</td>
<td>
<xsl:value-of select="concat(translate(substring(sitemap:changefreq, 1, 1),concat($lower, $upper),concat($upper, $lower)),substring(sitemap:changefreq, 2))"/>
</td>
<td>
<xsl:value-of select="concat(substring(sitemap:lastmod,0,11),concat(' ', substring(sitemap:lastmod,12,5)))"/>
</td>
</tr>
</xsl:for-each>
</table>
</div>
<div id="footer">Index Sitemap by <a href="https://www.adydev.com" target="_blank">www.adydev.com</a></div>
</xsl:template>
<xsl:template match="sitemap:sitemapindex">
<h1 align="center">XML Sitemap Index</h1>
<div id="content">
<table cellpadding="5">
<tr style="border-bottom:1px black solid;">
<th width="85%">URL of sub-sitemap</th>
<th width="15%">Last modified</th>
</tr>
<xsl:for-each select="./sitemap:sitemap">
<tr>
<xsl:if test="position() mod 2 != 1">
<xsl:attribute name="class">high</xsl:attribute>
</xsl:if>
<td>
<xsl:variable name="itemURL">
<xsl:value-of select="sitemap:loc"/>
</xsl:variable>
<a href="{$itemURL}">
<xsl:value-of select="sitemap:loc"/>
</a>
</td>
<td>
<xsl:value-of select="concat(substring(sitemap:lastmod,0,11),concat(' ', substring(sitemap:lastmod,12,5)))"/>
</td>
</tr>
</xsl:for-each>
</table>
</div>
<div id="footer">Index Sitemap by <a href="https://www.adydev.com" target="_blank">www.adydev.com</a></div>
</xsl:template>
</xsl:stylesheet>
.htaccess :
RewriteRule ^sitemap.xml$ sitemap.php [L]
对于多语言站点地图、索引站点地图和自动化站点地图,请与我联系。谢谢!
没有可用的标准模块或扩展;站点地图是 frontend-specific 因为每个人在站点上都有不同的 URL 模式和 non-commerce 内容。
需要构建适合您项目开发所采用的前端技术的站点地图。
我回到这个问题是想告诉您,我们终于通过使用 Play Framework 的模块解决了我们的需求,该模块能够使用您传递的 URL 生成站点地图。
我们已经从其创建者 (https://github.com/edulify/play-sitemap-module.edulify.com) 的存储库中下载了该模块,并且在为产品、类别和静态页面配置了一些不同的提供程序之后,因为我们希望每种类型的 link对于搜索引擎有不同的刷新频率和优先级,我们设法每 24 小时自动生成我们的 sitemap.xml。
如果有人需要帮助在您的商店中使用 Sunrise 实现此功能,请与我联系,我会尽力帮助您。
非常感谢大家为我们提供的帮助。
问候。
米格尔
我需要为我的基于 CommerceTools 的商店创建站点地图文件,如果它可以根据 CTP 数据库的内容自动完成,那就太好了。
您知道是否已经开发了允许执行此任务的模块、工具或扩展吗?
编辑->
我知道每个在线商店都可以使用不同的技术来构建。 在我们的具体案例中,前端是基于 JVM 的 Sunrise,因此虽然不是必需的,但为该技术创建此工具会很方便。
我也认识到每个项目都可以具有使其不同于任何其他项目(主要是静态内容或来自外部 CMS)的特定功能,因此我知道创建通用工具非常复杂。
无论如何,我认为如果有一些工具能够使用类别和产品的片段从 CTP 的最动态内容创建 "sitemap-products.xml" 会很棒。
然后可以从站点地图索引调用此 "sitemap-products.xml",您可以从该站点地图索引 link 可以由 CMS(如果有的话)自行生成的此站点地图和其他辅助站点地图和/或其他更静态的,可以由开发团队手动创建和维护。
<-编辑
提前致谢。
我会给你一个简单的规则来从数据库创建一个完美的站点地图。
Sitemap.php :
<?php
$site = "https://yourdomain.ccom/"; // your URL addres with slash at end "/".
$chfreqprod = "weekly"; // the frequency of sitemaps
$priority = "0.8"; // priority
$date = date("Y-m-d\TH:m:s+02:00", time());
define ('DB_USER', 'changeWithYourUser');
define ('DB_PASSWORD', 'changeWithYourPassword');
define ('DB_HOST', 'localhost');
define ('DB_NAME', 'cangeWithYourDataBase');
$conn = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die("Could not connect to the database.");
mysql_select_db(DB_NAME, $conn) or die("Can not select the table in the database!");
header("Content-Type: text/xml;charset=utf-8");
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<?xml-stylesheet type=\"text/xsl\" href=\"smap.xsl\"?>
<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">";
$query = @mysql_query("SELECT * FROM products LIMIT 0,25000");
while($row = @mysql_fetch_array($query)){
$product = $row['product_seo'];
echo "<url>
<loc>".$site.$product.".html</loc>
<lastmod>".$date."</lastmod>
<changefreq>".$chfreqprod."</changefreq>
<priority>".$priority."</priority>
</url>";
}
echo "</urlset>";
?>
smap.xsl :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:html="http://www.w3.org/TR/REC-html40"
xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes" />
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>XML Sitemap</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="robots" content="noindex,follow" />
<style type="text/css">
body {
font-family:"Lucida Grande","Lucida Sans Unicode",Tahoma,Verdana;
font-size:13px;
}
#intro {
background-color:#CFEBF7;
border:1px #2580B2 solid;
padding:5px 13px 5px 13px;
margin:10px;
}
#intro p {
line-height:16.8667px;
}
#intro strong {
font-weight:normal;
}
table {
width:100%;
}
td {
font-size:11px;
}
th {
text-align:left;
padding-right:30px;
font-size:11px;
background-color:#E1E3EE;
}
tr.high {
background-color:whitesmoke;
}
tr:hover {
background-color:#E8EAF2;
}
#footer {
width:100%;
padding:2px;
margin-top:10px;
font-size:8pt;
color:gray;
text-align:center;
}
#footer a {
color:gray;
}
a {
color:#000;
text-decoration:none;
}
a:hover {
text-decoration:underline;
}
</style>
</head>
<body>
<xsl:apply-templates></xsl:apply-templates>
</body>
</html>
</xsl:template>
<xsl:template match="sitemap:urlset">
<h1 align="center">XML Sitemap</h1>
<div id="content">
<table cellpadding="5">
<tr style="border-bottom:1px black solid;">
<th width="70%">URL</th>
<th width="5%">Priority</th>
<th width="12%">Change frequency</th>
<th width="13%">Last modified</th>
</tr>
<xsl:variable name="lower" select="'abcdefghijklmnopqrstuvwxyz'"/>
<xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
<xsl:for-each select="./sitemap:url">
<tr>
<xsl:if test="position() mod 2 != 1">
<xsl:attribute name="class">high</xsl:attribute>
</xsl:if>
<td>
<xsl:variable name="itemURL">
<xsl:value-of select="sitemap:loc"/>
</xsl:variable>
<a href="{$itemURL}">
<xsl:value-of select="sitemap:loc"/>
</a>
</td>
<td>
<xsl:value-of select="concat(sitemap:priority*100,'%')"/>
</td>
<td>
<xsl:value-of select="concat(translate(substring(sitemap:changefreq, 1, 1),concat($lower, $upper),concat($upper, $lower)),substring(sitemap:changefreq, 2))"/>
</td>
<td>
<xsl:value-of select="concat(substring(sitemap:lastmod,0,11),concat(' ', substring(sitemap:lastmod,12,5)))"/>
</td>
</tr>
</xsl:for-each>
</table>
</div>
<div id="footer">Index Sitemap by <a href="https://www.adydev.com" target="_blank">www.adydev.com</a></div>
</xsl:template>
<xsl:template match="sitemap:sitemapindex">
<h1 align="center">XML Sitemap Index</h1>
<div id="content">
<table cellpadding="5">
<tr style="border-bottom:1px black solid;">
<th width="85%">URL of sub-sitemap</th>
<th width="15%">Last modified</th>
</tr>
<xsl:for-each select="./sitemap:sitemap">
<tr>
<xsl:if test="position() mod 2 != 1">
<xsl:attribute name="class">high</xsl:attribute>
</xsl:if>
<td>
<xsl:variable name="itemURL">
<xsl:value-of select="sitemap:loc"/>
</xsl:variable>
<a href="{$itemURL}">
<xsl:value-of select="sitemap:loc"/>
</a>
</td>
<td>
<xsl:value-of select="concat(substring(sitemap:lastmod,0,11),concat(' ', substring(sitemap:lastmod,12,5)))"/>
</td>
</tr>
</xsl:for-each>
</table>
</div>
<div id="footer">Index Sitemap by <a href="https://www.adydev.com" target="_blank">www.adydev.com</a></div>
</xsl:template>
</xsl:stylesheet>
.htaccess :
RewriteRule ^sitemap.xml$ sitemap.php [L]
对于多语言站点地图、索引站点地图和自动化站点地图,请与我联系。谢谢!
没有可用的标准模块或扩展;站点地图是 frontend-specific 因为每个人在站点上都有不同的 URL 模式和 non-commerce 内容。 需要构建适合您项目开发所采用的前端技术的站点地图。
我回到这个问题是想告诉您,我们终于通过使用 Play Framework 的模块解决了我们的需求,该模块能够使用您传递的 URL 生成站点地图。
我们已经从其创建者 (https://github.com/edulify/play-sitemap-module.edulify.com) 的存储库中下载了该模块,并且在为产品、类别和静态页面配置了一些不同的提供程序之后,因为我们希望每种类型的 link对于搜索引擎有不同的刷新频率和优先级,我们设法每 24 小时自动生成我们的 sitemap.xml。
如果有人需要帮助在您的商店中使用 Sunrise 实现此功能,请与我联系,我会尽力帮助您。
非常感谢大家为我们提供的帮助。 问候。 米格尔