Как автоматом генерировать заголовок из контента на двойке?
Отсель мораль. Нужно либо автоматом генерировать заголовки, либо отображать в админке начало самого контента для работы администраторов с этим контентом.
Для экономии базы было бы предпочтительней отображать в админке первые 30 символов самого контента, а не формировать дополнительные 30 символов в заголовок.
Кто что сможет посоветовать по этому поводу и как можно это реализовать?
Аналогично сделано еще в 11-ом годе при помощи Coza Nostra и других понимающих людей:
newostrie.ru/
Потом была предпринята вполне успешная попытка сделать новый компонент на 1.10.6 (из фака, конечно, но отдельный).
otsrie.ru/
Теперь меня посетила безумная мысль запилить всё это на двойке, но наткнулся на целую гряду подводных камней...
Посмотрите как это устроено в компоненте FAQ если первая ветка. Тот же принцип
Вот как раз в первой ветке в админке отображается сам контент, а во второй пустые строки. Оно хочет заголовков.
Заголовки можно не генерировать и не засорять базу. Вместо этого можно отображать в админке сам контент, если изменить grid_content_items.php следующим образом:
<?php function grid_content_items($controller, $ctype_name=false){ 'is_auto_init' => false, 'is_sortable' => true, 'is_filter' => true, 'is_pagination' => true, 'is_draggable' => false, 'is_selectable' => true, 'order_by' => 'id', 'order_to' => 'desc', 'show_id' => true ); 'title' => 'id', 'width' => 30, 'filter' => 'exact' ), 'title' => LANG_TITLE, 'href' => href_to($ctype_name, 'edit', '{id}') . '?back=' . href_to($controller->name, 'content'), 'filter' => 'like' ), 'title' => LANG_DATE, 'width' => 80, 'handler' => function($value, $item){ return html_date($value); } ), 'title' => LANG_ON, 'width' => 40, 'flag' => true, ), 'title' => LANG_AUTHOR, 'href' => href_to('users', '{user_id}'), 'order_by' => 'u.nickname', ), ); 'title' => 'id', 'width' => 30, 'filter' => 'exact' ), 'title' => LANG_TITLE, 'href' => href_to($ctype_name, 'edit', '{id}') . '?back=' . href_to($controller->name, 'content'), 'filter' => 'like' ), 'title' => LANG_DATE, 'width' => 80, 'handler' => function($value, $item){ return html_date($value); } ), 'title' => LANG_ON, 'width' => 40, 'flag' => true, ), 'title' => LANG_AUTHOR, 'href' => href_to('users', '{user_id}'), 'order_by' => 'u.nickname', ), ); 'title' => LANG_VIEW, 'class' => 'view', 'href' => href_to($ctype_name, '{slug}.html') ), 'title' => LANG_EDIT, 'class' => 'edit', 'href' => href_to($ctype_name, 'edit', '{id}') . '?back=' . href_to($controller->name, 'content') ), 'title' => LANG_DELETE, 'class' => 'delete', 'href' => href_to($ctype_name, 'delete', '{id}') . '?back=' . href_to($controller->name, 'content'), 'confirm' => LANG_CP_CONTENT_ITEM_DELETE_CONFIRM ) ); if ($ctype_name=='anec'){ 'options' => $options, 'columns' => $columns_anec, 'actions' => $actions ); } else { 'options' => $options, 'columns' => $columns, 'actions' => $actions ); } }
Теперь проблема следующая. Как обрезать текст анекдота в админке?
subsrt('content',0 ,40) => array(
не прокатывает…