magento后台生成google sitemap

Magento生成sitemap.xml文件

sitemap.xml是大多数搜索引擎,如百度,雅虎,必应都支持的。通过相应的提交网址,将网站地图提交给搜索引擎,以帮助网站被尽快的收录

1>、首先进入后台catalog/google sitemap,添加一个新的sitemap;

filename文本框中输入文件名,如:sitemap.xml;

path是输入文件名的地址这里只需填“/”就可以了;

store view就是sitemap要生成的商店。

填写完之后点击”save&create”,如果是点击“save”将不会生成sitemap,所以这里要点击”save&create”,

可能新的版本中需要 generate就会在网站根目录生成sitemap.xml

然后进入前台输入“网址+sitemap.xml”,就会看到xml文件。

如安装Magento网站-安装演示数据

最近发现很多朋友在安装Magento的时候或多或许都有些困惑,这里我给大家写一些自己安装Magento-包含Magento演示数据的安装的过程

首先你得有个支持Magento运行的环境,php+mysql环境。可以使用一些集成包之类的 比如:xampp 、wampp、phpnow

个人一直用xampp。xampp具体配置可以参考Xampp配置Magento

环境配置好以后

一.

下载Magento开源程序代码,官网去下载吧-找稳定版本下载

下载Magento演示数据magento-sample-data-1.2.0,这份数据中包括magento_sample_data_for_1.2.0.sql、和一个Media文件;

二.

在你的xampp的htdocs中新建一个文件夹Magento拷贝刚下载的程序包,解压后内容直接放在Magento这个文件下,删除Media文件夹(整个删掉),

拷贝magento-sample-data-1.2.0中的Meida文件到网站根目录下(此时的网站根目录地址应该是 ../htdocs/Magento)

三.

打开你的phpmyadmin,(地址应该是http://127.0.0.1/phpmyadmin,如果你没设置密码,那默认的是 用户名:root   密码为空)

新建一个数据库,自己随意命名,比如Magento

四.

打开浏览器输入http://127.0.0.1/Magento

注意:http://127.0.0.1/Magento;用127.0.0.1代替localhost 有些Magento版本在localhost这个地址配置成功后台是登陆不了的

这一部的具体配置我就不详细说了,有困惑的地方可以给我留言。

记得:配置成功后登陆后台system->index management->select->refresh all 就是进到索引管理这一个选项,开始的时候索引都是红色的,所以我们

必须重新refresh下,都为绿色就表示正常。

这时候刷新你的前台,恭喜你演示数据安装成功了。

 

 

 

如果电脑不能上网 那我们能干点什么?

如果电脑不能上网 ,那我们还能干什么呢?折磨电脑————

如果电脑不能上网 我们能干点什么

请在一个新打开的word文档里面输入: =rand(200,99) 然后回车
> 看看会发生 什么? 据说,连比尔盖茨都不知道为什么会这样:
>
> 这是彩蛋程序,也就是程序开发人员放在程序里的小程序.一般都是很有趣的.
> office里还有很多彩蛋呢!
>
>
>
> 1.Word 97/2000
>
> 彩蛋内容:绕口令
>
> 开启方式:启动Word,新建一个空白文档,在文档中输入“=rand()”(不包括引
号),按回车键,看看会显示出什么?一个绝妙的绕口令!此外在Word中还隐藏着另
外一个彩蛋,我们启动Word并打开任一文件,同时按住Ctrl、Shift、Alt,这时候再
按下“?”,你发现了什么?问号都反过来啦!感叹号也可以实现这个功能,龙龙示范一
个给你看,哈哈,好玩吧!
>
> 2.Excel 2000
>
> 彩蛋内容:赛车游戏
>
> 开启方式:启动Excel 2000后,新建一个新文件,选择“文件→另存为Web页…”,
在“另存为”对话框中,选中“选择(E):工作表”和“添加交互”两项,然后点击“发布”,
出现“发布为Web页”对话框,再点击“发布”。OK,用IE打开刚才保存的HTM文件,我们
能在页面中央看到这个Excel工作表。在这个工作表中,先用PageDown键移动工作表的
矩形光标直至第2000行。然后用鼠标点击“2000”,使该行反相显示。用Tab键横向向右
移动光标直至WC列,这时该矩形光标呈白色显示。好,到此所有的准备工饕丫 ?
毕,该是调出游戏的时候了。同时按住Shift、Ctrl和Alt键,单击Excel工作簿左上角
的Office标志……硬盘狂响后一个全屏的赛车游戏开始了!
>
>
> 方向键用来控制汽车方向与快慢,空格键用来发子弹,按“H”键可以打开车灯,
按“F10”可以暂停,按“Esc”键退出。怎么样,够精彩吧!
>
>
> 各有各的秘密
>
>
> 1. Photoshop 6.0
>
> 彩蛋内容:一只可爱的大电猫
>
>
> 开启方式:启动Photoshop 6.0,然后按住“Ctrl+Alt”键,点击“Help”菜单中
的“About Photoshop…”,这时关于对话框中会出现一只可爱的大电猫。而如果你不按
住“Ctrl+Alt”,直接点击的话,其结果是不相同的。
>
> 2. WinAMP
>
> 彩蛋内容:设计者的头像
>
> 开启方式:启动Winamp,打开“关于”对话框,选择“Winamp”标签,同时按住Alt
和Shift,然后用鼠标双击“Copyright_1997-1999 Nullsoft,Inc”这行文字,你就会
看到Winamp的设计者JustinFrankel的头像在上方飘动了。再一次双击,飘动的照片又
变成了原来的卡通画。
>
> 3. Flash 5.0
>
> 彩蛋内容:捡金子游戏
>
>
> 开启方式:启动Flash 5.0,点击“Help”菜单中的“About Flash”,在动画停止
之前双击右下角Macromedia的Logo中的“M”字母,然后点击“Thank”,这时“关于”窗口
会变成一个名为“Gold Rush”的小游戏。
>
> 4.mIRC
>
> 彩蛋内容:作者照片变为鳄鱼照片
>
> 开启方式:选择“Help”菜单中的“About”命令,然后从键盘上键入“arnie”,此
时你会发现原来的“About mIRC”窗口右上方作者的照片现在变成一张鳄鱼的照片了。
再输入一次“arnie”,就又变回作者的照片了。
>
> 5. Nero Burning Rom 5.0
>
> 彩蛋内容:跳舞的小蛇
>
> 开启方式:启动Nero Burning Rom 5.0,点击“Help”菜单中的“About…”,然后
双击关于窗口中间下方的两个燃烧的光盘,这时一条跳舞的小蛇将出现在窗口的底
部。
>
> 6. WinRAR 3.X
>
> 彩蛋内容:菜单中的海水涨潮
>
>
> 开启方式:启动WinRAR后点击“Help”菜单中的“About WinRAR”,当鼠标移动到
关于窗口顶端的海景图片时,你就会发现原本静止的海水开始涨潮了!而一旦你点击
鼠标,海水将回复到静止状态,再点击,再涨潮。是不是很有意思?另外你再单击左
上角的书本图标,那一摞书本是不是开始下落了?落到底后还会反弹,仔细听听还有
声音呢!

Magento批量导入产品-多图 自动导入分类 客户定制

Magento批量导入产品-多图 自动导入分类 客户定制(Size等)

很多朋友在实现批量导入产品:尤其是批量图片的时候都会出现错误,这些问题网络也有很多解释,我就不在啰嗦;
今天我要实现的主要是:解决一个产品上传多张小图、产品的customer option(就是我们经常用到的size等等)

步骤:
app\code\core\Mage\Catalog\Model\Convert\Adapter下的Product.php 先备份一份
然后用以下内容替换
<?php
/**
* Import Multiple Images during Product Import
* Copyright ?2010 Web Design by Capacity Web Solutions Pvt. Ltd. All Rights Reserved.
* http://www.capacitywebsolutions.com
*/

class CapacityWebSolutions_ImportProduct_Model_Convert_Adapter_Product extends Mage_Catalog_Model_Convert_Adapter_Product
{
/**
* Save product (import)
*
* @param array $importData
* @throws Mage_Core_Exception
* @return bool
*/
protected $custom_options = array();

public function saveRow(array $importData)
{
$product = $this->getProductModel()
->reset();

if (empty($importData[‘store’])) {
if (!is_null($this->getBatchParams(‘store’))) {
$store = $this->getStoreById($this->getBatchParams(‘store’));
} else {
$message = Mage::helper(‘catalog’)->__(‘Skip import row, required field “%s” not defined’, ‘store’);
Mage::throwException($message);
}
}
else {
$store = $this->getStoreByCode($importData[‘store’]);
}

if ($store === false) {
$message = Mage::helper(‘catalog’)->__(‘Skip import row, store “%s” field not exists’, $importData[‘store’]);
Mage::throwException($message);
}

if (empty($importData[‘sku’])) {
$message = Mage::helper(‘catalog’)->__(‘Skip import row, required field “%s” not defined’, ‘sku’);
Mage::throwException($message);
}
$product->setStoreId($store->getId());
$productId = $product->getIdBySku($importData[‘sku’]);

if ($productId) {
$product->load($productId);
}
else {
$productTypes = $this->getProductTypes();
$productAttributeSets = $this->getProductAttributeSets();

/**
* Check product define type
*/
if (empty($importData[‘type’]) || !isset($productTypes[strtolower($importData[‘type’])])) {
$value = isset($importData[‘type’]) ? $importData[‘type’] : ”;
$message = Mage::helper(‘catalog’)->__(‘Skip import row, is not valid value “%s” for field “%s”‘, $value, ‘type’);
Mage::throwException($message);
}
$product->setTypeId($productTypes[strtolower($importData[‘type’])]);
/**
* Check product define attribute set
*/
if (empty($importData[‘attribute_set’]) || !isset($productAttributeSets[$importData[‘attribute_set’]])) {
/*$value = isset($importData[‘attribute_set’]) ? $importData[‘attribute_set’] : ”;
$message = Mage::helper(‘catalog’)->__(‘Skip import row, is not valid value “%s” for field “%s”‘, $value, ‘attribute_set’);
Mage::throwException($message);*/
}
$product->setAttributeSetId($productAttributeSets[$importData[‘attribute_set’]]);

foreach ($this->_requiredFields as $field) {
$attribute = $this->getAttribute($field);
if (!isset($importData[$field]) && $attribute && $attribute->getIsRequired()) {
$message = Mage::helper(‘catalog’)->__(‘Skip import row, required field “%s” for new products not defined’, $field);
Mage::throwException($message);
}
}
}

$this->setProductTypeInstance($product);

if (isset($importData[‘category_ids’])) {
$product->setCategoryIds($importData[‘category_ids’]);
}
/*    if category name is in csv file        */
if (isset($importData[‘categories’])) {

$categoryIds = $this->_addCategories($importData[‘categories’], $store);
if ($categoryIds) {
$product->setCategoryIds($categoryIds);
}
}
foreach ($this->_ignoreFields as $field) {
if (isset($importData[$field])) {
unset($importData[$field]);
}
}

if ($store->getId() != 0) {
$websiteIds = $product->getWebsiteIds();
if (!is_array($websiteIds)) {
$websiteIds = array();
}
if (!in_array($store->getWebsiteId(), $websiteIds)) {
$websiteIds[] = $store->getWebsiteId();
}
$product->setWebsiteIds($websiteIds);
}

if (isset($importData[‘websites’])) {
$websiteIds = $product->getWebsiteIds();
if (!is_array($websiteIds)) {
$websiteIds = array();
}
$websiteCodes = explode(‘,’, $importData[‘websites’]);
foreach ($websiteCodes as $websiteCode) {
try {
$website = Mage::app()->getWebsite(trim($websiteCode));
if (!in_array($website->getId(), $websiteIds)) {
$websiteIds[] = $website->getId();
}
}
catch (Exception $e) {}
}
$product->setWebsiteIds($websiteIds);
unset($websiteIds);
}

foreach ($importData as $field => $value) {
if (in_array($field, $this->_inventoryFields)) {
continue;
}
if (in_array($field, $this->_imageFields)) {
continue;
}
$attribute = $this->getAttribute($field);
if (!$attribute) {

if(strpos($field,’:’)!==FALSE && strlen($value)) {
$values=explode(‘|’,$value);
if(count($values)>0) {
@list($title,$type,$is_required,$sort_order) = explode(‘:’,$field);
$title = ucfirst(str_replace(‘_’,’ ‘,$title));
$custom_options[] = array(
‘is_delete’=>0,
‘title’=>$title,
‘previous_group’=>”,
‘previous_type’=>”,
‘type’=>$type,
‘is_require’=>$is_required,
‘sort_order’=>$sort_order,
‘values’=>array()
);
foreach($values as $v) {
$parts = explode(‘:’,$v);
$title = $parts[0];
if(count($parts)>1) {
$price_type = $parts[1];
} else {
$price_type = ‘fixed’;
}
if(count($parts)>2) {
$price = $parts[2];
} else {
$price =0;
}
if(count($parts)>3) {
$sku = $parts[3];
} else {
$sku=”;
}
if(count($parts)>4) {
$sort_order = $parts[4];
} else {
$sort_order = 0;
}
switch($type) {
case ‘file’:
/* TODO */
break;

case ‘field’:
case ‘area’:
$custom_options[count($custom_options) – 1][‘max_characters’] = $sort_order;
/* NO BREAK */

case ‘date’:
case ‘date_time’:
case ‘time’:
$custom_options[count($custom_options) – 1][‘price_type’] = $price_type;
$custom_options[count($custom_options) – 1][‘price’] = $price;
$custom_options[count($custom_options) – 1][‘sku’] = $sku;
break;

case ‘drop_down’:
case ‘radio’:
case ‘checkbox’:
case ‘multiple’:
default:
$custom_options[count($custom_options) – 1][‘values’][]=array(
‘is_delete’=>0,
‘title’=>$title,
‘option_type_id’=>-1,
‘price_type’=>$price_type,
‘price’=>$price,
‘sku’=>$sku,
‘sort_order’=>$sort_order,
);
break;
}
}
}
}

continue;
}

$isArray = false;
$setValue = $value;

if ($attribute->getFrontendInput() == ‘multiselect’) {
$value = explode(self::MULTI_DELIMITER, $value);
$isArray = true;
$setValue = array();
}

if ($value && $attribute->getBackendType() == ‘decimal’) {
$setValue = $this->getNumber($value);
}

if ($attribute->usesSource()) {
$options = $attribute->getSource()->getAllOptions(false);

if ($isArray) {
foreach ($options as $item) {
if (in_array($item[‘label’], $value)) {
$setValue[] = $item[‘value’];
}
}
}
else {
$setValue = null;
foreach ($options as $item) {
if ($item[‘label’] == $value) {
$setValue = $item[‘value’];
}
}
}
}

$product->setData($field, $setValue);
}

if (!$product->getVisibility()) {
$product->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE);
}

$stockData = array();
$inventoryFields = isset($this->_inventoryFieldsProductTypes[$product->getTypeId()])
? $this->_inventoryFieldsProductTypes[$product->getTypeId()]
: array();
foreach ($inventoryFields as $field) {
if (isset($importData[$field])) {
if (in_array($field, $this->_toNumber)) {
$stockData[$field] = $this->getNumber($importData[$field]);
}
else {
$stockData[$field] = $importData[$field];
}
}
}
$product->setStockData($stockData);

$imageData = array();
foreach ($this->_imageFields as $field) {
if (!empty($importData[$field]) && $importData[$field] != ‘no_selection’) {
if (!isset($imageData[$importData[$field]])) {
$imageData[$importData[$field]] = array();
}
$imageData[$importData[$field]][] = $field;
}
}

foreach ($imageData as $file => $fields) {
try {
$product->addImageToMediaGallery(Mage::getBaseDir(‘media’) . DS . ‘import’ . $file, $fields);
}
catch (Exception $e) {}
}

/**
* Allows you to import multiple images for each product.
* Simply add a ‘gallery’ column to the import file, and separate
* each image with a semi-colon.
*/
try {
$galleryData = explode(‘;’,$importData[“gallery”]);
foreach($galleryData as $gallery_img)
/**
* @param directory where import image resides
* @param leave ‘null’ so that it isn’t imported as thumbnail, base, or small
* @param false = the image is copied, not moved from the import directory to it’s new location
* @param false = not excluded from the front end gallery
*/
{
$product->addImageToMediaGallery(Mage::getBaseDir(‘media’) . DS . ‘import’ . $gallery_img, null, false, false);
}
}
catch (Exception $e) {}
/* End Modification */

$product->setIsMassupdate(true);
$product->setExcludeUrlRewrite(true);

$product->save();
/* Add the custom options specified in the CSV import file     */

if(isset($custom_options)){
if(count($custom_options)) {
foreach($custom_options as $option) {
try {
$opt = Mage::getModel(‘catalog/product_option’);
$opt->setProduct($product);
$opt->addOption($option);
$opt->saveOptions();
}
catch (Exception $e) {}
}
}
}
return true;
}

protected $_categoryCache = array();
/*    Add category and sub category.     */
protected function _addCategories($categories, $store)
{

$rootId = $store->getRootCategoryId();

if (!$rootId) {
/* If stoder not create that mense admin then assign 1 to storeId */
$storeId = 1;
$rootId = Mage::app()->getStore($storeId)->getRootCategoryId();

}

if($categories==””)
return array();
$rootPath = ‘1/’.$rootId;
if (empty($this->_categoryCache[$store->getId()])) {
$collection = Mage::getModel(‘catalog/category’)->getCollection()
->setStore($store)
->addAttributeToSelect(‘name’);
$collection->getSelect()->where(“path like ‘”.$rootPath.”/%'”);

foreach ($collection as $cat) {
$pathArr = explode(‘/’, $cat->getPath());
$namePath = ”;
for ($i=2, $l=sizeof($pathArr); $i<$l; $i++) {
$name = $collection->getItemById($pathArr[$i])->getName();
$namePath .= (empty($namePath) ? ” : ‘/’).trim($name);
}
$cat->setNamePath($namePath);
}

$cache = array();
foreach ($collection as $cat) {
$cache[strtolower($cat->getNamePath())] = $cat;
$cat->unsNamePath();
}
$this->_categoryCache[$store->getId()] = $cache;
}
$cache =& $this->_categoryCache[$store->getId()];

$catIds = array();
foreach (explode(‘,’, $categories) as $categoryPathStr) {
$categoryPathStr = preg_replace(‘#\s*/\s*#’, ‘/’, trim($categoryPathStr));
if (!empty($cache[$categoryPathStr])) {
$catIds[] = $cache[$categoryPathStr]->getId();
continue;
}
$path = $rootPath;
$namePath = ”;
foreach (explode(‘/’, $categoryPathStr) as $catName) {
$namePath .= (empty($namePath) ? ” : ‘/’).strtolower($catName);
if (empty($cache[$namePath])) {
$cat = Mage::getModel(‘catalog/category’)
->setStoreId($store->getId())
->setPath($path)
->setName($catName)
->setIsActive(1)
->save();
$cache[$namePath] = $cat;
}
$catId = $cache[$namePath]->getId();
$path .= ‘/’.$catId;
}
if ($catId) {
$catIds[] = $catId;
}
}
return join(‘,’, $catIds);
}

}

导入CSV前做的工作:将所有要导入的图片上传到Magento网站根目录下的“media/import”文件夹中,注意命名

另外这里有一份导入参考样本

store    websites    attribute_set    categories    type    sku    name    price    description    short_description    image    small_image    thumbnail    weight    has_options    is_in_stock    qty    disabled    status    options_container    tax_class_id    Size:drop_down:1    visibility    gallery

admin,base,Default,test/test,simple,test-01,test,99,Test Product description for default store,Test Product,/test.jpg,/test.jpg,/test.jpg,1,1,1,1000,No,Enabled,Block after Info Column,Taxable Goods,XS|S|M|L|XL,”Catalog, Search”,/test_01.jpg;/test_02.jpg

希望对各位有用,有疑问的地方可以联系我