Magento удалить и синхронизировать базовые элементы Google по сценарию в magento - PullRequest
1 голос
/ 26 февраля 2011

Я использую magento 1.3.2.4, и моя проблема в том, что синхронизация и удаление базовых элементов Google по одному занимает много времени с помощью панели управления.

Итак, я хочу знать, как создать скрипт, который я могу использовать в командной строке, который синхронизирует и удаляет все элементы, перечисленные в базе Google в magento. Мне тоже нужно иметь возможность перепроверять предметы.

Ответы [ 2 ]

1 голос
/ 24 марта 2011

Надеюсь, информация ниже будет полезна для вас:http://www.magentocommerce.com/boards/viewreply/63666/

0 голосов
/ 27 февраля 2012

Это тот же сценарий, который отмечен в ответе @anunays, но с некоторыми изменениями, которые я сделал ранее сегодня, чтобы он работал на 1.4.x, а также включал некоторые обязательные атрибуты Google Merchant Center.

Iпросто установите условие «новый» и доступность «на складе», как исходный сценарий отфильтрован по активным, видимым продуктам.

#!/usr/bin/env php-5.3
<?php
/**
 * Generate a google base feed for google product search
 *
 * The core magento backend Gbase functionality was not working for me, and it
 * is oft maligned (at least in 1.4x and before) in the Mage community
 */
require_once 'app/Mage.php';
Mage::App('default');
define('GOOGLE_BASE_FEED_TXT', MY_URL . 'var/export/google_base_feed.txt');

class Generate_Google_Base_Feed_Txt
{
    public function __construct() {
        $this->handle = fopen(GOOGLE_BASE_FEED_TXT, 'w');
    }

    public function build() {
        $heading   = array(
            'id',
            'title',
            'description',
            'link',
            'image_link',
            'price',
            'brand',
            'product_type',
            'condition',
            'availability',
        );
        $feed_line = implode("\t", $heading) . "\r\n";
        fwrite($this->handle, $feed_line);

        $products = Mage::getModel('catalog/product')->getCollection();
        $products->addAttributeToSelect('*');
        $products->addAttributeToFilter('status', 1);
        $products->addAttributeToFilter('visibility', 4);
        $products->addAttributeToFilter(array(
            array('attribute'=>'manufacturer', 'notnull' => TRUE),
        ));
        $products->addAttributeToFilter(array(
            array('attribute'=>'name', 'notnull' => TRUE),
        ));
        $products->addAttributeToFilter(array(
            array('attribute'=>'image', 'notnull' => TRUE),
        ));
        $products->addAttributeToFilter(array(
            array('attribute'=>'url_key', 'notnull' => TRUE),
        ));

        foreach ($products as $product) {
            $product_data                 = array();
            $product_data['sku']          = $product->getSku();
            $product_data['title']        = $product->getName();
            $product_data['description']  = $product->getDescription();
            $product_data['link']         = MY_URL . $product->getUrlKey() . '.html';
            $product_data['image_link']   = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA) . 'catalog/product' . $product->getImage();
            $product_data['price']        = $product->getPrice();
            $product_data['brand']        = $product->getResource()->getAttribute('manufacturer')->getFrontend()->getValue($product);
            $product_data['product_type'] = '';
            $product_data['condition']    = 'new';
            /* availability: required ("in stock", "out of stock", "preorder", "available for order") */
            // currently, we only use in-stock but in the future we should include everything and just set out-of-stock as such
            $product_data['availability'] = 'in stock';

            foreach ($product->getCategoryIds() as $_categoryId) {
                $category = Mage::getModel('catalog/category')->load($_categoryId);
                // append categories
                $product_data['product_type'] .= $category->getName() . ', ';
            }
            $product_data['product_type'] = rtrim($product_data['product_type'], ', ');

            // sanitize data
            foreach ($product_data as $k => $val) {
                $bad              = array('"', "\r\n", "\n", "\r", "\t");
                $good             = array("", " ", " ", " ", "");
                $product_data[$k] = '"' . str_replace($bad, $good, $val) . '"';
            }

            $feed_line = implode("\t", $product_data) . "\r\n";
            fwrite($this->handle, $feed_line);
            fflush($this->handle);
        }
        fclose($this->handle);
    }
}

// test it, yo
$base_feed_txt = new Generate_Google_Base_Feed_Txt;
$base_feed_txt->build();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...