Joomla визуализирует полную статью по идентификатору с помощью статьи JModelLegacy getInstance

Я застрял, пытаясь заставить полную статью joomla отображаться на вкладке. Вкладка работает. Я просто не могу отобразить содержание статьи. Вот где я сейчас.

Это helper.php

public static function getArticle($articleId)

{

JModelLegacy::addIncludePath(JPATH_SITE.'/components/com_content/models', 'ContentModel');
$model = JModelLegacy::getInstance('Article', 'ContentModel', array('ignore_request' => true));
$article = $model->getItem((int) $articleId);

$fullarticle = $item->fulltext;

$itemsHtml = '<div>'. $fullarticle .'</div>';

return $itemsHtml;
}

И это в default.php

  ...code...
  else if ($list_of_tabs['use'][$i][0] == 'article'){            
    echo '<div class="tab-pane '.$active.'" id="'.$i.$rid.'">'.
            modJpTabsHelper::getArticle($list_of_tabs['article'][$i], $params) .
         '</div>';
  }
  ...code...

Если вам нужна дополнительная информация. Не стесняйтесь спрашивать.


person Mr Rebel    schedule 30.03.2014    source источник


Ответы (3)


Чего вы пытаетесь достичь: написать свой собственный Joomla! расширение, которое отображает статьи на вкладке, или вам просто нужно отобразить J! статьи во вкладке?

Если последнее, то уже есть несколько приятных и бесплатных (как в «бесплатном мишке») надстроек, написанных именно для этого.

person Alex Smirnov    schedule 30.03.2014
comment
Да, я пытаюсь написать собственное расширение для Joomla. Прошу прощения за грубость, но на это, конечно, есть причина. - person Mr Rebel; 31.03.2014

Вы пытаетесь использовать модельную часть MVC как объект для рендеринга. Вы должны использовать систему MVC - используя контроллер для сбора модели и представления, а затем вы можете визуализировать модель с прикрепленным представлением через контроллер.

Итак, вы используете что-то вроде (я не проверял это - вам нужно будет это исправить).

$filter=array('id' => $i->query['id']);
$options=array('filter_fields' => $filter,'ignore_request' => true);

$ctl = new ContentModelController();
$view = $ctl->getView( 'Article');
$model = $ctl->getModel( 'Article','',$options);

вам может потребоваться установить параметры из приложения, например..

$model->setState('params', JApplication::getInstance('site')->getParams());

затем продолжить

$view->setModel( $model, true );
$result = $view->display();

Убедитесь, что JLoader::импортировал все классы/пути к классам - j. имеет тенденцию к тихому сбою, если они не найдены, что может быть трудно отследить.

Извините, это лишь частичное решение, но, надеюсь, оно направит вас на правильный путь.

person konchog    schedule 31.03.2014
comment
Мне пришлось использовать решение sql, так как у меня был крайний срок. Но я считаю, что это лучшее решение, поэтому я попробую, когда у меня будет время. Спасибо - person Mr Rebel; 01.04.2014

Вот была проблема:

$fullarticle = $item->fulltext;

Объект статьи из модели находился в переменной $article, а не $item:

$article = $model->getItem((int) $articleId);

Таким образом, получение полного текста свойства из объекта статьи должно быть:

$fullarticle = $article->fulltext;
person arbogastes    schedule 04.03.2015