Подскажите как лучше сделать..

InstantCMS 2.X
#1 16 сентября 2017 в 19:31
Привет всем)) подскажите как лучше реализовать мою задачу))
а задача в следующем… нужно сделать что то вроде "Список: мультивыбор" который в компоненте "Профили пользователей"...
но немного расширенный…

1. В редактировании профиля users/1/edit нужно добавить селект… вообще по идее нужно древовидное меню… но для простоты выбора я решил это сделать селктом (select) вот таким…

Пункт 1
— Подпункт 1-1
— Подпункт 1-2
— -Подпункт 1-2-1
— -Подпункт 1-2-2
— Подпункт 1.3.
Пункт 2
Пункт 3

Ну в общем наверно понятна мысль… те пункты у которых есть дочерний пункт будут неактивными…

2. Напротив селекта буде что-то типа ссылки "Добавить" — кликнул по ней, и выбранный пункт добавился в список под селектом… выбрал нужно количество пунктов… нажал в в редактировании профиля "Сохранить" и все сохранилось..

3. Дальше эти пункты должны отображаться в самом профиле users/1 Там где Контакты, Предпочтения

с реализацией всего этого у меня нет проблем) у меня есть проблема со знанием этого движка… в ядро пальцами лезть не хочется… я так понимаю для этих целей хуки какие то есть… но разобрал пару модулей — хуков не нашел)) документацию почитал… про хуки не нашел…
подскажите как правильно это реализовать?
дайте или ссылку на описание использования хуков..
или ткните на дополнение в котором реализовано новое поле в профиле..

Спасибо)
#2 16 сентября 2017 в 19:40
kaktus, Какие люди проявляют интерес. Привет дружище!
Я к сожалению не подскажу, но надеюсь тебе подскажут более сведущие.
Давай разбирайся и уже начинай для icms допы делать)
#3 16 сентября 2017 в 19:46

kaktus, Какие люди проявляют интерес. Привет дружище!
Я к сожалению не подскажу, но надеюсь тебе подскажут более сведущие.
Давай разбирайся и уже начинай для icms допы делать)

garry
привет)) рад видеть)) да я давно смотрел на instantcms, еще помню когда второй версии не было) а тут клиенту надо было сделать сайт… я думал сначала на yii2 начать что то мастерить) а потом понял что тут почти все что нужно есть)) даже больше))) пару модулей сделать — клиент получит то что он хотел)) а я с новой CMS разберусь))
#4 16 сентября 2017 в 19:59
kaktus, хуки вам тут не нужны. Вам нужно создать поле, которое потом добавить в настройках компонента "Профили пользователей".
#5 16 сентября 2017 в 20:14

kaktus, хуки вам тут не нужны. Вам нужно создать поле, которое потом добавить в настройках компонента "Профили пользователей".

Loadырь
есть где то пример как это делать?))

Спасибо))
#6 16 сентября 2017 в 20:18

есть где то пример как это делать?))

kaktus
/system/fields — вот в этой папке лежат поля — вам нужно создать новое
/templates/default/assets/fields — тут файлы шаблоны полей

А вот документации по созданию полей для разработчиков вроде нет…
#7 16 сентября 2017 в 20:25
По формам есть немного документации.
По хукам и контроллерам документации более чем достаточно.

В общем то, @SmartControl выше написал ключевое

/system/fields — вот в этой папке лежат поля — вам нужно создать новое
/templates/default/assets/fields — тут файлы шаблоны полей

@SmartControl

Новое поле делаете по аналогии, описание свойств и методов класса есть в документации. Единственное, хочу уточнить, что /templates/default/assets/fields/ тут лежат шаблоны вывода поля при редактировании, а не вывода данных.
#8 16 сентября 2017 в 20:25
Примерами, только гит полнится. Больше нигде ничего нет.
Создаёте два файла github.com/instantsoft/icms2/blob/master/system/fields/list.php и github.com/instantsoft/icms2/blob/master/templates/default/assets/fields/list.tpl.php
Второй отвечает за вывод на странице редактирования записи или профиля.
С первым чуть сложнее
github.com/instantsoft/icms2/blob/master/system/fields/list.php#L12 тут опции для самого поля, выводятся во время установки и редактирования поля.
github.com/instantsoft/icms2/blob/master/system/fields/list.php#L65 тут вывод на странице записи или профиля.
  1. public $title = LANG_PARSER_LIST; - название поля
  2. public $sql = 'int NULL DEFAULT NULL'; - тип ячейки в БД
  3. public $filter_type = 'int'; - тип данных передаваемых из формы фильтра
  4. public $var_type = 'string'; - тип данных в остальных случаях
  5.  
LANG_PARSER_LIST — языковые константы, если планируете выносить в отдельный файл, то его нужно располагать в корне ru или en github.com/instantsoft/icms2/tree/master/system/languages/ru
Это если совсем вкратце.
#9 17 сентября 2017 в 16:32
Спасибо большое всем за ответы) посмотрел я поля профиля...
похоже не совсем то что мне нужно..
при создании новых полей профиля в табличке cms_users создается новый столбец. кстати интересная реализация поиска по предустановленным)) понравилось))

у меня пункты и подпункты будут добавляться в процессе… плюс хочется что бы категории и дочерние элементы сортировались по алфавиту… в принципе то сортировку и сейчас можно сделать… но как быть если внутрь подкатегории надо добавить очередной пункт…

как я понял контроллеры в system/fields создают набор управляющих элементов (чекбоксы, радиокнопки и т.п.) а что бы поменять идею работы тех же предустановленных элементов — это уже надо в ядро лезть…

или я недостаточно разобрался в сути кастомных полей и их добавления?
Спасибо.
#10 17 сентября 2017 в 16:43

как я понял контроллеры в system/fields создают набор управляющих элементов (чекбоксы, радиокнопки и т.п.) а что бы поменять идею работы тех же предустановленных элементов — это уже надо в ядро лезть..

вот так сам с собой поговоришь и вроде понятнее становится… надо уточку купить)) smile

  1. new fieldCheckbox('filter_multiple', array(
  2. 'title' => LANG_PARSER_LIST_FILTER_MULTI,
  3. 'default' => false
  4. )),
вот тут у нас получается используется класс fieldCheckbox для создания мультичекбокса.
мне надо сделать новый класс… который будет в блоке "Тип поля" в настройках компонента "профили пользователей" добавлять управление категориями и подкатегориями… для которых по идее надо будет сделать отдельную табличку… и потом еще в отдельной табличке хранить выбор пользователей…
тогда нам Предустановленные значения (textarea) из настройки полей профиля будет не нужно… хотя на вид какой то костыль получается…
в данном случае как я вижу "Предустановленные значения" для всех типов предустановленных полей актуально… а для моей задачи неактуально…
#11 20 сентября 2017 в 15:26
В общем добавить кастомное поле какое мне нужно — у меня так и не получилось… толи я не понял как это правильно сделать… толи еще что то..
я просто сделал модуль, пока что только админку, в ней строю дерево нужных мне значений… все записывается в табличку, валидируется, в общем все хорошо..

теперь у меня новый затык, мне надо получить следующее
1. Что бы в редактировании профиля test.ru/users/1/edit можно было поставить галочки на дерево параметров… как мне добавить новую вкладку в редактировании профиля?
2. Как добавить вывод своих данных на главную страницу профиля test3.ru/users/1 там где выводятся данные кастомных полей..

или ткните носом как мне в кастомном поле использовать мое дерево параметров)) оно произвольной глубины… так что может быть и 4 и 5 уровней...

спасибо большое..

п.с. пока что от instantCMS только положительные эмоции))
#12 20 сентября 2017 в 15:59
Привет! Можете подсказать? Впервые установил этот движок. Всё по пунктам сделал но такое ощущение что тема оформление слитает сайту час переходя по 3 — 4 неважно каким ссылкам css не грузит! просто текст загружается!!! Может встречал такое omytinka.ru/
#13 20 сентября 2017 в 16:11
Ну подскажите чего нехватает этому движку или это что то сервером?
#14 20 сентября 2017 в 16:16
попробуйте в кабинете хостинга найти что то типа "mod_pagespeed" в модулях PHP и отключите… а вообще лучше отдельную тему писать — а не оффтопить в другой)
#15 20 сентября 2017 в 16:20


попробуйте в кабинете хостинга найти что то типа "mod_pagespeed" в модулях PHP и отключите… а вообще лучше отдельную тему писать — а не оффтопить в другой)

kaktus

По поводу другой темы тут вы погоричились НОВЕНЬКИМ ЗАПРЕТ! нехватает ранга или что то в этом духе
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.