2014-02-12 8 views
1

В настоящее время у меня есть магазин с SKU, включенным в название продукта, теперь я хочу удалить это из названия продукта, но как мне это сделать?Magento продукт: удалить SKU от названия продукта

Я нашел эти запросы, чтобы указать название продукта и sku, но как я могу использовать TRIM (REPLACE (product_name, SKU, '')) с этими? Или есть лучший способ, чем запустить mysql-запросы в phpmyadmin?

SELECT `value` AS product_name 
FROM catalog_product_entity_varchar 
WHERE entity_type_id = (SELECT entity_type_id FROM eav_entity_type WHERE entity_type_code = 'catalog_product') 
AND attribute_id = (SELECT attribute_id FROM eav_attribute WHERE attribute_code = 'name' AND entity_type_id = (SELECT entity_type_id FROM eav_entity_type WHERE entity_type_code = 'catalog_product')) 

И

SELECT `sku` FROM `catalog_product_entity` 

Спасибо

ответ

1

попробовать это для фильтрации по магазину ид, заменить идентификатор магазина в your_store_id с магазине вы хотите

<?php 

require_once dirname(__FILE__) . '/app/Mage.php'; 
Mage::app(); 

$products = Mage::getModel('catalog/product')->getCollection()->->addAttributeToFilter('store_id',"your_store_id") 
       ->addAttributeToSelect(array('name', 'sku')); 

foreach ($products as $product) { 

echo "old name".$product->getName(); 
    $product->setName(str_replace($product->getSku(), '', $product->getName()))->save(); 
echo "new name".$product->getName(); 
} 
+0

Изменено на: [code] setCurrentStore (2); $ products = Mage :: getModel ('catalog/product') -> getCollection() -> addAttributeToSelect (массив ('name', 'sku')); $ i = 1; foreach ($ products as $ product) { echo '


'; echo "$ i old name:". $ Product-> getName(). '
'; $ product-> setName (trim (str_replace ($ product-> getSku(), '', $ product-> getName()))) -> save(); echo 'New:' .str_replace ($ product-> getSku(), '', $ product-> getName()). '
'; $ i ++; } [/ code] – user1717483

0

Я думаю, может быть, вы можете написать некоторые PHP-код на сервере, чтобы сделать это, сначала нужно получить всю коллекцию продуктов, то для каждого продукта, получить продукт имя, замените SKU на '', затем установите имя продукта и сохраните.

1
<?php 

require_once dirname(__FILE__) . '/app/Mage.php'; 
Mage::app(); 

$products = Mage::getModel('catalog/product')->getCollection() 
       ->addAttributeToSelect(array('name', 'sku')); 

foreach ($products as $product) { 
    $product->setName(str_replace($product->getSku(), '', $product->getName()))->save(); 
} 

Сохраните это в своей папке public_html и запустите его, посетив URL-адрес. Если он работает успешно, страница должна заканчиваться загрузкой и быть пустой. Это может занять немного, если ваш каталог значительно большой.

+0

Спасибо! Это то, что я ищу. Также спасибо Рохиту Голу. Что, на ваш взгляд, лучший способ освоить Magento? – user1717483

+0

Извините, еще один вопрос: у меня установлено 2 языка (2 вида магазина), как мне работать с этим скриптом? – user1717483

1

вы также можете увидеть его priniting старое и новое имя в цикле

<?php 

require_once dirname(__FILE__) . '/app/Mage.php'; 
Mage::app(); 

$products = Mage::getModel('catalog/product')->getCollection() 
       ->addAttributeToSelect(array('name', 'sku')); 

foreach ($products as $product) { 

echo "old name".$product->getName(); 
    $product->setName(str_replace($product->getSku(), '', $product->getName()))->save(); 
echo "new name".$product->getName(); 
} 
Смежные вопросы