問題描述
我正在尋找在 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="http://'.%20$eventItem['Link']%20.'">'. $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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。