Большое спасибо)
Если вы не против, можно по этому элементу буду тогда тут вопросы задавать, чтобы кучу тем не плодить?
Отправлено 12 January 2016 - 13:08
Большое спасибо)
Если вы не против, можно по этому элементу буду тогда тут вопросы задавать, чтобы кучу тем не плодить?
Отправлено 12 January 2016 - 13:12
Ещё вот такой вопрос есть.
Опять же, если брать за пример элемент Nivo Slider, то там в папке tmpl 2 файла: edit.php и файл с названием элемента.
В edit.php, как я понимаю, просто идёт выбор директории, в которой будут лежать фото?
То есть для моего элемента его можно просто скопировать?
Отправлено 12 January 2016 - 13:24
Большое спасибо)
Если вы не против, можно по этому элементу буду тогда тут вопросы задавать, чтобы кучу тем не плодить?
Та, не вопрос
Опять же, если брать за пример элемент Nivo Slider, то там в папке tmpl 2 файла: edit.php и файл с названием элемента. В edit.php, как я понимаю, просто идёт выбор директории, в которой будут лежать фото?
edit.php - это шаблон элемента, который будет использоваться для редактирования в материале или подаче.
Он вызывается через метод edit() если тот определен.
Т.е на 103 строке проверяется существование файла tmpl/edit.php и если он есть, то подключается и рендерится с переменными $element, $value, $directory
То есть для моего элемента его можно просто скопировать?
Да, его + метод edit()
только обратите внимание на $directory, она оказывает откуда брать список файлов.
— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.
Отправлено 12 January 2016 - 13:33
Как я понимаю, переменная $directory получает список папок и файлов в корневой директории элемента, и в моём случае я могу копировать метод, не изменяя его, ведь файл edit.php у меня лежит также в tmpl/edit.php. Верно же?
Отправлено 12 January 2016 - 13:39
Эта переменная - просто текстовая строчка, путь до определенной папки.
Сейчас берется из настроек элемента.
При желание можно указать явно.
$directory = $directory = 'root:images/somefolder';
Пока просто скопируйте.
— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.
Отправлено 12 January 2016 - 13:46
Эта переменная - просто текстовая строчка, путь до определенной папки.
Сейчас берется из настроек элемента.
При желание можно указать явно.
$directory = $directory = 'root:images/somefolder';Пока просто скопируйте.
Да, так и сделал.
На данный момент, файл в корне элемента jbsliderpro.php у меня имеет такое содержание:
/** * Class ElementJBSliderPro */ class ElementJBSliderPro extends Element { /** * @return $this */ public function loadAssets() { $this->app->jbassets->js('elements:jbsliderpro/assets/js/jquery.sliderPro.min.js'); $this->app->jbassets->css('elements:jbsliderpro/assets/css/slider-pro.min.css'); return parent::loadAssets(); } /** * подключение локализаций */ public function __construct($app, $type, $group) { parent::__construct($app, $type, $group); JFactory::getLanguage()->load('elem_' . $this->getElementType(), $this->getPath(), null, true); } /** * Edit action * @return null|string */ public function edit() { // init vars $directory = 'root:' . $this->config->get('directory'); if ($layout = $this->getLayout('edit.php')) { return self::renderLayout( $layout, array( 'element' => $this->identifier, 'directory' => $directory, 'value' => $this->_data->get('value') ) ); } return null; } } ?>
Как вы понимаете, переменных для самих настроек пока по сути нету. Но что самое приятное, сам элемент наконец-то отобразился в админке, при нажатии на Редактирование полей (для типа), и сейчас выводится 4 предупреждения (как я догадываюсь, переменные нигде не объявлены, и их нужно объявить):
Warning: Missing argument 2 for ElementJBSliderPro::__construct(), called in /home/artcolor/artcolorit.com/clock/administrator/components/com_zoo/helpers/element.php on line 82 and defined in /home/artcolor/artcolorit.com/clock/media/zoo/applications/jbuniversal/elements/jbsliderpro/jbsliderpro.php on line 38 Warning: Missing argument 3 for ElementJBSliderPro::__construct(), called in /home/artcolor/artcolorit.com/clock/administrator/components/com_zoo/helpers/element.php on line 82 and defined in /home/artcolor/artcolorit.com/clock/media/zoo/applications/jbuniversal/elements/jbsliderpro/jbsliderpro.php on line 38 Notice: Undefined variable: type in /home/artcolor/artcolorit.com/clock/media/zoo/applications/jbuniversal/elements/jbsliderpro/jbsliderpro.php on line 41 Notice: Undefined variable: group in /home/artcolor/artcolorit.com/clock/media/zoo/applications/jbuniversal/elements/jbsliderpro/jbsliderpro.php on line 41
Скриншот с номерами строк: http://clip2net.com/s/3sOn8CI
Отправлено 12 January 2016 - 13:52
Хм...
Тогда используйте строку JFactory::getLanguage() в методе render (в будущем методе)
А вообще я бы пока рекомендовал не забивать голову локализациями, а сделать на одном языке, а уже потом их добавить.
Тогда метод __construct не нужен совсем.
— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.
Отправлено 12 January 2016 - 14:00
Убрал пока локализацию, её же можно добавить в любой момент.
Добавил слайдер в шаблон Full, у меня отобразились настройки, всё прекрасно: http://clip2net.com/s/3sOpWBE
Есть вопрос. Для выпадающих списков я использовал тип jbselect. Но почему-то они выглядят как список опций, но без выпадения, они сразу все отображаются. Почему? или нужно было другой тип использовать?
Отправлено 12 January 2016 - 14:15
И опять же, сравнивая с Nivo Slider, хотел спросить по поводу двух функций:
Первая функция:
/** * Check, has value * @param array $params * @return bool */ public function hasValue($params = array()) { $value = $this->_data->get('value'); $directory = $this->_getImagesPath(); return !empty($value) && is_readable($directory) && is_dir($directory); }
Как я понимаю, эта функция получает путь к картинкам, и проверяет, доступна ли данная директория, где лежат картинки, на запись. Верно? И её скорее всего также можно использовать, просто скопировав?
Вторая функция:
/** * Get images paths * @return string */ private function _getImagesPath() { $value = $this->_data->get('value'); $directory = $this->config->get('directory'); $directory = JPATH_ROOT . '/' . trim($directory, '/') . '/' . trim($value, '/'); return $directory; }
Эта функция по идее связана с первой?
Отправлено 12 January 2016 - 14:53
. Почему? или нужно было другой тип использовать?
Тут лучше показать код, который у вас получился.
Как я понимаю, эта функция получает путь к картинкам, и проверяет, доступна ли данная директория, где лежат картинки, на запись. Верно? И её скорее всего также можно использовать, просто скопировав?
Да. Все верно.
Если ф-я вернет false, то элемент вообще никак не будет выведен на сайте.
Это проверка, которую вызывает компонент Zoo при выводе каждого элемента.
Удобно с точки зрения оптимизации, т.е выполнить минимальную проверку до запуска тяжелых функций элемента (н-р ресайза картинок).
Эта функция по идее связана с первой?
Да, он вернет путь до директории, из которой берутся файлы картинок.
$value - содержит название папки, которую выбрал человек для материала
$directory - содержит путь до родительской папки, на которую ссылается селект в админке.
— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.