Как убрать изображение из тизера

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

Аватар пользователя nashaplaneta nashaplaneta 21 июня 2012 в 15:21

Я совсем новичок в Drupal. Но на новом сайте хочу сделать так, чтобы при выводе тизера изображение, вставленное в тексте (изображения обычно добавляю в начало статьи) не попадало в тизер. Очевидные решения по типу сделать для изображения display:none знаю, такие не подходят. Интересует именно чтобы на этапе формирования тизера для новой статьи в базу попадал текст тизера без изображения. Если подскажете, где формируется тизер (в каком модуле, какими функциями) при сохранении статьи, тоже буду благодарен и попробую с кодом разобраться сам.

Комментарии

Аватар пользователя emzzy emzzy 21 июня 2012 в 16:40

"nashaplaneta" wrote:
Интересует именно чтобы на этапе формирования тизера для новой статьи в базу попадал текст тизера без изображения.

Тизер формируется простым обрезанием текста до определенного количества символов. Поэтому формирование тизера без изображение, вам нужно сделать на этапе вывода. Например для тизера выбрать текстовый формат - filtered html - он вырежет все теги, которые в нем не разрешены.

Аватар пользователя nashaplaneta nashaplaneta 21 июня 2012 в 17:37

"emzzy" wrote:
Тизер формируется простым обрезанием текста до определенного количества символов. Поэтому формирование тизера без изображение, вам нужно сделать на этапе вывода. Например для тизера выбрать текстовый формат - filtered html - он вырежет все теги, которые в нем не разрешены.

Насколько я понимаю, все не совсем так. Тизер формируется на этапе сохранения или редактирования материала и сохраняется в базе данных в таблице node_revision. Там есть поле,которое содержит сформированный материал, и он выводиться на экран в том виде, в каком там сохранен. Причем формируется он не простым обрезанием, а сложной процедурой, учитывающей абзацы и теги, иначе получались бы обрезанные теги. Вот в эту процедуру я и хочу внести изменения, чтобы влиять на формированный тизер. Где она (эта процедура) находиться? Вырезать лишние теги в node.tpl из переменной как вариант рассматривал, но зачем нагружать еще одной процедурой на выводе каждый раз и нагружать сервер, если это можно сделать на вводе один раз.

Аватар пользователя emzzy emzzy 21 июня 2012 в 17:45

"nashaplaneta" wrote:
Там есть поле,которое содержит сформированный материал, и он выводиться на экран в том виде, в каком там сохранен. Причем формируется он не простым обрезанием, а сложной процедурой, учитывающей абзацы и теги, иначе получались бы обрезанные теги.

Поле не выводиться в таком виде, в каком оно сохранено. Для того, чтобы не получилось обрезанных тегов, как раз и используются текстовые форматы - они формируют вывод на этапе вывода, а не сохранения.

Аватар пользователя nashaplaneta nashaplaneta 21 июня 2012 в 19:11

"emzzy" wrote:
Поле не выводиться в таком виде, в каком оно сохранено. Для того, чтобы не получилось обрезанных тегов, как раз и используются текстовые форматы - они формируют вывод на этапе вывода, а не сохранения.

Честно говоря, не могу понять, о чем вы. Поле teaser в таблице node_revision содержит текст тизера в том виде, в котором он выводится на экран, т.е. в обрезанном, и естественно с учетом тегов. формируется он при сохранении материала, и никак не при его выводе на экран. На экран выводиться именно содержание поля teaser из таблицы node_revision, возможно и с какой то обработкой, но не более того. Вот какой процедурой и где это поле формируется, мне и нужно, чтобы убрать ненужный тег на этапе формирования этого поля. Если знаете другое решение, про которое говорите, просто подскажите, где что включить, я реально не пойму о чем вы.

Аватар пользователя nashaplaneta nashaplaneta 21 июня 2012 в 19:14

"Alexei91" wrote:
Почитайте про текстовые форматы Dr-l.

Похоже, гугл не знает, что такое "текстовые форматы Dr-l". Где поискать, что это, и как они относятся к теме?

Аватар пользователя nashaplaneta nashaplaneta 21 июня 2012 в 19:23

"nashaplaneta" wrote:

"Alexei91" написал(а):
Почитайте про текстовые форматы Dr-l.
Похоже, гугл не знает, что такое "текстовые форматы Dr-l". Где поискать, что это, и как они относятся к теме?

А, дошло через несколько минут, что Dr-l это Drupal Smile

Аватар пользователя makkon makkon 21 июня 2012 в 19:38

http://drupal.org/node/104659
http://www.drupal.ru/node/53457

материалов на самом деле много.вариантов тоже много. от css, хуков до темизации.

самое простое и наглядное - убирание тега во всем тизере через темизацию tpl.php. во многих темах даже сам тизер вынесен в переменную $teaser. скажем так, это происходит уже после того, как все срендерено, но еще до вывода на экран.

почитайте ссылки, которые выше, там довольно подробно и с примерами.

правильнее конечно через хук в своем модуле, либо в template.php в препроцессе над нодой произвести необходимые манипуляции. это как раз на момент рендеринга происходит.

Аватар пользователя nashaplaneta nashaplaneta 21 июня 2012 в 19:45

"makkon" wrote:
материалов на самом деле много.вариантов тоже много. от css, хуков до темизации.
самое простое и наглядное - убирание тега во всем тизере через темизацию tpl.php. во многих темах даже сам тизер вынесен в переменную $teaser. скажем так, это происходит уже после того, как все срендерено, но еще до вывода на экран.
почитайте ссылки, которые выше, там довольно подробно и с примерами.
правильнее конечно через хук в своем модуле, либо в template.php в препроцессе над нодой произвести необходимые манипуляции. это как раз на момент рендеринга происходит.

Спасибо, но про эти методы я в курсе, они все на этапе вывода. Проще, в конце концов, через View при выводе поля тизера убрать все теги (для этого там есть галочка, и на этом пока и остановился). Мне бы повлиять именно на формирование тизера на этапе ввода (записи его в поле teaser таблицы node_revision, чтобы один раз и все, а не при каждом выводе его вырезать. Вот мне бы кто подсказал, где он формируется и записывается в базу, я б его там и.....

Аватар пользователя multpix multpix 21 июня 2012 в 20:52

"nashaplaneta" wrote:

есть еще момент:
попробуйте практиковать разделение разнотипных данных по разным полям

имг отдельно, текст отдельно
имхо - визуальные редакторы в D это зло)

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

хорошо структурированный по полям материал и вьюс - очень мощная связка.

Аватар пользователя nashaplaneta nashaplaneta 21 июня 2012 в 22:16

"multpix" wrote:
есть еще момент:
попробуйте практиковать разделение разнотипных данных по разным полям
имг отдельно, текст отдельно
имхо - визуальные редакторы в D это зло)
такой подход дает больше возможностей для представления контента, для повышения его интерактивности.
хорошо структурированный по полям материал и вьюс - очень мощная связка.

Ну, я в общем так и делаю. Изображения загружаю через CCK+field_image, upload и lightbox, но ведь их все равно в текст статьи приходиться вставлять, где они сохраняются в виде тэгов. Ну и вывод анонсов (тизеров) как раз через views реализую. Ну, в общем, пока остановился на очистке тэгов в формате поля во views + форматирование через css. Вроде пока результат здесь и здесь (оба через views) устраивает, на нем и остановлюсь.
Всем спасибо большое.

Подытоживаю решение:
Чтобы из сформированного тизера удалить изображения и все теги, можно его выводить через модуль views при этом включить для выводимого поля опцию Strip HTML tags.
Другой вариант, обрабатывать содержимое текста тизера в переменной для вывода (вроде бы $teaser) непосредственно при выводе в темизации с помощью своих функций.