2014-07-27 18 views
1

我的工作正在进行中,Magento网站因此决定重新从头开始。我想我已经制作了所有我会在全新安装中重新添加的副本,但我忘记了几个静态块。从备份中恢复Magento静态块内容?

我重新创建了静态块,但是想知道我向静态块中添加的内容(HTML &文本)是否可以从我重新安装之前获取的文件系统备份中检索?

我已经看过整个文件系统,但似乎无法看到它将被存储在哪里。

我也有一个数据库备份,但不想恢复它,因为我有重新安装前的问题。

任何人都可以告诉我是否有可能从我的备份中检索静态块内容,如果有,如何/在哪里?

在此先感谢!

回答

1

是的,所有CMS页面和块内容都存储在数据库中,并且可以通过文本编辑器很容易地进行检索。我不得不这样做。

查看在phpMyAdmin下表,以获得结构和栏目内容的想法:

  • CMS块存储在cms_block
  • CMS页面存储在cms_page

显示代码如果在content列中找到两者,则可以在layout_update_xmlcustom_layout_update_xml列中找到CMS页面布局。

看看其他的列来决定你需要提取什么。

现在,使用7-ZIP,如果在Windows上,或本地命令行工具,解压缩数据库转储和使用编程文本编辑器,可以处理大量的文本文件一样TextPad来搜索您的内容。查找表名(在这种情况下,cms_block)。

将会有两个SQL代码段(类似于下面的示例),第一个构建cms_block表,第二个添加内容。

-- 
-- Table structure for table `cms_block` 
-- 

DROP TABLE IF EXISTS `cms_block`; 
/*!40101 SET @saved_cs_client  = @@character_set_client */; 
/*!40101 SET character_set_client = utf8 */; 
CREATE TABLE `cms_block` (
    `block_id` smallint(6) NOT NULL AUTO_INCREMENT, 
    `title` varchar(255) NOT NULL DEFAULT '', 
    `identifier` varchar(255) NOT NULL DEFAULT '', 
    `content` mediumtext, 
    `creation_time` datetime DEFAULT NULL, 
    `update_time` datetime DEFAULT NULL, 
    `is_active` tinyint(1) NOT NULL DEFAULT '1', 
    PRIMARY KEY (`block_id`) 
) ENGINE=InnoDB AUTO_INCREMENT=134 DEFAULT CHARSET=utf8 COMMENT='CMS Blocks'; 
/*!40101 SET character_set_client = @saved_cs_client */; 

-- 
-- Dumping data for table `cms_block` 
-- 

LOCK TABLES `cms_block` WRITE; 
/*!40000 ALTER TABLE `cms_block` DISABLE KEYS */; 
INSERT INTO `cms_block` VALUES (LongUglyContentStringHere); 
/*!40000 ALTER TABLE `cms_block` ENABLE KEYS */; 
UNLOCK TABLES; 

我们感兴趣的INSERT INTO cms_block VALUES线,这将是这么久,你的文本编辑器可能无法吸收它。剪下该行,将其粘贴到第二个文档中,打开文字换行并搜索identifier或块中的一些独特内容。该块中的记录由括号和逗号分隔(recordx),(recordy),(recordz)包围。

在示例中,我们要恢复price-match,这里是包含在括号中的记录:

(40,'Price Match','price-match','<!-- Price Match Offer Text for price-match submission form -->\r\n<h3>We Will Match or Beat Any Competitors Price</h3>\r\n<p>If you find a better price for an item from \r\nanother authorized dealer, We will do everything possible to match or beat that price. Price adjustments are applicable \r\nto identical items only. The item must be new and product lead times may vary. You will find the \"Price Match\" tab on each \r\nproduct page with a submission form for price adjustments.</p>','2012-01-27 06:11:04','2012-01-31 05:28:16',1) 

使用你从phpMyAdmin的收集什么为列的顺序和内容,以帮助恢复,但它基本上block_id, title, identifier, content和用单引号字符串边界和逗号分隔符括起来。

+0

非常感谢你这么详细的回答,你为我节省了几个小时的工作!我最终下载了一个excel插件,然后打开sql文件,然后发现有问题的块。 – treborb

+0

不客气!所有存储在数据库中的数据都可以以这种方式访问​​,甚至可以从古老的数据库备份中重新生成一个月的旧意外删除产品。你有一个Excel扩展名吗?听起来像是一个非常有用的工具。 –

+0

是的,它叫做SQL Drill :) – treborb