Joomla Article Custom List Поле - PullRequest
       14

Joomla Article Custom List Поле

0 голосов
/ 10 января 2020

Я пытаюсь создать настраиваемое поле в моих статьях Joomla, которое показывает список папок, чтобы выбрать одну. Я сделал следующие файлы:

Файл манифеста:

   <?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));

Как вы можете видеть в моем файле манифеста, я установил в каталоге атрибутов fiedl "myfolder" значение "images". Поэтому я ожидал, что у меня будет список с подкаталогами каталога «images». Тем не менее, вывод представляет собой пустой выпадающий список.

Любая помощь приветствуется.

...