Joomla文章自定义列表字段

时间:2020-01-10 15:18:57

标签: joomla3.0 joomla-extensions

我正在尝试在我的joomla文章上创建自定义字段,该字段显示o文件夹列表以选择一个。 我已经制作了以下文件:

清单文件:

   <?xml version="1.0" encoding="utf-8" ?>
    <extension type="plugin" version="3.7.0" group="fields" method="upgrade">
    <name>plg_fields_selectfolder</name>
    <author>Christoforos Korifidids</author>
    <creationDate>January 2020</creationDate>
    <copyright>Copyright (C) 2020 MainSys</copyright>
    <license>GNU General Public License version 2 or later; see LICENSE.txt</license>
    <authorEmail>c.korifidis@mainsys.eu</authorEmail>
    <authorUrl>www.mainsys.eu</authorUrl>
    <version>1.0.0</version>
    <description></description>
    <files>
        <filename plugin="selectfolder">selectfolder.php</filename>
        <folder>params</folder>
        <folder>tmpl</folder>
        <folder>language</folder>

    </files>
        <config>
        <fields name="params">
            <fieldset name="basic">
                <field name="myfolder" type="folderlist" default="" label="Select a folder" directory="images" filter="" exclude="" stripext="" />


            </fieldset>
        </fields>
    </config>

</extension>

入口点:

    defined('_JEXEC') or die;
    JLoader::import('components.com_fields.libraries.fieldslistplugin', JPATH_ADMINISTRATOR);

  class PlgFieldsSelectFolder extends FieldsListPlugin {

    public function onCustomFieldsPrepareDom($field, DOMElement $parent, JForm $form) {

        if ( $field -> id == 14)
        {

            $fieldNode = parent::onCustomFieldsPrepareDom($field, $parent, $form);

            if (!$fieldNode) {
                return $fieldNode;
            }

            $fieldNode->setAttribute('type', 'list');



            return $fieldNode;
        }
    }

}

和我的输出文件:

defined('_JEXEC') or die;

$value = $field->value;

if ($value == '')
{
    return;
}

$db        = JFactory::getDbo();
$value     = (array) $value;
$condition = '';

foreach ($value as $v)
{
    if (!$v)
    {
        continue;
    }

    $condition .= ', ' . $db->q($v);
}

$query = $fieldParams->get('query', '');

// Run the query with a having condition because it supports aliases
$db->setQuery($query . ' having value in (' . trim($condition, ',') . ')');

try
{
    $items = $db->loadObjectlist();
}
catch (Exception $e)
{
    // If the query failed, we fetch all elements
    $db->setQuery($query);
    $items = $db->loadObjectlist();
}

$texts = array();

foreach ($items as $item)
{
    if (in_array($item->value, $value))
    {
        $texts[] = $item->text;
    }
}

echo htmlentities(implode(', ', $texts));

正如您在清单文件中看到的那样,我已将文件“ myfolder”的属性目录设置为值“ images”。因此,我希望有一个包含目录“ images”的子目录的列表。 不过,输出是空的下拉列表。

感谢您的帮助。

0 个答案:

没有答案
相关问题