出于某种原因,我的客户在他们的 Magento 商店中添加了所有带有大写标题的产品。现在,我正在重新设计他们的网上商店,我不想拥有大写的标题。
我正在考虑运行一个脚本,它将所有产品标题替换为数据库中的小写标题。但是,我害怕破坏数据库。
有谁知道,我怎么能正确地做到这一点?
出于某种原因,我的客户在他们的 Magento 商店中添加了所有带有大写标题的产品。现在,我正在重新设计他们的网上商店,我不想拥有大写的标题。
我正在考虑运行一个脚本,它将所有产品标题替换为数据库中的小写标题。但是,我害怕破坏数据库。
有谁知道,我怎么能正确地做到这一点?
最好的方法(在我看来)是重写目录/产品模型并添加一个方法
<?php
class Mynamespace_Module_Model_Product extends Mage_Catalog_Model_Product {
public function getName() {
$name = parent::getName();
return strtolower($name);
}
}
或者你可以简单地运行这个脚本:
UPDATE `catalog_product_entity_varchar` SET value=LOWER(value)
where attribute_id = "XX"
其中 XX 是产品实体的属性 ID;您需要为产品名称属性找到正确的 ID;
请记住在运行任何脚本之前始终备份数据库
要更改所有产品名称(您所称的标题),您需要 table catalog_product_entity_varchar
。在您的模型中,或助手制作一些类似这样的功能来获取所有产品并使用 lopp 更改名称(标题)并将其保存回来。
public function renameProduct() {
$products = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect('name') //here you select all products name
));
foreach ($products as $product) {
$product->setName(strtolower($product->getName())); //here you make lowercase you products name
$product->save();//here you save to DataBase new names
}
}
您可以使用 strtolower(http://be2.php.net/strtolower)或仅在 CSS 中使用 text-transform 属性(http://www.w3schools.com/cssref/pr_text_text-transform.asp)
您可以运行此查询来更改产品标题的大小写。请备份 Databse 并确保 entity_type_id 和 attribute_id 值
UPDATE catalog_product_entity_varchar SET value = LOWER(value) WHERE entity_type_id = '10' AND attribute_id = '96'
我已经对此进行了测试。它对我来说很好。
如果要更正数据,请在 db.xml 中进行更正。无论如何,必须拥有适当的开发环境和最新的备份,因此无需担心任何事情。
但是,如果您只想在保持数据不变的情况下修复外观,请考虑使用 CSS 小写/驼峰式标题。
您还可以在前端 phtml 本身中更改产品名称大小写。例如,如果您想更改出现在产品视图页面中的产品名称,请转到 app/design/frontend///template/catalog/product/view.phtml。那里只是编辑呈现产品名称的部分。
<div class="product-name">
<h1><?php echo strtolower($_helper->productAttribute($_product, $_product->getName(), 'name')) ?></h1>
</div>
也许并不理想,但另一个简单的选择是使用 CSS。
只需将文本转换添加到您的产品标题元素。
所以,假设产品标题是:
<h1 class="product-title">PRODUCT TITLE</h1>
对于所有小写字母,只需添加:
h1.product-title { text-transform: lowercase; }
或者,您可以将每个首字母大写:
h1.product-title { text-transform: capitalize; }