Вы здесь

[РЕШЕНО] ImageField Tokens заменяет двойные кавычки на " — как вставить кавычки?

1

Добавляю Description в ноду токеном из поля.
Значение поля: «17"»
Получаю описание:«17quot;»

Вопрос: Как сделать, чтобы в дескришине оставалось значение «17"» ?

Дополню вопрос. А то, действительно непонятно задал. Извините.

Установлены модули Token и модуль Metatag.

Есть поле Диагональ. Значение в котором выглядит так «17"»

Я хочу чтобы значение этого поля автоматически передавалось модулем Token в поле Description.
Для этого вставляю токен [node:field-spec-ekr-diag].

Но получаю не «17"», а «17"»

Аналогично с полем title изображения — получаю тайт «17"»

А нужно получать «17"»

Версия Drupal: 
7.x
Связанные проекты: 
MetatagImageField Tokens
Вопрос задан 11.07.2015 - 22:03

Добавляю Description в ноду токеном из поля.

что это значит?

Комментарий оставлен 11.07.2015 - 22:15

что это значит?

Ой.
Description — мета-тег.
Это поле поддерживает токены.
Вставляя токен поля, в котором указаны «дюймы» — получаю «"»

Комментарий оставлен 12.07.2015 - 12:05

Ответы

2

Это нормальное поведение, ведь описание помещается в кавычки:
<meta name="description" content="...">
А чтобы вывести кавычку внутри кавычек, ее заменяют на &quot;

Тоже самое с тайтлом изображения. В html коде он хранится так:
<img src="..." title="17&quot;">
А при наводе мышкой:
17"

Ответ дан 12.07.2015 - 00:54

Угадали — в первом варианте.
Спасибо за ответ.
Я уточнил вопрос, а то действительно не понятно что я имею и что хочу.

Теперь понятно, что из-за двойных кавычек, в которых находится содержание само описание Description, не могут отображаться внутри вторые двойные кавычки.

Одиночные кавычки тоже преобразовываются в «'»

Думаю поисковики поймут что в результате поиска нужно показывать не код :)

А как быть с Тайтлом и Альтом изображения? Я в них тоже вставляю токеном значение поля, и получаю код вместо кавычек. Если вставляю Тайт картинки руками «"», то получаю двойные кавычки.

Я хочу чтобы поисковики считывали описание картинок с кавычками, а не с кодом. Тем более они сами говорят, что Альт и Тайт картинок нужен для людей, у которых не загрузились картинки.
Но показывать код «"» вместо двойных кавычек — не красиво.

Что посоветуете с Альтом и Тайтлом изображений?

Комментарий оставлен 12.07.2015 - 12:34

При наводе мышкой на изображение всплывает кавычка или код &quot; ?

Комментарий оставлен 12.07.2015 - 12:38

При наведении всплывает КОД
Скрин настройки поля, куда вставляется Токен - используется модуль ImageField Tokens

Комментарий оставлен 12.07.2015 - 13:10

Дело в том, что сам токен уже преобразует запись 17" в нужный вид: 17&quot;
А потом еще включается стандартный механизм преобразования друпала для атрибутов alt и title, и 17&quot; превращается в 17&amp;quot;. Эту запись вы увидете в исходном коде страницы.
Получается одно преобразование лишнее.

Это недоработка модуля ImageField Tokens, об этом сообщено в issue разработчикам. Там прикреплен патч, но я работоспособность не проверял.

Там же есть примеры, как вручную поправить модуль, если вы не против такого варианта.

Комментарий оставлен 12.07.2015 - 14:09

Если решите вручную, то в конце модуля сразу после 218 строчки

$field_data['alt'] = truncate_utf8($field_data['alt'], 512, TRUE, TRUE); // это 218 строчка, ее оставьте как есть

перед закрывающейся фигурной скобкой вставьте еще две строки:

$field_data['title'] = htmlspecialchars_decode($field_data['title'], ENT_QUOTES | 'ENT_HTML401'); // станет 219 строкой
$field_data['alt'] = htmlspecialchars_decode($field_data['alt'], ENT_QUOTES | 'ENT_HTML401'); // станет 220 строкой

и все заработает.
Что такое ENT_QUOTES | 'ENT_HTML401' смотрите на сайте php.

После этого не обновляйте модуль, пока не выйдет версия, нормально работающая со спецсимволами в токенах.

Комментарий оставлен 12.07.2015 - 16:11

Заработало.
Евгений, спасибо, что помогли найти решение!

Комментарий оставлен 12.07.2015 - 16:59