2012-02-02 52 views
0

私はJoomla!を使用しています! Joomla!のK2 v2.4.1コンポーネントv1.5.23。アイテムビューページに最新のアイテムをカテゴリ別に表示するとします。カテゴリは現在表示されているアイテムが属するものです。K2コンポーネントのアイテムビューページで「最新のアイテムを追加」ブロック

カテゴリ別に最新のアイテムを表示するために使用できるモジュールがありますが、item.phpやその他の関連ファイルを変更したいのですが(実際にはitem.phpテンプレートファイル以外のどのファイルを編集するのかわかりません)この要件に対応します。これを達成することは可能ですか?はいの場合、どのファイルを編集し、どのコードを使用する必要がありますか?

以下は、カテゴリ別に最新のアイテムを取得するために使用されていると考えられるものです。

class K2ViewLatest extends JView { 

    function display($tpl = null) { 
     $mainframe = &JFactory::getApplication(); 
     $params = &JComponentHelper::getParams('com_k2'); 
     $user = &JFactory::getUser(); 
     $cache = &JFactory::getCache('com_k2_extended'); 
     $limit = $params->get('latestItemsLimit',3); 
     $limitstart = JRequest::getInt('limitstart'); 
     $model = &$this->getModel('itemlist'); 
     $itemModel = &$this->getModel('item'); 

     if($params->get('source')){ 
      $categoryIDs = $params->get('categoryIDs'); 
      if(is_string($categoryIDs) && !empty($categoryIDs)){ 
       $categoryIDs = array(); 
       $categoryIDs[]=$params->get('categoryIDs'); 
      } 
      $categories = array(); 
      JTable::addIncludePath(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_k2'.DS.'tables'); 
      if(is_array($categoryIDs)){ 
       foreach($categoryIDs as $categoryID){ 
        $category = & JTable::getInstance('K2Category', 'Table'); 
        $category->load($categoryID); 
        if ($category->published && ($category->access <= $user->get('aid', 0))) { 

         //Merge params 
         $cparams = new JParameter($category->params); 
         if ($cparams->get('inheritFrom')) { 
          $masterCategory = &JTable::getInstance('K2Category', 'Table'); 
          $masterCategory->load($cparams->get('inheritFrom')); 
          $cparams = new JParameter($masterCategory->params); 
         } 
         $params->merge($cparams); 

         //Category image 
         if (! empty($category->image)) { 
          $category->image = JURI::root().'media/k2/categories/'.$category->image; 
         } else { 
          if ($params->get('catImageDefault')) { 
           $category->image = JURI::root().'components/com_k2/images/placeholder/category.png'; 
          } 
         } 

         //Category plugins 
         $dispatcher = &JDispatcher::getInstance(); 
         JPluginHelper::importPlugin('content'); 
         $category->text = $category->description; 
         $dispatcher->trigger('onPrepareContent', array (& $category, &$params, $limitstart)); 
         $category->description = $category->text; 

         //Category K2 plugins 
         $category->event->K2CategoryDisplay = ''; 
         JPluginHelper::importPlugin('k2'); 
         $results = $dispatcher->trigger('onK2CategoryDisplay', array(&$category, &$params, $limitstart)); 
         $category->event->K2CategoryDisplay = trim(implode("\n", $results)); 
         $category->text = $category->description; 
         $dispatcher->trigger('onK2PrepareContent', array (& $category, &$params, $limitstart)); 
         $category->description = $category->text; 

         //Category link 
         $link = urldecode(K2HelperRoute::getCategoryRoute($category->id.':'.urlencode($category->alias))); 
         $category->link = JRoute::_($link); 
         $category->feed = JRoute::_($link.'&format=feed'); 

         JRequest::setVar('view', 'itemlist'); 
         JRequest::setVar('task', 'category'); 
         JRequest::setVar('id', $category->id); 
         JRequest::setVar('featured', 1); 
         JRequest::setVar('limit', $limit); 
         JRequest::setVar('clearFlag', true); 

         $category->name = htmlspecialchars($category->name, ENT_QUOTES); 
         $category->items = $model->getData('rdate'); 


         JRequest::setVar('view', 'latest'); 
         JRequest::setVar('task', ''); 

         for ($i = 0; $i < sizeof($category->items); $i++) { 

          if ($user->guest){ 
           $hits = $category->items[$i]->hits; 
           $category->items[$i]->hits = 0; 
           $category->items[$i] = $cache->call(array('K2ModelItem', 'prepareItem'), $category->items[$i], 'latest', ''); 
           $category->items[$i]->hits = $hits; 
          } 
          else { 
           $category->items[$i] = $itemModel->prepareItem($category->items[$i], 'latest', ''); 
          } 

          $category->items[$i] = $itemModel->execPlugins($category->items[$i], 'latest', ''); 

          //Trigger comments counter event 
          $dispatcher = &JDispatcher::getInstance(); 
          JPluginHelper::importPlugin ('k2'); 
          $results = $dispatcher->trigger('onK2CommentsCounter', array (& $category->items[$i], &$params, $limitstart)); 
          $category->items[$i]->event->K2CommentsCounter = trim(implode("\n", $results)); 

         } 
         $categories[]=$category; 
        } 


       } 
      } 
      $source = 'categories'; 
      $this->assignRef('blocks', $categories); 

     } else { 
      $usersIDs = $params->get('userIDs'); 
      if(is_string($usersIDs) && !empty($usersIDs)){ 
       $usersIDs = array(); 
       $usersIDs[]=$params->get('userIDs'); 
      } 

      $users = array(); 
      if(is_array($usersIDs)){ 
       foreach($usersIDs as $userID){ 

        $userObject = JFactory::getUser($userID); 
        if (!$userObject->block) { 

         //User profile 
         $userObject->profile = $model->getUserProfile($userID); 

         //User image 
         $userObject->avatar = K2HelperUtilities::getAvatar($userObject->id, $userObject->email, $params->get('userImageWidth')); 

         //User K2 plugins 
         $userObject->event->K2UserDisplay = ''; 
         if (is_object($userObject->profile) && $userObject->profile->id > 0) { 

          $dispatcher = &JDispatcher::getInstance(); 
          JPluginHelper::importPlugin('k2'); 
          $results = $dispatcher->trigger('onK2UserDisplay', array(&$userObject->profile, &$params, $limitstart)); 
          $userObject->event->K2UserDisplay = trim(implode("\n", $results)); 

         } 
         $link = K2HelperRoute::getUserRoute($userObject->id); 
         $userObject->link = JRoute::_($link); 
         $userObject->feed = JRoute::_($link.'&format=feed'); 
         $userObject->name = htmlspecialchars($userObject->name, ENT_QUOTES); 
         $userObject->items = $model->getAuthorLatest(0,$limit,$userID); 

         for ($i = 0; $i < sizeof($userObject->items); $i++) { 

          if ($user->guest){ 
           $hits = $userObject->items[$i]->hits; 
           $userObject->items[$i]->hits = 0; 
           $userObject->items[$i] = $cache->call(array('K2ModelItem', 'prepareItem'), $userObject->items[$i], 'latest', ''); 
           $userObject->items[$i]->hits = $hits; 
          } 
          else { 
           $userObject->items[$i] = $itemModel->prepareItem($userObject->items[$i], 'latest', ''); 
          } 

          //Plugins 
          $userObject->items[$i] = $itemModel->execPlugins($userObject->items[$i], 'latest', ''); 


          //Trigger comments counter event 
          $dispatcher = &JDispatcher::getInstance(); 
          JPluginHelper::importPlugin ('k2'); 
          $results = $dispatcher->trigger('onK2CommentsCounter', array (& $userObject->items[$i], &$params, $limitstart)); 
          $userObject->items[$i]->event->K2CommentsCounter = trim(implode("\n", $results)); 


         } 

         $users[]=$userObject; 
        } 

       } 
      } 
      $source = 'users'; 
      $this->assignRef('blocks', $users); 
     } 

     //Look for template files in component folders 
     $this->_addPath('template', JPATH_COMPONENT.DS.'templates'); 
     $this->_addPath('template', JPATH_COMPONENT.DS.'templates'.DS.'default'); 

     //Look for overrides in template folder (K2 template structure) 
     $this->_addPath('template', JPATH_SITE.DS.'templates'.DS.$mainframe->getTemplate().DS.'html'.DS.'com_k2'.DS.'templates'); 
     $this->_addPath('template', JPATH_SITE.DS.'templates'.DS.$mainframe->getTemplate().DS.'html'.DS.'com_k2'.DS.'templates'.DS.'default'); 

     //Look for overrides in template folder (Joomla! template structure) 
     $this->_addPath('template', JPATH_SITE.DS.'templates'.DS.$mainframe->getTemplate().DS.'html'.DS.'com_k2'.DS.'default'); 
     $this->_addPath('template', JPATH_SITE.DS.'templates'.DS.$mainframe->getTemplate().DS.'html'.DS.'com_k2'); 

     //Assign params 
     $this->assignRef('params', $params); 
     $this->assignRef('source', $source); 

     //Set layout 
     $this->setLayout('latest'); 

     //Display 
     parent::display($tpl); 
    } 

} 

しかし、このファイルはメニューリンクを使用してアイテムを取得するために使用されます。これが事実でない場合、私はごめんなさい。

+0

誰でもplz。私はこのコードに悩まされています。 –

答えて

1

この作業を望むようにするには、K2アイテムモデルを変更する必要があります。表示したいデータ(カテゴリー内の最近のアイテム)は現在データベースから取得されていないので、モデルに合わせて変更する必要があります。 K2コンテンツモジュールを使用して、最新のアイテムを引き出す方がずっと良いでしょう。コアK2コードをハックする必要はありません。

また、ソフトウェアを更新する必要があります。 K2はv2.5.4上、Joomlaは2.5.1上にあります。

関連する問題