Как сделать сборный заголовок в одном из Типов контента

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X
#1 10 июля 2018 в 08:07
На одном из проектов для одного Типа контента напрашивается функционал по созданию сборного заголовка!
То есть надо чтобы начало заголовка выбиралось из списка, например:
План на тему:
Презентация на тему:
.........
а далее пользователь мог бы вписывать свою тему.

Далее это начало участвует в сортировке Наборами.С наборами все понятно.

А вот как сделать сборные заголовки?
Стандартно в Поле Заголовок можно внести предустановленные значения, но нет возможности их выбирать.
#2 10 июля 2018 в 08:23
Создать поле типа список, в предустановленными значениями:
План на тему:
Презентация на тему:
.........
или
План
Презентация
.........
А в заголовке пользователь будет писать саму тему.
В шаблоне в месте вывода заголовка выводить сначала значение поля список, а потом сам заголовок через двоеточие или "[Значение списка (План)] на тему: [Заголовок]". В итоге в фильтре можно отбирать отдельно планы, презентации и т.п. и заголовок будет нужным форматом.
#3 10 июля 2018 в 08:38

В шаблоне в месте вывода заголовка выводить сначала значение поля список, а потом сам заголовок через двоеточие или "[Значение списка (План)] на тему: [Заголовок]"

Loadырь
Спасибо! Попытаюсь реализовать. Первая мысль была о хаке с внедрением списка с выбором прямо в заголовоке
Есть ли такое решение?

В итоге в фильтре можно отбирать отдельно планы, презентации и т.п. и заголовок будет нужным форматом.

Loadырь
А вот это навряд ли, пользователи будут вносить вносить информацию в уже действующий Тип контента в который инфа парсится из других источников. Поэтому и выбор за сортировку Наборами.
Если есть иные решения, предлагайте.
#5 10 июля 2018 в 09:41
Спасибо, но объясните, как мне это может помочь? Интересуют реальные Заголовки, а не выдача в SEO
#6 10 июля 2018 в 10:08
vikont, Loadырь дело советует. В шаблоне с помощью $this->setPageTitle('заголовок'); можно задать любой заголовок.
Скопировать default_item.tpl.php, назвать его как тип_контента_item.tpl.php и мудрить с заголовком. В этом файле доступно содержимое всех полей.
#7 10 июля 2018 в 10:44

vikont, Loadырь дело советует.

Zau4man
Спасибо! Общий принцип мне понятен, дело за реализацией!
Пока столкнулся с тем, что в таблице уже насчитывающей более 100 к записей не могу создать новое поле! Вылетает по ошибке 500. Буду разбираться.
Второй проблемой (учитывая мои знания) будет само прописывание слияния двух полей в Заголовке.
#8 10 июля 2018 в 11:47

Интересуют реальные Заголовки, а не выдача в SEO

vikont
Причем здесь выдача? Этим полем можно сгенерировать любые тексты из любых других полей и вывести их в любом месте страницы. Другое дело, что для системного поля title нельзя выбрать другой тип — там строка зашита. Но можно его скрыть, а полем, которое привел в пример lakomet, вывести вместо заголовка всё, что угодно. Без правки файлов.
#9 10 июля 2018 в 15:31

vikont, Loadырь дело советует.

Zau4man
Вот например вывел этим полем в качестве заголовка другое поле.
#10 10 июля 2018 в 18:08

Вот например вывел этим полем в качестве заголовка другое поле.

Олег с клещами
А можно пример самого кода для вывода заголовка?
#11 10 июля 2018 в 18:36
В файле github.com/instantsoft/icms2/blob/master/templates/default/content/default_item.tpl.php#L2 в строке 2 это для просмотра записи, и в файле github.com/instantsoft/icms2/blob/master/templates/default/content/default_list.tpl.php#L21 в строке 21, это для просмотра списка, пропишите это
  1. <?php
  2. $title_prefix = '';
  3.  
  4. if (!empty($fields['type']['is_in_item'])){
  5.  
  6. $title_prefix = $fields['type']['handler']->setItem($item)->getStringValue($item['type']);
  7.  
  8. unset($fields['type']);
  9.  
  10. }
  11.  
  12. $item['title'] = $title_prefix . ' по теме: ' . $item['title'];
  13. ?>
где слова type это системное название поля типа список, замените на свои.
#12 10 июля 2018 в 19:12
Вот это подарок! Большущее спасибо!
А я уже начал смотреть github.com/instantsoft/icms2/blob/master/templates/default/content/default_list.tpl.php в строках 29-32 копаться!
Вовремя остановили мои тупиковые изыскания...
Шаблон github.com/instantsoft/icms2/blob/master/templates/default/content/default_list.tpl.php я переименую, а вот github.com/instantsoft/icms2/blob/master/templates/default/content/default.tpl.php остается неизменным и уязвим для обновлений! Я правильно думаю?
#13 10 июля 2018 в 19:27
Вам нужно не переименовать их, а сделать копию и копию назвать "типконтента_item.tpl.php" и "типконтента_list.tpl.php", соответственно. Эти файлы не будут изменяться при обновлениях.
#14 10 июля 2018 в 20:54

Вам нужно не переименовать их, а сделать копию и копию назвать "типконтента_item.tpl.php" и "типконтента_list.tpl.php", соответственно. Эти файлы не будут изменяться при обновлениях.

Loadырь
Не знал о таком нюансе… Когда создаешь файл шаблона "типконтента_item.tpl.php" где вместо "типконтента" пишется системное имя Типа контента, то в настройках этого типа контента исчезают настройки выбора шаблона для просмотра!!!
Но все работает!!!
#15 11 июля 2018 в 09:37
Перед закрытием темы есть вопрос:
"Как будет выглядеть код, если понадобится не одна вставка списка с выбором в заголовок, а несколько?"
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.