2017-01-19 6 views
1

カスタムJoomla!さまざまな種類のレポートをクライアントに表示するために開発したコンポーネントです。管理バックエンドでは、前記コンポーネント内でサービスとレポートを構成します。次に、各クライアントに合わせてカスタマイズされたカスタムモジュールを追加して、レポートをポイントし、空白のページにロードします。既存のコンポーネントで表示するようにJoomlaモジュールを変換する

これは、クライアントの設定に基づいて各レポートを調整し、ほぼ完全に再設計しなければならないためうまく動作しますが、標準化されたものでモジュールなしのビューを使用するオプションがあります。私は特定の種類のレポートを自分の視点に変換し、管理者側を問題なく設定していることに着手しました。私が取り組んでいる問題は、フロントエンドのディスプレイです。

私が収集したことから、フロントエンドビューは他のものより先にview.html.phpmetadata.xmlをロードする必要があります。ただし、view.html.phpのコードは実行されていないようです(各行の前後にあるprint文でテストされています)。以下は、ファイルの墨塗りされたバージョンであり、XMLです。参考までに、Joomla!を実行しています! 3.6.5。

PHP:

<?php 
// No direct access to this file 
defined('_JEXEC') or die; 

// import Joomla view library 
jimport('joomla.application.component.view'); 

class [ComponentName]ViewDashboard extends JViewLegacy 
{  

    public function display($tpl = null) 
    { 
     /*[Large code block here, removed for sanitization]*/ 
     parent::display($tpl); 
    } 

} 
?> 

XML:

<?xml version="1.0" encoding="utf-8"?> 
<metadata> 
    <!-- View definition --> 
    <view title="Dashboard"> 
     <!-- Layout options --> 
     <options> 
      <!-- Default layout's name --> 
      <default name="Dashboard" /> 
     </options> 
    </view> 
</metadata> 

答えて

1

ビューファイル内のクラス名が間違っています。それはあります

class YOUR_COMPONENT_NAMEViewDashboard extends JViewLegacy 
{  

    public function display($tpl = null) 
    { 
     /*[Large code block here, removed for sanitization]*/ 
     parent::display($tpl); 
    } 

} 

YOUR_COMPONENT_NAMEをコンポーネントの名前に置き換えてください。

チェックこのリンクhttps://docs.joomla.org/J3.x:Developing_an_MVC_Component/Adding_a_view_to_the_site_part

+0

実際にはファイルにあります。私はそのポストの間にそのビットを除外することを忘れていた。オリジナルを更新して反映させます。 – AmaliaKalio

1

それが働いて手に入れました。他のロジックが存在するにもかかわらず、フロントエンドにモデルを追加して表示する必要がありました。サニタイズされたファイルは、root \ components \ com_ComponentName \ models \ modelName.phpにあります。ここで、modelNameはビューに一致します。

<?php 
// No direct access to this file 
defined('_JEXEC') or die('Restricted access'); 
ini_set('memory_limit','1024M'); 

// import Joomla modelitem library 
jimport('joomla.application.component.modelitem'); 


class ComponentNameModelDashboard extends JModelItem 
{ 

    protected function populateState() 
    { 
     // Load the parameters. 
     //print_r(JFactory::getApplication()->getParams()); 
     $this->setState('params', JFactory::getApplication()->getParams()); 
     parent::populateState(); 
    } 

    public function getItem() 
    { 
     if (!isset($this->item)) 
     { 
      $params = clone $this->getState('params'); 
      $params->merge($this->item->params); 
      $this->item->params=$params; 
      $params = new JRegistry; 
      $params->loadString($this->item->params,'JSON'); 
      $report=$params['report']; 
      $db = JFactory::getDbo(); 
      $query = $db->getQuery(true); 
      $query->select('*') 
        ->from('#__DBTABLEHERE') 
        ->where('dashboard_name=\'' . (string)$report.'\''); 
      $db->setQuery((string)$query); 
     } 
     return $this->item; 
    } 
} 
関連する問題