Сделал кастомное поле — "Имя сайта", грубо говоря это текстовое поле.
Сделал в админке новый тип контента "Каталог сайтов". В типе добавил мое кастомное поле — Имя сайта.
У кастомного поля кроме имени должны быть дополнительные параметры. К примеру это ТИЦ.
Для этого я сделал отдельную табличку site_params, в ней сделал столбцы
id — автоинкрементное
id_item_content — ИД записи контента что бы связать контент и дополнительные параметры
tic — собственно значение ТИЦ
так же я добавил контроллер site, там модель для работы с таблицей site_params ну и бекэенд будет… в нем будут настройки компонента.
ТИЦ определяется автоматически при добавлении сайта и периодически будет обновляться.
Поиск в этом контенте буду делать с помощью стандартных средств и если будут задаваться параметры ТИЦ то будут использовать left join
ну собственно вопрос… правильно ли я делаю..
вроде я где то натыкался на статью как делать для типа контента свою модель… а не добавлять отдельный компонент и пользоваться его моделью… но могу ошибаться)
ну и если есть где то инфа для разработчиков касаемая типов контента — киньте ссылкой пожалуйста…
наколхозить можно все что угодно… но вдруг тут есть уже то что мне нужно)) а я велосипед свой делаю))
Спасибо.
Если одна запись об одном сайте, то достаточно вывести в одном стандартном поле "Имя сайта", в другом стандартном поле вывести "тИЦ", в третьем стандартном поле вывести ещё что-то и т.д. А для заполнения "тИЦ" написать хук в вашем контроллере (content_before_add, content_after_add).
Модель привязана к контроллеру, вы можете связать один тип контента со своим компонентом, но модель без компонента не сработает.не добавлять отдельный компонент и пользоваться его моделью
в одной записи — один сайт…У вас в типе контента "Каталог сайтов" в одной записи будет "стотыщьпитсот" сайтов или одна запись в типе контента об одном сайте?
Если одна запись об одном сайте, то достаточно вывести в одном стандартном поле "Имя сайта", в другом стандартном поле вывести "тИЦ", в третьем стандартном поле вывести ещё что-то и т.д.
я как то решил что отдельной табличкой в которой будут параметры будет проще… а Ваш вариант действительно интересен… только не очень понял как это работает..
вот кстати насчет контроллера…А для заполнения "тИЦ" написать хук в вашем контроллере (content_before_add, content_after_add).
1. Я создал тип контента "Каталог сайтов"
2. Создал в нем два кастомных поля
2.1. Имя сайта текстовое поле
2.2. Тиц — числовое поле… там есть такое, плюс там есть поиск по диапазону…
3. Сделал контролер, в манифесте повесил хук который при сохранении контента будет вычислять тиц исходя из параметров поля "Имя сайта", я так понял это общий хук content_before_add для любого контента, надо будет вычислять где там мой контент добавляется… и когда вычислим то считать.
правильно?)
Спасибо)
а как связываеться?Модель привязана к контроллеру, вы можете связать один тип контента со своим компонентом, но модель без компонента не сработает.
Да, это общий хук, но есть и такие content_имятипаконтента_before_add.я так понял это общий хук content_before_add для любого контента
Если поле ТИЦ не заполняется вручную, его можно сделать скрытым с доступом для определённой группы или заморочиться с виртуальным полем.только не очень понял как это работает..
Имел в виду, что папку контроллера всё равно надо делать для своей модели.а как связываеться?
а вот если указали не правильный адрес сайта — то ничего не вычисляется естественно..
но не могу найти как в этом случае отказать в сохранении контента и вывести ошибку…
подскажите пожалуйста..
Спасибо.
не совсем понял как этим хуком воспользоваться что Вы подсказали..
спасибо…
Принцип такой: создаёте хук в своём контроллере, по $item['ctype_name'] и $item['id'] получаете поляне совсем понял как этим хуком воспользоваться что Вы подсказали
$fields = cmsCore::getModel('content')->getContentFields($item['ctype_name'], $item['id']);
если проверка прошла возвращаете, что получили, если не прошла — в $errors добавляете
$errors['название_поля']='Не угадал';