Писать на форуме DIAFAN.CMS могут только зарегистрированные пользователи. Войдите или зарегистрируйтесь.

Форум Сайт на DIAFAN.CMS Вопросы от новичков Вывести заголовок категории H1 из дополнительного поля


Евгений (evvdemin) Сайт в Diafan.Cloud129 января, вторник

Всем привет. Хочу для категории вывести заголовок H1, отличный от названия категории. С задачей добавления дополнительного поля в админке и базе данный справился, а вот вывести - никак не получается, что только не правил, какие способы только не использовал.
Подскаже, пожайлуйста, какие файлы методы поправить?

Андрей (R4W) 6929 января, вторник

в модельке метод ищи соответствующий
Спасибо сказали: Евгений (evvdemin)

Сергей (universe) 7329 января, вторник, редакция 29 января, вторник

Самое простое, через Дин блок вывести.
Добавление поля в базу это крайний вариант.
Спасибо сказали: Евгений (evvdemin)

Андрей (R4W) 6930 января, среда

Ну кстати да. Совсем уже программизм мозгом завладел, что простейшие способы стал забывать ))
Спасибо сказали: Сергей (universe)

Степан (idxdoc) 14030 января, среда, редакция 30 января, среда

Со мной та же фигня))
Спасибо сказали: Сергей (universe)

Евгений (evvdemin) Сайт в Diafan.Cloud130 января, среда

Хороший способ, спасибо. Сделал через базу, наверное должно быстрее работать..

Сергей (universe) 7330 января, среда

Экономия на спичках) Мы вот пару проектов обновляли недавно с 5.4 версии древних годов (2015-2016) и там была кастомизация по причине новых полей в базе. При обновлении до последней версии с этим начинаются проблемы, так как не всегда выполнена частичная кастомизация, проще отрубать модельки разные (в том числе выводы в админке).
Идея простая - если есть возможность не трогать системные файлы, даже с частичной кастомизацией, лучше их не трогать.

Степан (idxdoc) 14029 января, вторник

shop.model.php
Код

private function list_category_query()
{
if($this->diafan->_route->page > 1)
{
$fields = ", '' AS text";
}
else
{
$fields = ", [text]";

Показать весь код
}
foreach ($this->diafan->_languages->all as $l)
{
$fields .= ', act'.$l["id"];
}
$row = DB::query_fetch_array("SELECT id, [name], СЮДА НАЗВАНИЕ СВОЕГО ИМЕНИ, [anons], [anons_plus] ".$fields.", timeedit, [descr], [keywords], [canonical], sort, parent_id, [title_meta], access, theme, view, view_rows, [act], noindex FROM {shop_category}"
." WHERE id=%d AND trash='0' AND site_id=%d"
.(! $this->is_admin() ? " AND [act]='1'" : '')
." ORDER BY sort ASC, id ASC", $this->diafan->_route->cat, $this->diafan->_site->id);
return $row;
}


Правильно будет создать файл shop.model.custom.php
Спасибо сказали: Евгений (evvdemin)

Евгений (evvdemin) Сайт в Diafan.Cloud130 января, среда

Спасибо за ответы, вчера в 3 ночи все таки осилил задачку. Дайте, пожалуйста, оценку, правильно ли я сделал (все работает), но.

1. Скопировал в папку шаблона в custom файл shop.model.php, подправил SQL запрос в функции list_category_query(), как указано в ответе выше.

2. Скопировал в папку шаблона в custom файл model.php, добавил в функцию protected function meta_cat($row) такую строку: $this->result["header"] = $row["header"];

3. Скопировал в папку шаблона в custom файл controller.php, добавил в функцию public function get_global_variables() строку: if (! empty($this->result["header"]))
{
$this->diafan->_site->headermodule = $this->result["headermodule"];
}

4. Заголовок везде доступен для вывода следующим образом $this->diafan->_site->header;

Все работает, но меня смущает кастомизация таких важных файлов.

Сергей (universe) 7330 января, среда, редакция 30 января, среда

Вы все слишком усложнили.
В вашем случае каждый затронутый кусок кода надо выносить из файла в кастомизацию. https://www.diafan.ru/dokument/full-manual/developers/api/custom/

Из варианта с динамическим блоком все проще. Создали дин блок для категорий. Далее в зависимости от вашего шаблона вывели заголовок во вьюхе вашего файла (мы делаем условие - если дин блок заполнен - выводим его, если нет - выводит стандартный h1)
Все. Никаких файлов кроме вьюхи не затронуто.
Спасибо сказали: Евгений (evvdemin)

Виталий (DIAFAN.CMS) 63430 января, среда

shop.model.php зря в кастом перекинули, сейчас вот обновление выйдет, а у Вас там старый лежит, считай не получили. Или shop.model.custom.php надо было делать или дин.блок, да. Всё правильно старожилы говорят.
Ваш вариант работать будет, но это недальновидный костыль. Точнее палка в колеса ;)
Спасибо сказали: Евгений (evvdemin)

Евгений (evvdemin) Сайт в Diafan.Cloud130 января, среда

Все переделал на частичную кастомизацию, спасибо вам за оперативные подсказки! Работаю с цмс-кой второй день и она мне очень нравится :)
Как бы теперь это поле в импорт-экспорт категорий затянуть? Ни новое поле из базы, ни динамический блок там сами не появляются))

Андрей (R4W) 6930 января, среда

Вы прям по воробью из пушки :)

Но за скорость входа в программирование на Diafan вам респект ))
Спасибо сказали: Евгений (evvdemin)

Евгений (evvdemin) Сайт в Diafan.Cloud130 января, среда

Спасибо! После нескольких лет на битриксе, это удовольствие, как все элегантно решается))
Спасибо сказали: Сергей (universe)

Степан (idxdoc) 14030 января, среда

Добро пожаловать в наши ряды :)
Еще 1 смыслящий разработчик это круто))
Спасибо сказали: Евгений (evvdemin)

Denis (Drachoon) 13930 января, среда

Есть один знакомый Битриксоид. Ему говорят: "Да брось. Давай 1 проектик хотя бы на Diafan`е". "Нет": говорит - "Битра моё всё". Никак не хочет человек.
А тут, опа - взял человек и попробовал. И всё получилось.