问题描述
我正在寻找在 Magento 内部集成 WordPress 的最佳方法。
首先我想让 WordPress 使用 Magento 的页眉和页脚。
第二,我希望用户可以同时在 Magento 和 WordPress 上进行搜索。不要卡住不得不搜索输入。
最佳解决方案
这取决于。你有选择:
-
使用专门的模块,如 Fishpig 的模块 http://www.magentocommerce.com/magento-connect/wordpress-integration.html
-
使用 JSONP 来加载页眉和页脚
如果您使用 Fishpig 模块 (这是一个很好的模块),您可以使用 http://www.magentocommerce.com/magento-connect/mage-wordpress-integrated-search-4394.html
最新的解决方案是开发您自己的 WordPress 集成 Magento 🙂
次佳解决方案
我已经在一些网站上使用了 Fishpig 模块,已经购买了付费的插件,并且已经高兴地推广了这么多年了。但是,我不再使用它了。它做的很好,但它做的是通过 Magento 运行一切。
让我们来看看,客户可以看一下 WordPress 的网站,突然开始变得有创意。 「我们可以在 Wordpress 中做到这一点!」,「我们可以在 Wordpress 安装!你必须继续向他们解释,通常这是很容易在 Wordpress …. 但是他们的 WordPress 安装是不正常的,因为它都是通过 Magento 本身,并改变一切。
所以您的银行定制 Wordpress 小工具将无法正常工作,第三方 Wordpress 插件将无法正常工作。主题和主题选项将无法正常工作。除非你做一些工作转换并将它们吸收到 Fishpig 模块中。
在我看来,一个更好的方法是走 James Kemp(http://wordpress.org/plugins/magento-wordpress-integration/) 或 Richard Feraro(http://wordpress.org/plugins/mage-enabler/) 的路。他们都采取相同的方法,允许您从 Wordpress 访问 Mage 对象,并将您想要的任何 Magento 拉入 Wordpress 主题。如果你看看插件,它们很简单,不需要太多的代码。
他们都需要修改 app/code/local/Mage/Core/functions.php
,因为 Wordpress 和 Magento 均声明了 function __()
方法。有关这两个插件作者网站的详细说明,这很容易。之后,你可能会陷入困境。
这很简单,这里有一个使用 James Kemp 插件的例子。你可以用一个 header.php
的 WordPress 主题,
<!DOCTYPE html>
<html class="no-js">
<head>
<?php the_block("head"); ?>
<?php wp_head(); ?>
</head>
<body <?php body_class(); ?>>
这将您的整个 Magento 头块拉入 Wordpress 标题。完美,没有重复,没有额外的工作。注意我添加了 wp_head()
,因为如果你添加 Wordpress 插件,他们可能会使用它作为一个钩子,这是很好的做法,在您的 Wordpress header.php
文件。
对于 footer.php 也是如此
<?php the_block("footer"); ?>
<?php wp_footer(); ?>
</body>
</html>
还有你的 Magento 页脚块在 Wordpress 。其余的取决于你,但你可以自由地添加任何额外的东西到您的 Wordpress 安装,你喜欢没有任何限制。
编辑 – 5 月 14 日
自从我写了这个我也开始使用 Wordpress 作为 CMS,并使用这个 Wordpress 插件将数据拉回到 Magento – JSON API 插件 http://wordpress.org/plugins/json-api/
为了给你一个代码示例 – 下面的代码为 Wordpress 中的必要条目提供了一个称为事件的自定义帖子类型,在这些名为 eventdate 的帖子中访问一个自定义字段,将它们全部放在数组中,按日期排序并输出所有的列表事件与 WordPress 安装中的每个事件页面的链接。我在 Magento 网站的主导航中使用了它,它的工作原理非常好。 WordPress 是将 JSON API 添加到核心,但至今尚未发布。
<ul>
<?php
$events = json_decode(file_get_contents('http://www.example.com/blog/?json=get_posts&post_type=event'));
$eventList = array();
foreach ( $events->posts as $event_item ) :
$arrayDate = date("ymdHi", strtotime($event_item->custom_fields->eventdate[0] ));
$eventList[$arrayDate]['Title'] = $event_item->title;
$eventList[$arrayDate]['Date'] = date('l jS F', strtotime($event_item->custom_fields->eventdate[0] ));
$eventList[$arrayDate]['Link'] = $event_item->url;
endforeach;
// Key reverse sort to get events in date order
ksort($eventList);
foreach ($eventList as $eventItem) :
echo '<li><a href="'. $eventItem['Link'] .'">'. $eventItem['Title'] .' - '. $eventItem['Date'] .'</a></li>';
endforeach;
?>
</ul>
编辑 – 10 月 15 日
我最近不得不尝试使用这种集成方法在多商店使用与 Matthias Zeis 这个问题相同的国家代码子目录;
Different storeviews or websites in subfolders
我确实考虑为此而尝试使用 Fishpig multistore 扩展,但是最后我问了一个关于 SO 的问题 – > https://stackoverflow.com/questions/32613815/htaccess-wordpress-under-magento-site-with-multi-language-sub-directories
我把答案放在那里,它使用服务器环境变量和一些 Wordpress 过滤器。我也添加了.htaccess 和 Nginx 服务器块来帮助。
此外,对于任何使用 Capistrano 部署 Magento 网站的人员,以及不断更新的 Wordpress 核心和插件污染他们的回购的前景,我写了一篇博客文章,显示如何将所有内容全部移动到 Capistrano 3 的共享目录中,只有你的 WordPress 主题在回购;
http://www.mcnab.co/blog/wordpress-git-and-capistrano-v3/
第三种解决方案
Fishpig 的 WordPress 集成扩展。它是免费的,工作良好,整合的主题。不整合搜索。但它是我们所知道的最好的集成方法。
第四种方案
也可以使用 wordgento:http://wordpress.org/plugins/tristar-wordgento/
我已经把它用于我的博客,工作得很好。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。