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

InstantCMS 2.X
#16 20 сентября 2017 в 16:22


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

kaktus

ModPagespeed выключил и работает!!! БЛАГОДАРЮ + вам
#17 20 сентября 2017 в 16:35

в данном случае как я вижу "Предустановленные значения" для всех типов предустановленных полей актуально… а для моей задачи неактуально..

kaktus
И не стоит так печалиться. Просто не используйте его и всё.

В методе public function getOptions() тоже можете ничего не выводить, если не будут использовать некие опции.

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

В методе github.com/instantsoft/icms2/blob/master/system/fields/image.php#L102 public function store($value, $is_submitted, $old_value=null)
вы полученные от пользователя данные вашего поля обрабатываете и сохраняете куда угодно.

В методе public function parse($value) вы собираете данные откуда угодно, обрабатываете, как хотите и передаёте готовый результат на фронт в профиле пользователя.
#18 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
а как внести корректировки в поиск пользователей? по сути же оно будет пытаться искать используя стандартный механизм дополнительных полей…

Спасибо.
#21 20 сентября 2017 в 22:12

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

Loadырь
у меня снова вопрос)) в файле шаблона мы получаем данные из объекта $field — а где его заполнять? посмотрел на класс cmsFormField — там тоже не увидел… как заполнить его моими данными?) спасибо)
#22 21 сентября 2017 в 06:35
При установке поля в профиле, в таблице cms_users создаётся ячейка, в которой должны храниться данные выбранные пользователем. Эти данные потом доступны в переменной $value либо обрабатываются и передаются через getInput($value).
github.com/instantsoft/icms2/blob/master/system/fields/list.php#L137
Если $value это массив, то в базе данных он хранится в виде строки и при выводе его нужно преобразовать из yml в array
#23 21 сентября 2017 в 09:41

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

Loadырь
Благодарю)) а то я уже начал колхозить и в вьюхе из модели данные доставать)
#24 21 сентября 2017 в 21:51
Опять кое на чем застрял..
в профиле test3.ru/users/2 мое кастомное поле отображается только тогда — когда было что то заполнено в оригинальном кастомном поле..
т.е. если в табличке cms_users в столбце значений кастомного поля не стоит NULL тогда все отлично отображается… если же установлено NULL то в пофиле ничего не вижу… как это обойти? или что то записывать туда когда значения есть в моей табличке?
#25 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
а в отдельную табличку… у меня там связь многое ко многим...
чувствую еще и с поиском заморока будет))
#26 22 сентября 2017 в 07:21

если в табличке cms_users в столбце значений кастомного поля не стоит NULL тогда все отлично отображается… если же установлено NULL то в пофиле ничего не вижу… как это обойти?

kaktus
В методе parse() пробовали передавать?
  1. if (is_null($value)){return true; // или чего-то ещё}
#27 22 сентября 2017 в 08:47

В методе parse() пробовали передавать?

Loadырь
пробовал)) я все методы перебрал внимательно из класса cmsFormField… ни в одном не смог заставить отображаться кастомное поле если у него в базе null) а потом пошел посмотрел как работает отображение этих полей, и увидел что там тупо стоит проверка… если в табличке нулл — то не отображать… если неНулл)) то отображать)

а пока что у меня вот такая вот структура компонента
1. Сделал компонент, с помощью него работаю с табличкой которую создал (usertype) структура таблички классическая id pid name
2. Сделал кастомное поле "Тип профиля", сделал табличку usertype_values с столбцами id usertype_id user_id (кстати без автоинкрементного поля не получилось сделать табличку, модель ругается)))… и из редактирования профиля заполняю табличку значениями… ну и выбираю из нее данные соответственно когда надо…

по сути то мне осталось теперь эти две мои таблички начать учитывать в результатах поиска вот тут test3.ru/users ))
с этим еще не разобрался… на данный момент по кастомным полям ищется внутри таблички users — а мне надо джоинить получается мои таблички…
разбираюсь)) пока туго))
#28 22 сентября 2017 в 08:53
кстати отображение дополнительного поля только в профиле сделал…
а в поиске пользователей test3.ru/users еще не отображается)) тот хук только на профиль влияет)
#29 22 сентября 2017 в 09:07

сли у него в базе null

kaktus
В таком случае, если поле должно выводится всегда, то может есть смысл сделать параметр $sql не NULL
  1. public $sql = 'int NULL DEFAULT NULL';
а "0"
  1. public $sql = 'int NOT NULL DEFAULT '0'';
#30 22 сентября 2017 в 09:46

В таком случае, если поле должно выводится всегда, то может есть смысл сделать параметр $sql не NULL

Loadырь
я думал про это… но оно то у меня не всегда выводится… а если есть предустановленные значения в моей табличке usertype_values (те которые я в профиле устанавливаю… ) там же связь многое ко многим… вот и ее проверять надо)
Спасибо))
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.