Как добавить поле загрузки файла в админке модуля.

Тема в разделе "Создание расширений для Joomla", создана пользователем Slav9n, 24.04.2011.

  1. Offline

    Slav9n Недавно здесь

    Регистрация:
    24.04.2011
    Сообщения:
    2
    Симпатии:
    0
    Пол:
    Мужской
    Здравствуйте. Подскажите пжлста как добавить поле загрузки файла в админке для модуля? так понимаю в хml-ке нету такого параметра как input type='file' ? как это можно сдлеать по другому?
     
  2.  
  3. Offline

    moskitos80 Гость

    Очень просто: в файле mod_name.xml прописываете:

    Код (CODE):
    1. <params addpath="/modules/mod_вашмодуль/elements">
    2.    <param name="file_upld" type="file" label="Загрузка файла" description="Загрузка файла" />
    3. </params>


    Обратите внимание на атрибут "addpath" - это путь где джумла будет искать описание кастомного элемента.
    В директории модуля создайте директорию elements/ и поместите в неё файл file.php (по названию атрибута type элемента param) там разместите следующий код:

    Код (PHP):
    1. <?php defined('_JEXEC') or die('Restricted access');
    2.  
    3. class JElementFile extends JElement
    4. {
    5.      function fetchElement($name, $value, &$node, $control_name)
    6.      {
    7.         $size   = $node->attributes('size');
    8.        
    9.         return '<input  type="file"
    10.                         name="'.$control_name.'['.$name.']"
    11.                         id = "'.$control_name.$name.'"
    12.                         value="'.$value.'"
    13.                         size="'.$size.'"/>';    
    14.      }
    15. }

    Здесь при помощи класса JElementИмяпараметра, который расширяет класс JElement
    мы, перегружая метод fetchElement - получаем HTML код элемента (в нашем случае input type="file") , заполняя его атрибуты значениями из mod_name.xml - они приходят в этот метод как параметры:

    $name = имя_параметра,
    $value = значение по-умолчанию,
    &$node =Сам элемент "<param .. />" приходит как XML-узел (у него есть метод" attributes" - через который мы можем получить доступ к его атрибутам),
    $control_name= имя массива параметров, все элементы форм (параметры) для модулей находятся в массиве "param" (просмотрите HTML код параметров любого модуля и вы увидите: <input name="param[some_name]...").

    В теге:
    Код (CODE):
    1. <params addpath="/modules/mod_вашмодуль/elements">
    2.    ...
    3. </params>

    - можно размещать любое кол-во параметров, как стандартных, так и не стандартных, файлы описания не стандартных параметров ждумла будет искать в пути: addpath="/modules/mod_вашмодуль/elements

    Вам осталось теперь только понять как обработать полученный файл :)
     
  4. Offline

    Slav9n Недавно здесь

    Регистрация:
    24.04.2011
    Сообщения:
    2
    Симпатии:
    0
    Пол:
    Мужской
    Большое спасибо за развернутый ответ! А обработать файлы это не проблема)
     

Поделиться этой страницей

Загрузка...