从备份中恢复Magento Static Block内容?

时间:2014-07-27 12:29:43

标签: mysql xml magento php

我的工作进展中存在重大问题Magento网站因此决定从头开始。我以为我会在全新安装中复制我要重新添加的所有内容,但我忘记了几个静态块。

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

我已查看过文件系统,但似乎无法查看存储位置。

我还有一个数据库备份,但由于重新安装之前遇到的问题,我不想恢复它。

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

提前致谢!

1 个答案:

答案 0 :(得分:1)

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

在phpMyAdmin中查看以下表格,了解结构和列内容:

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

content列中找到了两者的显示代码,CMS页面布局位于layout_update_xmlcustom_layout_update_xml列中。

查看其他列以确定您需要提取的其他内容。

现在,在Windows上使用7-zip if或本机命令行工具,解压缩数据库转储并使用可以处理大型文本文件(如 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并且用括号括起来,带有单引号字符串边界和逗号分隔符。