A

Antuanett

+17
Репутация
6
Рейтинг
#1 Ищу туториал по созданию собственного типа поля 9 марта 2015 в 00:31
Еще такой вопрос — в связанном с id справочнике есть картинка (ссылка на картинку на стороннем сайте) — хочу ее отображать и интересует — картинка как-то закешируется или всё время будет качаться по ссылке с внешнего сайта?
#2 Ищу туториал по созданию собственного типа поля 8 марта 2015 в 17:28
Понял. Спасибо!
#3 Ищу туториал по созданию собственного типа поля 8 марта 2015 в 12:43
Хмм… У типа поля есть свой шаблон и он, вроде как, отвечает за прорисовку поля при его редактировании… А как подключить шаблон к parser?
#4 Ищу туториал по созданию собственного типа поля 8 марта 2015 в 12:02
Т.е. создаем в parserе как бы сниппет — готовый кусок html кода для вставки в шаблон? Просто обычно принято работать с html только в tpl, поэтому как-то непривычно…
#5 Ищу туториал по созданию собственного типа поля 8 марта 2015 в 02:06
Немного разобрался, но немного непонятна философия. Вот например хочу добавить собственный тип поля в профайл пользователя. Тип поля содержит целое число, являющееся id записи в справочнике. В parser вытаскиваю все поля записи. Как дальше действовать? Фильтровать вручную это поле в profile_view.tpl получать из parser массив и делать ему отрисовку? Это фен-шуй?
#6 Ищу туториал по созданию собственного типа поля 7 марта 2015 в 22:20


В конструкторе форм смотри файлы поля iforms.php и iforms.tpl.php.

Loadырь

Спасибо! Как всегда — по делу! v
Пошел читать…
#7 Ищу туториал по созданию собственного типа поля 7 марта 2015 в 22:03


Шаблон типа поля отвечает за вывод поля при его редактировании или и в просмотре тоже?

Antuanett
только за вывод при редактировании. За просмотр отвечает функция parse().

Loadырь

Спасибо! Может ткнете в пример какой-нибудь?
#8 Ищу туториал по созданию собственного типа поля 7 марта 2015 в 18:44


В помощь

Soul
Там этот вопрос не поднимался. Photobattles не использует самописные типы полей.
#1 Ищу туториал по созданию собственного типа поля 7 марта 2015 в 16:31
Посмотрел как реализованы стандартные поля, поле "Город" и не совсем понял. Шаблон типа поля отвечает за вывод поля при его редактировании или и в просмотре тоже? Я бы хотел реализовать такую схему: создать тип поля, в который пишем число (id записи в справочнике), по которому при просмотре вытаскиваем запись из таблицы и отображаем нужные нам поля.
#9 [ЕСТЬ РЕШЕНИЕ] Работа с контентом из кода 1 марта 2015 в 20:09
Спасибо ответившим. Эту задачу решил. Впереди другие… cry
#10 [ЕСТЬ РЕШЕНИЕ] Работа с контентом из кода 1 марта 2015 в 14:36
Разобрался. slug передавать не надо — делается автоматом. Еще был затык, запись создается только если авторизован на сайте, пришлось делать хак content/model.php:
  1.  
  2. if(!$item['user_id'])
  3. {
  4. $user = cmsUser::getInstance();
  5. $item['user_id'] = $user->id;
  6. }
#11 [ЕСТЬ РЕШЕНИЕ] Работа с контентом из кода 1 марта 2015 в 13:24


Antuanett, сделайте

  1. unset($item['id']);
, при в ставке в базу ИД записи само присвоится,
Эти данные
  1. $item['parent_type'] = null;
  2. $item['parent_title'] = null;
  3. $item['parent_url'] = null;
  4. $item['is_parent_hidden'] = null;
  5. $item['date_pub'] = strtotime(date('Y-m-d', time()));
  6. $item['date_pub_end'] = false;
проставятся автоматически. А вот почему у вас нет $item['user_id'], но почему-то аж два раза
  1. 'user'=>$askinguser,
  2. 'user'=>$askinguser['id'],
— непонятно. Видимо второе надо исправить на user_id. Без него запись если и пропишется в БД, то не выведется для просмотра.

Loadырь

ТОЧНО! Спасибо большое, запутался в юзере и его ид. Исправил, запись в базе создалась, но с пустым slug и is_aproved, соответственно в листинге на сайте записи не видно. Добавил в БД slug и is_aproved вручную — запись в листинге появилась, но саму запись детально посмотреть не могу — 404.
Видимо проблема в slug?
#12 [ЕСТЬ РЕШЕНИЕ] Работа с контентом из кода 1 марта 2015 в 12:33


Antuanett, Если вам нужно просто заполнить таблицу cms_con_КОНТЕНТ, покажите свой код, то что уже имеется, то есть какие переменные получаете через POST?

Evanescence
Приветствую! Спасибо, что зашли!
В POSTе получаю ряд переменных, под них есть поля в созданном мною типе контента. Вопрос что должно быть передано addContentItem($ctype, $item, $fields)? $ctype знаю, по нему получаю $fields = $content_model->getContentFields($ctype['name']), в $item передаю свои переменные, которые нужно записать, но ничего не происходит...
  1.  
  2. $content_model = cmsCore::getModel('content');
  3. $ctype = $content_model->getContentTypeByName('battle');
  4. $content_model->orderBy('ordering');
  5. $fields = $content_model->getContentFields($ctype['name']);
  6. $item=Array
  7. (
  8. 'title'=>'АвтоБой из POST',
  9. 'user'=>$askinguser,
  10. 'user'=>$askinguser['id'],
  11. 'content'=>'Мой контент',
  12. 'team1'=>'123123213,123123213,123123213',
  13. 'team2'=>'5678567567,567567567567,567567567',
  14. );
  15. unset($item['ctype_name']);
  16. unset($item['ctype_id']);
  17. $item['is_approved'] = !$ctype['is_premod_add'] || $is_moderator;
  18. $item['parent_type'] = null;
  19. $item['id'] = 55;
  20. $item['parent_title'] = null;
  21. $item['parent_url'] = null;
  22. $item['is_parent_hidden'] = null;
  23. $item['date_pub'] = strtotime(date('Y-m-d', time()));
  24. $item['date_pub_end'] = false;
  25. $item = cmsEventsManager::hook("content_before_add", $item);
  26. $item = cmsEventsManager::hook("content_{$ctype['name']}_before_add", $item);
  27. $item = $content_model->addContentItem($ctype, $item, $fields);
  28.  
#13 [ЕСТЬ РЕШЕНИЕ] Работа с контентом из кода 28 февраля 2015 в 15:30


$fields

Antuanett
получается из

$ctype

Antuanett
с помощью одного простенького метода в model. Я не стал заморачиваться, зачем они :)

Zau4man

Насколько я понимаю $fields нужен для заполнения формы… мне это как бы и не нужно.
Делаю getContentItem, получаю в $item уже имеющуюся запись и пытаюсь её же и записать с помощью addContentItem.

Не пишет. Меняю id в $item, другие поля дергаю — не хочет писать. Может из разрабов кто поможет?
#14 [ЕСТЬ РЕШЕНИЕ] Работа с контентом из кода 28 февраля 2015 в 01:11


тут в двух словах нереально. Вы посмотрите код, как формируется массив $item в экшне добавления контента.

И эта функция вам вряд ли подойдет для автонаполнения. Она требует id юзера. Лучше напрямую писать в базу через инсерт. В таблицах контента из обязательных полей вроде только title.

а о $ctype и $fields смотрите в model.php, что в папке core.

Zau4man
Спасибо за советы! Сижу, копаюсь в исходниках… Кстати в моём случае ID юзера будет поступать в POSTе, так что планирую обойтись без записи в обход модели.
Просто не совсем понимаю, зачем мне нужны $fields...$ctype и $item вполне достаточно для формирования новой записи контента.
🍪Мы используем файлы cookie для работы сайта. Читать подробнее.