2013-09-30 5 views
0

다음 코드를 출력하는 사용자 정의 Joomla 포트폴리오 구성 요소가 있습니다 (아래). 내가 할 수 있기를 원하는 것은 같은 페이지에있는 모듈에서 name 변수를 echo하는 것이지만 현재의 시도는 효과가 없다. 이것이 가능합니까? 그렇다면 어디에서 잘못 될까요? 여기에 내가 뭘하려입니다 ...모듈 위치에 Joomla 구성 요소 변수를 반향합니다.

-

내 구성 요소 default.php 출력 ...

// no direct access 
defined('_JEXEC') or die; 

//Load admin language file 
$lang = JFactory::getLanguage(); 
$lang->load('com_portfolio', JPATH_ADMINISTRATOR); 

?> 
<?php if ($this->item) : ?> 

<div class="item_fields"> 

    <ul class="fields_list"> 

        <li><?php echo JText::_('COM_PORTFOLIO_FORM_LBL_TEMPLATE_ID'); ?>: 
     <?php echo $this->item->id; ?></li> 
     <li><?php echo JText::_('COM_PORTFOLIO_FORM_LBL_TEMPLATE_ORDERING'); ?>: 
     <?php echo $this->item->ordering; ?></li> 
     <li><?php echo JText::_('COM_PORTFOLIO_FORM_LBL_TEMPLATE_STATE'); ?>: 
     <?php echo $this->item->state; ?></li> 
     <li><?php echo JText::_('COM_PORTFOLIO_FORM_LBL_TEMPLATE_CHECKED_OUT'); ?>: 
     <?php echo $this->item->checked_out; ?></li> 
     <li><?php echo JText::_('COM_PORTFOLIO_FORM_LBL_TEMPLATE_CHECKED_OUT_TIME'); ?>: 
     <?php echo $this->item->checked_out_time; ?></li> 
     <li><?php echo JText::_('COM_PORTFOLIO_FORM_LBL_TEMPLATE_CREATED_BY'); ?>: 
     <?php echo $this->item->created_by; ?></li> 
     <li><?php echo JText::_('COM_PORTFOLIO_FORM_LBL_TEMPLATE_NAME'); ?>: 
     <?php echo $this->item->name; ?></li> 
     <li><?php echo JText::_('COM_PORTFOLIO_FORM_LBL_TEMPLATE_CUSTOM_CLASS'); ?>: 
     <?php echo $this->item->custom_class; ?></li> 
     <li><?php echo JText::_('COM_PORTFOLIO_FORM_LBL_TEMPLATE_CATEGORY'); ?>: 
     <?php echo $this->item->category_title; ?></li> 
     <li><?php echo JText::_('COM_PORTFOLIO_FORM_LBL_TEMPLATE_THUMB'); ?>: 
     <?php echo $this->item->thumb; ?></li> 
     <li><?php echo JText::_('COM_PORTFOLIO_FORM_LBL_TEMPLATE_IMAGE1'); ?>: 
     <?php echo $this->item->image1; ?></li> 
     <li><?php echo JText::_('COM_PORTFOLIO_FORM_LBL_TEMPLATE_IMAGE2'); ?>: 
     <?php echo $this->item->image2; ?></li> 
     <li><?php echo JText::_('COM_PORTFOLIO_FORM_LBL_TEMPLATE_IMAGE3'); ?>: 
     <?php echo $this->item->image3; ?></li> 
     <li><?php echo JText::_('COM_PORTFOLIO_FORM_LBL_TEMPLATE_IMAGE4'); ?>: 
     <?php echo $this->item->image4; ?></li> 
     <li><?php echo JText::_('COM_PORTFOLIO_FORM_LBL_TEMPLATE_DESCRIPTION'); ?>: 
     <?php echo $this->item->description; ?></li> 
     <li><?php echo JText::_('COM_PORTFOLIO_FORM_LBL_TEMPLATE_STATS'); ?>: 
     <?php echo $this->item->stats; ?></li> 
     <li><?php echo JText::_('COM_PORTFOLIO_FORM_LBL_TEMPLATE_DEMO_LINK'); ?>: 
     <?php echo $this->item->demo_link; ?></li> 
     <li><?php echo JText::_('COM_PORTFOLIO_FORM_LBL_TEMPLATE_BUY_LINK'); ?>: 
     <?php echo $this->item->buy_link; ?></li> 
     <li><?php echo JText::_('COM_PORTFOLIO_FORM_LBL_TEMPLATE_TAGS'); ?>: 
     <?php echo $this->item->tags; ?></li> 


    </ul> 

</div> 

그리고 내가 뭘하고 싶은 모듈에 이름 변수를 반향하는 것입니다

<?php 
defined('_JEXEC') or die('Access Deny'); 
$lang = JFactory::getLanguage(); 
$lang->load('com_portfolio'); 
?> 


<?php echo JText::_('COM_PORTFOLIO_FORM_LBL_TEMPLATE_NAME'); ?>: 
<?php echo $item->name; ?> 

구성 요소가 잘 작동하고 모듈이 간단한 hello world echo로 동작하므로 아이디어가 없습니다.

+0

나는 왜 내가 줌라를 어지럽히는 것을 멈추게되었는지 기억한다! – user1032531

답변

0

간단한 해결책을 찾았습니다. 그것이 최소한의 기능 지금은 단순히 세션

$session =& JFactory::getSession(); 
$session->set('myVar', $this->item->name); 

를 설정하고는 ... 내 모듈에 나는이 작업을 위해 모두 안전하거나 효율적인 방법입니다 경우 잘 모릅니다

<?php echo htmlspecialchars($session->get('myVar', 'empty')); ?> 

그것을 반향하지만, .

0

모듈의 구성 요소에서 모델을 사용하는 것이 좋습니다. 다음과 같은 코드는 다음 두 번째 데이터베이스 액세스를 방지 할 항목을 캐시 할 수있는 모델 자체에서 모듈

JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_portfolio/models', 'PortfolioModel'); 
$model = JModelLegacy::getInstance('Portfolio', 'PortfolioModel'); 
$model->getState(); 
// if you want to set a state 
$model->setState('filter.category_id', $catid); 
$item = $model->getItem(); 

에서 항목을 얻을 수 있습니다. 그것을 해결하는 다른 방법.