2014-01-07 40 views
0

出于某种原因,我的客户在其Magento商店中添加了所有带有资本标题的产品。 现在,我正在重新设计他们的网店,我不想拥有资本。Magento小写全部产品标题

我正在考虑运行一个脚本,它将替换数据库中小写字母标题的所有产品标题。但是,我害怕毁掉数据库。

有谁知道,我该如何正确地做到这一点?

+0

小写或首字母大写?在网站上还是在数据库中?为什么你认为你会制动DB? – enenen

+1

如果您害怕损坏数据库,请执行以下操作:进行备份,查看是否可以从备份进行恢复,然后在数据库中执行更改。如果有什么爆炸---你有备份(你知道它的工作原理)> –

回答

3

做到这一点(在我看来)最好的办法是重写目录/产品型号,并添加一个方法

<?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;

记住在运行任何脚本之前始终备份数据库

+0

该脚本正在工作,thnx!还有一个camelcase解决方案吗? – Royw

1

改变所有产品名称(标题你叫),你需要表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 
    } 
} 
0

您可以运行此查询来更改产品标题的大小写。请把DATABSE的备份,还可以确保有关entity_type_id和attribute_id价值

UPDATE catalog_product_entity_varchar SET value = LOWER(value) WHERE entity_type_id = '10' AND attribute_id = '96'

我已经测试了这一点。它对我的工作很好。

0

如果您想更正数据,请在数据库中进行更正。无论如何,拥有一个合适的开发环境和最新的备份是必须的,所以不需要担心任何事情。

但是,如果您只是希望在保持数据不变的情况下修复apperiance,请考虑使用CSS来小写/标题标题。

0

您还可以更改产品名称的情况下在前端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> 
0

也许不理想,但另一个简单的选择是使用CSS。

只需将文本转换添加到您的产品标题元素。

因此,假设该产品的标题是:

<h1 class="product-title">PRODUCT TITLE</h1> 

对于所有小写只需添加:

h1.product-title { text-transform: lowercase; } 

或者你可以利用每首字母:

h1.product-title { text-transform: capitalize; }