从插件添加自定义字段到joomla文章循环

时间:2017-01-11 07:24:15

标签: php loops joomla

我为joomla com_content文章创建了3个自定义字段,如本教程中所述: https://docs.joomla.org/Adding_custom_fields_to_core_components_using_a_plugin/de

现在我需要创建一个类别(43)中所有文章的概述,并在joomla查询中显示这些自定义字段。

我在模板文件中的实际joomla查询覆盖了文章:

        <?php 
            $catId = 43;
            $query = "SELECT * FROM #__content WHERE catid ='" . $catId . "'";
            $db = JFactory::getDBO();
            $db->setQuery($query); 
            $articles = $db->loadObjectList(); 
            foreach($articles as $article){
                echo 'ID: ' . $article->id;
                echo '<br />';
                echo 'Name: ' . $article->title;
                echo '<br />';
                echo '<a href="' . JRoute::_('index.php?option=com_content&view=article&id='.$article->id) . '">Link</a>';
                echo '<br /><br />';
            }
        ?>

自定义字段可以添加到文章输出中:

$this->params->get('custom_field_1');

但是这在循环中不起作用。如何在此循环中添加名为custom_field_1的自定义字段?

2 个答案:

答案 0 :(得分:0)

您应该使用内容插件的onContentPrepare方法,就像您在表单中添加字段一样:

public function onContentPrepare($context, &$row, $params, $page = 0){

    if ( JFactory::getApplication()->getTemplate() !== 'your_template_name' ){
        return;
    }

    $catId = 43;
    $query = "SELECT * FROM #__content WHERE catid ='" . $catId . "'";
    $db = JFactory::getDBO();
    $db->setQuery($query); 
    $row->articles = $db->loadObjectList(); 

}

现在,在您的项目中,您有一个字段文章,其中包含所有43类文章的列表。

在您看来,您可以使用$ this-&gt; item-&gt;文章来检索此列表。

答案 1 :(得分:0)

您可以在loop-

中尝试以下代码
<?php 
$attribs = json_decode($article->attribs); 
echo $attribs->custom_field_1; 
?>