首页 > 解决方案 > 如何将字符串添加到某些 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

我需要链接是这样的:

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";
    }

?>

标签: php

解决方案


如果您尝试将类别添加为 URL 参数,则可以使用:

$link = $item->addChild('LINK', $productobj->getLink() . "?parameter1=" . $product['CATEGORYID']);

推荐阅读