2013-04-05 39 views
0

我使用Joomla 2.5的網站,但主頁是一個外部的PHP頁面,我需要從特定的joomla文章和菜單項獲取數據。Joomla 2.5數據檢索在外部的PHP頁面

  1. 什麼是最好的方式去調用模塊或連接到數據庫來檢索我需要什麼?
  2. 我該如何調用Joomla類,函數等來獲得我的結果?

我已經嘗試過:

這個職位(Joomla Menu In External Page),這表明有關錯誤的會話中已經開始的「模塊」的解決方案。

進行數據檢索的某些代碼:

define('_JEXEC', 1); 
define('JPATH_BASE', dirname(__FILE__).'/../../Joomla_2.5.9'); // should point to joomla root 
require_once (JPATH_BASE .'/includes/defines.php'); 
require_once (JPATH_BASE .'/includes/framework.php'); 
require_once (JPATH_BASE .'/libraries/joomla/factory.php'); 

$db = JFactory::getDBO(); 
$query = $db->getQuery(true); 
$query->select('introtext') 
->from('#__content') 
->where('id = 1'); 
$db->setQuery($query); 

$fullArticle = $db->loadResult(); 

echo $fullArticle; 

這段代碼的偉大工程,從一個特定的文章獲取文章全文。當然,這不是那麼有用,因爲我想要解決類別和多語言內容。

我會添加任何結果以更好的方式解決問題。任何進一步的想法肯定會有幫助

+1

爲什麼你的主頁是外部的?如果你需要在其上顯示文章,模塊等,爲什麼你不能在Joomla內創建它? – 2013-04-05 12:59:02

+0

我使用一個視差主頁,我需要加載某些文章,例如。公司。在joomla內部進行類似的事情真的很難。 – nkou 2013-04-05 13:13:42

+0

那麼,我發現一些涵蓋了另一個問題的數據檢索。對於那些感興趣的,你可以在這裏查看:http://stackoverflow.com/questions/15042262/access-joomla-2-5-from-external-script-to-get-article-by-id – nkou 2013-04-05 13:15:27

回答

2

您需要初始化的Joomla應用:

$joomlaPath = dirname(__FILE__).'/../../Joomla_2.5.9'; 
define('_JEXEC', 1); 
define('DS', DIRECTORY_SEPARATOR); 

if (file_exists($joomlaPath . '/defines.php')) { 
    include_once $joomlaPath . '/defines.php'; 
} 

if (!defined('_JDEFINES')) { 
    define('JPATH_BASE', $joomlaPath); 
    require_once JPATH_BASE.'/includes/defines.php'; 
} 

require_once JPATH_BASE.'/includes/framework.php'; 

// Instantiate the application. 
$app = JFactory::getApplication('site'); 

// Initialise the application. 
$app->initialise(); 

首先,你可以訪問配置的Joomla環境。

+0

使用我獲取: 警告:session_start()[function.session-start]:無法發送會話cookie - 已在/public_html/Joomla_2.5.9中發送的(通過/public_html/demo/irven/nkou_test.php:9開始的輸出) /libraries/joomla/session/session.php on line 532 那麼,這就是我解決模塊解決方案代碼的問題。我很確定這個警告是由於我已經訪問過joomla網站並且瀏覽器中的會話已經開始而引起的。 – nkou 2013-04-05 13:36:18

+0

你使用Joomla以外的會話嗎? – nibra 2013-04-05 13:43:33

+0

我在Joomla內部使用Virtuemart,所以我需要在整個導航過程中保持用戶數據... – nkou 2013-04-05 13:52:41

1

Nibra! 你的代碼非常類似地雷:

<?php 
define('_JEXEC', 1); 
define('JPATH_BASE', '/home/user7633/public_html/cms'); 
define('DS', '/'); 
require_once (JPATH_BASE .DS.'includes'.DS.'defines.php'); 
require_once (JPATH_BASE .DS.'includes'.DS.'framework.php'); 
JFactory::getApplication('site')->initialise(); 
$user = JFactory::getUser(); 
echo $user->username; 
?> 

通過這種方式完成的代碼做工作!

我在PHP 5.4.36上使用Joomal 3.4.1,代碼只是偶爾工作。有時用戶名是空的,有時它是例外。我登錄了!

我從「外部URL」菜單項調用PHP文件。

+0

這個問題的答案是? – 2015-05-15 10:38:09

+0

是的,它是一個回答/評論,以避免Nibra推薦的代碼。不要爲這種解決方案耗費時間。 – Tickseeker 2015-05-15 10:39:05

+0

我想發表評論,但系統不允許我這樣做。 – Tickseeker 2015-05-15 10:39:49