K

kaktus

+34
Репутация
8
Рейтинг
#1 Подскажите как лучше сделать.. 22 сентября 2017 в 00:55
может кому то нужно будет..
видимость или не видимость кастомных полей в профиле определяется в файле profile.php
там есть такой рендер шаблона
  1.  
  2. return $this->cms_template->render('profile_view', array(
  3. 'profile' => $profile,
  4. 'user' => $this->cms_user,
  5. 'is_own_profile' => $this->is_own_profile,
  6. 'is_friends_on' => $this->options['is_friends_on'],
  7. 'tool_buttons' => $this->getToolButtons($profile),
  8. 'show_all_flink' => isset($this->tabs['friends']),
  9. 'friends' => $friends,
  10. 'content_counts' => $content_counts,
  11. 'fields' => $fields,
  12. 'wall_html' => isset($wall_html) ? $wall_html : false,
  13. 'tabs' => $tabs
  14. ));
  15.  
в переменной $fields — у нас лежат все поля..
а в переменной $profile данные профиля..
перед этим кодом есть хук profile_before_view
вот на него и надо цеплять проверку отображения кастомного поля с отдельной табличкой..
у меня же данные складываются не в столбец кастомного поля в таблице users
а в отдельную табличку… у меня там связь многое ко многим...
чувствую еще и с поиском заморока будет))
#2 Подскажите как лучше сделать.. 21 сентября 2017 в 21:51
Опять кое на чем застрял..
в профиле test3.ru/users/2 мое кастомное поле отображается только тогда — когда было что то заполнено в оригинальном кастомном поле..
т.е. если в табличке cms_users в столбце значений кастомного поля не стоит NULL тогда все отлично отображается… если же установлено NULL то в пофиле ничего не вижу… как это обойти? или что то записывать туда когда значения есть в моей табличке?
#3 Подскажите как лучше сделать.. 21 сентября 2017 в 09:41

При установке поля в профиле, в таблице cms_users создаётся ячейка, в которой должны храниться данные выбранные пользователем. Эти данные потом доступны в переменной $value либо обрабатываются и передаются через getInput($value).
github.com/instantsoft/icms2/blob/master/system/fields/list.php#L137
Если $value это массив, то в базе данных он хранится в виде строки и при выводе его нужно преобразовать из yml в array

Loadырь
Благодарю)) а то я уже начал колхозить и в вьюхе из модели данные доставать)
#4 Подскажите как лучше сделать.. 20 сентября 2017 в 22:12

В файле github.com/instantsoft/icms2/blob/master/templates/default/assets/fields/list.tpl.php вы рисуете внешний вид вашего поля каким его увидит пользователь при редактировании своего профиля.

Loadырь
у меня снова вопрос)) в файле шаблона мы получаем данные из объекта $field — а где его заполнять? посмотрел на класс cmsFormField — там тоже не увидел… как заполнить его моими данными?) спасибо)
#5 Подскажите как лучше сделать.. 20 сентября 2017 в 18:07

В файле github.com/instantsoft/icms2/blob/master/templates/default/assets/fields/list.tpl.php вы рисуете внешний вид вашего поля каким его увидит пользователь при редактировании своего профиля.

Loadырь
да)) спасибо) я тоже про это думал))
что еще обнаружил)) в этом файле templates/default/assets/fields/list.tpl.php шаблон отображает не только то что видит пользователь у себя в редактировании профиля, но и то что видим при поиске пользователей test3.ru/users
а как внести корректировки в поиск пользователей? по сути же оно будет пытаться искать используя стандартный механизм дополнительных полей…

Спасибо.
#6 Подскажите как лучше сделать.. 20 сентября 2017 в 16:16
попробуйте в кабинете хостинга найти что то типа "mod_pagespeed" в модулях PHP и отключите… а вообще лучше отдельную тему писать — а не оффтопить в другой)
#7 Подскажите как лучше сделать.. 20 сентября 2017 в 15:26
В общем добавить кастомное поле какое мне нужно — у меня так и не получилось… толи я не понял как это правильно сделать… толи еще что то..
я просто сделал модуль, пока что только админку, в ней строю дерево нужных мне значений… все записывается в табличку, валидируется, в общем все хорошо..

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

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

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

п.с. пока что от instantCMS только положительные эмоции))
#8 Не работает addToolButton 19 сентября 2017 в 20:41
извините)) я слепошара)))
  1. 'toolbar' => false,
исправил) теперь есть))
#9 Не работает addToolButton 19 сентября 2017 в 20:37
вот дословно))
  1.  
  2. <?php
  3.  
  4. if ($do == 'add') {
  5. $page_title = LANG_USERTYPE_ADD;
  6. }
  7. if ($do == 'edit') {
  8. $page_title = LANG_USERTYPE_EDIT;
  9. }
  10.  
  11. $this->setPageTitle($page_title);
  12. $this->addBreadcrumb(LANG_USERTYPE_TITLE, $this->href_to(''));
  13. $this->addBreadcrumb($page_title);
  14.  
  15.  
  16. $this->addToolButton(array(
  17. 'class' => 'cancel',
  18. 'title' => LANG_USERTYPE_DELETE,
  19. 'href' => ""
  20. ));
  21.  
  22. echo "<h2>$page_title</h2>";
  23.  
  24. $this->renderForm($form, $type, array(
  25. 'action' => '',
  26. 'method' => 'post',
  27. 'toolbar' => false,
  28. ), $errors);
  29.  
#1 Не работает addToolButton 19 сентября 2017 в 20:02
Помогите пожалуйста)) делаю админку для компонента.

хочу добавить меню с кнопкам быстрого редактирования...
пробую и через экшен
  1. cmsTemplate::getInstance()->addToolButton(array(
  2. 'class' => 'add',
  3. 'title' => LANG_USERTYPE_ADD,
  4. 'href' => ""
  5. ));
и пробую в самом шаблоне form_type.tpl.php
  1. $this->addToolButton(array(
  2. 'class' => 'save',
  3. 'title' => LANG_USERTYPE_ADD,
  4. 'href' => ""
  5. ));
ничего не добавляется)) что делаю не так?)) в форме ничего необычного..
  1. public function init() {
  2.  
  3. $model=cmsCore::getModel('usertype');
  4. $types = $model->getTypes();
  5. $types = $model->buildTypesFlatFromTree($types, 0);
  6. $types = $model->buildTypesForSelect($types);
  7. $types = array(0 => LANG_USERTYPE_ROOT) + $types;
  8.  
  9.  
  10.  
  11. $form = array(
  12. 'type' => 'fieldset',
  13. 'childs' => array(
  14. new fieldList('pid', array(
  15. 'title' => LANG_USERTYPE_SELECT_PARENT,
  16. 'default' => '0',
  17. 'items' => $types
  18. )),
  19. new fieldString('title', array(
  20. 'title' => LANG_USERTYPE_NAME_TITLE,
  21. 'hint' => LANG_USERTYPE_NAME_TITLE,
  22. 'rules' => array(
  23. array('required'),
  24. array('max_length', 255),
  25. array('min_length', 3),
  26. ),
  27. )),
  28. new fieldImage('icon', array(
  29. 'title' => LANG_USERTYPE_ICON,
  30. 'hint' => LANG_USERTYPE_ICON,
  31. 'options' => array(
  32. 'sizes' => array('small', 'normal', 'big'),
  33. ),
  34. )),
  35. ),
  36. );
  37.  
  38. return array($form);
  39. }
форму вот так рендерю..
  1. $this->renderForm($form, $type, array(
  2. 'action' => '',
  3. 'method' => 'post',
  4. 'toolbar' => false,
  5. ), $errors);


Спасибо))
#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 Подскажите как лучше сделать.. 17 сентября 2017 в 16:32
Спасибо большое всем за ответы) посмотрел я поля профиля...
похоже не совсем то что мне нужно..
при создании новых полей профиля в табличке cms_users создается новый столбец. кстати интересная реализация поиска по предустановленным)) понравилось))

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

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

или я недостаточно разобрался в сути кастомных полей и их добавления?
Спасибо.
#12 Подскажите как лучше сделать.. 16 сентября 2017 в 20:14

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

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

Спасибо))
#13 Подскажите как лучше сделать.. 16 сентября 2017 в 19:46

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

garry
привет)) рад видеть)) да я давно смотрел на instantcms, еще помню когда второй версии не было) а тут клиенту надо было сделать сайт… я думал сначала на yii2 начать что то мастерить) а потом понял что тут почти все что нужно есть)) даже больше))) пару модулей сделать — клиент получит то что он хотел)) а я с новой CMS разберусь))
#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 Там где Контакты, Предпочтения

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

Спасибо)
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.