【问题标题】:Magento lowercase all product titlesMagento 小写所有产品标题
【发布时间】:2014-01-07 11:09:32
【问题描述】:

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

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

有谁知道,我怎样才能正确地做到这一点?

【问题讨论】:

  • 小写还是驼峰?在网站上还是在数据库中?为什么你认为你会制动 DB?
  • 如果你害怕损坏数据库,那么:做一个备份,看看你是否可以从备份中恢复,然后在数据库中做你的更改。如果有什么爆炸——你有一个备份(你知道它有效)>

标签: php magento magento-1.8


【解决方案1】:

最好的方法(在我看来)是重写目录/产品模型并添加一个方法

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

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

【讨论】:

  • 脚本正在运行,谢谢!是否还有驼峰式解决方案?
【解决方案2】:

要更改所有产品名称(您所称的标题),您需要表 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
    }
}

【讨论】:

    【解决方案3】:

    您可以使用 strtolower(http://be2.php.net/strtolower) 或仅在 CSS 中使用 text-transform 属性(http://www.w3schools.com/cssref/pr_text_text-transform.asp)

    【讨论】:

      【解决方案4】:

      您可以运行此查询来更改产品标题的大小写。请备份Databse并确保entity_type_id和attribute_id值

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

      我已经对此进行了测试。它对我来说工作正常。

      【讨论】:

        【解决方案5】:

        如果要更正数据,请在 db 中进行更正。无论如何,拥有适当的开发环境和最新的备份是必须的,因此无需担心任何事情。

        但是,如果您只想在保持数据不变的情况下修复外观,请考虑使用 CSS 小写/驼峰式标题。

        【讨论】:

          【解决方案6】:

          您还可以在前端 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>
          

          【讨论】:

            【解决方案7】:

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

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

            所以,假设产品标题是:

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

            对于所有小写,只需添加:

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

            或者您可以将每个首字母大写:

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

            【讨论】:

              猜你喜欢
              • 2012-02-11
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多