XCART-5 在编程中获取属性值并以编程方式分配一些其他值
XCART-5 Get Attributes Values in programming and Assigning some other values progmatically
我正在做 Xcart-5 网站定制。我创建了自己的模块并在上面进行工作。我刚刚创建了一些全局属性(“作为纯文本”)字段并将这些属性分配给某些产品。现在我想在产品详细信息页面中的编程中访问这些字段值,以便在 运行 时间以编程方式分配一些其他值。
我怎样才能完成这个任务。请为我提供解决方案。
在您的模块中,您应该 decorate \XLite\Model\Attribute class 并扩展 getAttributeValue() 那里有方法。
例如,如果我使用开发者 ID Tony 和模块 ID AttributesDemo 的模块,那么我需要创建 XCartDirectory/classes/XLite/Module/Tony/AttributesDemo/Model/Attribute.php 文件内容如下:
<?php
// vim: set ts=4 sw=4 sts=4 et:
namespace XLite\Module\Tony\AttributesDemo\Model;
/**
* Attribute
* @MappedSuperClass
*/
abstract class Attribute extends \XLite\Model\AttributeAbstract implements \XLite\Base\IDecorator
{
public function getAttributeValue(\XLite\Model\Product $product, $asString = false)
{
$result = parent::getAttributeValue($product, $asString);
if (!$asString) {
foreach ($result as $obj) {
if ($obj->asString() == 'Mac') {
$obj->getAttributeOption()->setName('Windows');
}
}
}
return $result;
}
}
这样的实现会将所有属性中的 Mac 值更改为 Windows。
我正在做 Xcart-5 网站定制。我创建了自己的模块并在上面进行工作。我刚刚创建了一些全局属性(“作为纯文本”)字段并将这些属性分配给某些产品。现在我想在产品详细信息页面中的编程中访问这些字段值,以便在 运行 时间以编程方式分配一些其他值。
我怎样才能完成这个任务。请为我提供解决方案。
在您的模块中,您应该 decorate \XLite\Model\Attribute class 并扩展 getAttributeValue() 那里有方法。
例如,如果我使用开发者 ID Tony 和模块 ID AttributesDemo 的模块,那么我需要创建 XCartDirectory/classes/XLite/Module/Tony/AttributesDemo/Model/Attribute.php 文件内容如下:
<?php
// vim: set ts=4 sw=4 sts=4 et:
namespace XLite\Module\Tony\AttributesDemo\Model;
/**
* Attribute
* @MappedSuperClass
*/
abstract class Attribute extends \XLite\Model\AttributeAbstract implements \XLite\Base\IDecorator
{
public function getAttributeValue(\XLite\Model\Product $product, $asString = false)
{
$result = parent::getAttributeValue($product, $asString);
if (!$asString) {
foreach ($result as $obj) {
if ($obj->asString() == 'Mac') {
$obj->getAttributeOption()->setName('Windows');
}
}
}
return $result;
}
}
这样的实现会将所有属性中的 Mac 值更改为 Windows。