2012-12-06 69 views
1

如何檢查消息隊列中是否有消息?例如,我怎麼能做這樣的事情:如何檢查joomla 2.5的消息隊列中是否有消息?

<script type="text/javascript"> 
    var message='<jdoc:include type="message" />' 
     if(message!="") 
      { 
      alert(message); 
      } 
</script> 

我使用joomla 2.5。 謝謝

+0

你給出的JS作爲例子看起來像是在模板中工作,所以,我不清楚你在這裏問什麼... – Craig

+0

沒有它沒有工作 – themis

+0

好的,所以幫助我這裏有一些線索... PHP錯誤? Javascript錯誤?發生什麼事? – Craig

回答

6

所以,這個問題真的需要剝離從message變量的HTML。幾件事要注意:

  1. Joomla!可能會返回多條消息。
  2. 警報是瀏覽器的阻止事件...你真的想這麼做嗎?

首先,您可以通過使用一些基本的PHP將消息放置在JSON塊中。

<?php 
    $jAp = JFactory::getApplication(); 
    $messagesJSON = json_encode($jAp->getMessageQueue()); 
?> 

然後在你的模板後,你可以JSON陣列echo郵件到你的Javascript類似於您最初的嘗試。

<script type="text/javascript"> 
    var messageJSON = <?php echo $messagesJSON; ?> 
    ... then loop through the JSON block 

這樣你最終只得到消息的文本和類型,而不是當前樣式/覆蓋的特定格式。

+0

thanx @cppl它的工作原理。 – themis

2

我無法理解你的問題,但你可以得到味精隊列這樣

$mainframe= JFactory::getApplication(); 
    $messages = $mainframe->getMessageQueue(); 
    if (is_array($messages)) { 
     echo '<ul id="system-messages">'; 
     foreach($messages as $msg) { 
      echo '<li class="' . $msg['type'] . '">' . $msg['message'] . '</li>';  
     } 
     echo '</ul>'; 
    } 
+0

'$ mainframe'不可用於Joomla! 2.5 - >你需要使用應用程序對象。 – Craig

+1

@cppl - $ mainframe無處不在,因爲它只是一個正在使用JFactory :: getApplication()分配的變量。只要在實例化對象時引用它,就可以使用$ mainframe,$ app,$ foobar,$ helloworld。當然,爲了代碼標準,使用類似$ app(用於應用程序)的東西是有用的,然後:使用$ app = JFactory :: getApplication(); $ APP-> getMessageQueue(); – McRui

+1

@Mario從Rakesh的原始答案沒有第一行'$ mainframe = JFactory :: getApplication();',在Joomla!的歷史(即在1.6-> 2.5行之前)'$ mainframe'是一個'全球'看到這裏 - http://docs.joomla.org/Adapting_a_Joomla_1.5_extension_to_Joomla_1.6#Legacy_Mode_Removed – Craig