php - 如何将字符串添加到某些 URL
问题描述
我有一个 php 文件,它生成一个 xml 提要,其中包含我电子商务的所有产品的列表。
对于每个产品,php 文件都设计为分配一系列标签(价格、标题、描述等...)。这些标签之一是我的电子商务上的产品链接。
例子:
<title> smartphone </title>
<category> electronics </category>
<price> 100 </price>
<link> www.mysite.com/smartphone </link>
这是用于提取产品链接的代码(工作)部分(我的电子商务是用 prestashop 制作的):
$link = $item->addChild('LINK', $productobj->getLink();
我需要做的是在为每个产品生成的链接末尾动态添加一些字符串。
例如,如果链接是:
我需要链接是这样的:
www.mysite.com/product-name?parameter1=abc¶meter2=def¶meter3=ghi
并且参数需要根据标签的值进行调整<category>
。
示例:如果产品 A 有标签<category>electronics</category>
在其 url 末尾添加的字符串将是:
?parameter1=电子¶meter2=def¶meter3=ghi
如果产品 B 有标签<category>clothes</category>
在其 url 末尾添加的字符串将是:
?parameter1=衣服¶meter2=def¶meter3=ghi
提前感谢您的宝贵帮助。晚上好。
编辑:我在下面报告了用于生成 xml 文件的代码的更多详细信息。
<?php
public function addChildWithCDATA($name, $value = NULL) {
$new_child = $this->addChild($name);
if ($new_child !== NULL) {
$node = dom_import_simplexml($new_child);
$no = $node->ownerDocument;
$node->appendChild($no->createCDATASection($value));
}
return $new_child;
}
}
require_once(dirname(__FILE__) . '/config/config.inc.php');
require_once(dirname(__FILE__) . '/init.php');
$config = Configuration::getMultiple(array('PS_LANG_DEFAULT', 'PS_COUNTRY_DEFAULT'));
$defaultLangId = $config['PS_LANG_DEFAULT'];
$defaultCountryId = $config['PS_COUNTRY_DEFAULT'];
Context::getContext()->language = new Language($defaultLangId);
Context::getContext()->link = new Link();
$products = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($query);
$counter = 0;
if ($products) {
$itemlist = new SimpleXMLElementExtended('<?xml version="1.0" encoding="UTF-8"?><ITEMLIST></ITEMLIST>');
foreach ($products as $product) {
$item = $itemlist->addChild('ITEM');
$productobj = new Product($product['id_product'], false, $defaultLangId);
$counter++;
$item->addAttribute('ID', $productobj->id);
$item->addAttribute('CITYID', $defcityID);
$item->addAttribute('CATEGORYID', $product['CATEGORYID']);
$title = $item->addChildWithCDATA('TITLE',trim($productobj->name));
$title = $item->addChildWithCDATA('TEXT',strip_tags($productobj->description));
$email = $item->addChild('EMAIL', $defemail);
$link = $item->addChild('LINK', $productobj->getLink());
}
unset($products);
$success &= file_put_contents(_PS_ROOT_DIR_.'/feed.xml', $itemlist->asXML());
echo "DONE";
} else {
echo "NOTHING FOUND";
}
?>
解决方案
如果您尝试将类别添加为 URL 参数,则可以使用:
$link = $item->addChild('LINK', $productobj->getLink() . "?parameter1=" . $product['CATEGORYID']);
推荐阅读
- c# - Xamarin Forms 4.0 的简单注入器支持
- javascript - 导入的 JS 脚本在 ASP.NET 视图中不起作用
- android - Android WebRTC 发送 TURN 消息失败,err=22
- android - 如何防止 EditText 中的数据更新?
- django - Django CMS 多行字段
- javascript - 如何使用其他 div 的类名访问 div
- javascript - 从本地目录获取 csv 文件以制作图表而不使用服务器
- css - 很难找到页面的活动父类,应该显示为两个主菜单的子菜单
- c# - 在同一解决方案中使用 Fody 添加的方法
- java - /usr/lib/x86_64-linux-gnu/libc.so:无效的 ELF 标头