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

Главные вкладки

Аватар пользователя AffMaster AffMaster 15 мая 2008 в 18:14

Как сделать, чтобы при добавлении статьи пользователями было всегда два поля: анонс статьи (его длина должна быть ограничена) и полный текст статьи?

Комментарии

Аватар пользователя Portnov Portnov 15 мая 2008 в 21:25

Добавляем с помощью cck новое поле, с именем скажем field_announce, отмечаем как обязательное, устанавливаем ограничение на длину. На вкладке Шаблон ставим галочку "Применить к выводу teaser" в разделе Анонс, там пишем например так:

<?=$node->field_announce?>

Всё, собственно. Вместо тизеров будут показываться "анонсы".

Аватар пользователя batbug batbug 16 мая 2008 в 9:46

Граждане! Извините за резкий тон, но вы что - издеваетесь?

> Как сделать, чтобы при добавлении статьи
> пользователями было всегда два поля:
> анонс статьи (его длина должна быть ограничена)
> и полный текст статьи?

в 6ке официально есть такая возможность. И не надо городить тут ССК

Аватар пользователя AffMaster AffMaster 16 мая 2008 в 10:55

В 6ке по умолчанию выводится поле для основной части статьи и есть дурацкая кнопочка при нажатии на которую появляется поле анонса. Т.е по умолчанию анонса нет. Мне нужно чтобы было два поля и никакой дурацкой кнопочки.

Аватар пользователя AffMaster AffMaster 16 мая 2008 в 11:15

Странно, но манипуляции описанные Portnov никак не влияют на форму добавления статьи. То ли дело в версии, то ли я что-то не понимаю. Вообще сколько бы я не менял шаблон в contemplates - форма добавления никак не меняется.

Аватар пользователя PanDa777 PanDa777 23 мая 2008 в 10:05

Пишется функция, реализующая hook_form_alter. Покопайтесь - посмотрите. в каком виде приходит форма и измените её...

Аватар пользователя AffMaster AffMaster 23 мая 2008 в 23:45

Нашел решение проблемы сам. Проблема решается элементарно, не нужно никаких дополнительных модулей (только CCK) и никаких хитрых приемов. Нужно просто выключить стандартное поле контента для этого типа материала и добавить вместо него с помощью CCK два новых поля - анонс и полный текст. Все.

Аватар пользователя PanDa777 PanDa777 24 мая 2008 в 18:36

Если вас так устраивает - хорошо. Только теряется функциональность автоматического дублирования анонса - в краткой и полной версии. Дабы проиллюстрировать свои слова, быстро написал вчера модуль - но не выложил, ибо 500 error была на сервере. Сейчас прикладываю. А по hook_form_alter замечательно подходит первая ссылка в GoogleDrupal API.

Аватар пользователя AffMaster AffMaster 24 мая 2008 в 17:45

Я конечно согласен, что предложенный вами способ более правильный, но мне не хватает знаний чтобы такое сделать. Ваш модуль у меня почему-то не работает (версия 6.2). Просто ничего не меняется. Нужные типы ноды в коде прописывал.

Аватар пользователя PanDa777 PanDa777 24 мая 2008 в 19:06

Раз не надо - ну и ладно. Просто, раз сделал, то уж выложил.

P.S. Несколько поправил. Будет время и желание - можете проверить...

Аватар пользователя AffMaster AffMaster 24 мая 2008 в 18:53

Если поправите, выложите пожалуйста, мне на самом ваш вариант больше нравится, т.к. сохраняется автоматическое дублирование анонса, но сам я пока не могу такой модуль написать:)

Аватар пользователя PanDa777 PanDa777 24 мая 2008 в 21:59

Тогда посмотрите чуть повыше - там актуальная версия. Вроде работает (у меня на типе story...) Как считаете: надо ли доводить до состояния нормального модуля (сделать нормальные настройки, например)?

Аватар пользователя AffMaster AffMaster 25 мая 2008 в 15:26

Модуль работает, спасибо. Вещь действительно полезная.
Если делать модуль так сказать для массового использования, то конечно настройки хорошо бы вынести в админку. Мне лично несложно залезть в код и поправить там нужную строчку, но не всем наверное это удобно.

Аватар пользователя AffMaster AffMaster 26 мая 2008 в 14:42

Но самое замечательное, что после установки TinyMCE пропадает и стандартная кнопка разделения на анонс и основной текст, и разделение которое делает выложенный здесь модуль split-teaser. Остается только одно поле и все..... АААААА!!!!!!!! Я уже устал от глюков Друпала.........

Аватар пользователя PanDa777 PanDa777 26 мая 2008 в 15:25

А как ставится TinyMCE?

P.S. Вряд ли это есть глюк Drupal... Скорее всего, просто TinyMCE с помощью отдельного javascript убирает поле teaser-js... В принципе, это тоже можно исправить...

Аватар пользователя AffMaster AffMaster 26 мая 2008 в 15:27

Не совсем понимаю какие есть варианты. Залил в папку модулей соответствующий модуль и сам tinymce, пошел в админку включил, права раздал. Сам tinymce работает прекрасно, но он убивает всю эту функциональность по разделению на анонс и основной текст. И базовую и ту которую дает Ваш модуль при его включении.

Аватар пользователя PanDa777 PanDa777 26 мая 2008 в 16:17

Да... Делает он это в строках 91-95 файла tinymce.module с помощью tinymce_form_alter. Попробуйте просто убрать эту функцию (закомментировать). Что получится?