OldWarrior wrote: Ну по сути я где-то выше уже вам предложил это решение - выводить замену через представление термина, а не через токены поля. Единственный минус - поскольку представление обслуживает только вывод страницы термина (не меняя фактического значения поля) - то описание термина для использования, например, в том же модуле Metatag будет пустое. Хотя, с другой стороны, у Metatag есть собственные механизмы
А можно поподробнее? Поле Описание будет пустое и оно не нужно, а Metatag сам генерирует по токенам.
OldWarrior wrote:А сами поля-то добавлены в вывод представления?
Да, добавлены и отображаются корректно, но "сами со себе", а мне надо их выводить в одной общей текстовой области, для этого и выбираю поле "Глобальный: Пользовательский текст". Не могу только понять, с помощью каких переменных их туда засунуть. Есть только:
{{ nothing }} == Пользовательский текст
{{ arguments.tid }} == Редакция Термин таксономии: ID термина заголовок
{{ raw_arguments.tid }} == Редакция Термин таксономии: ID термина ввод
Например, ID термина могу подставить с помощью {{ arguments.tid }}, а как Название подставить - не знаю)
Комментарии
Ничего не понял. Pathauto просто делает транслитерированные синонимы - здесь тупая механика посимвольной обработки/транслитерации строки. А зачем это делать для описания термина?
Если же (ну, вдруг, угадал) нужна генерация текста описания по шаблону - ищите ИИ. Под Друпал, кстати, были какие-то модули ИИ-API.
Pathauto как пример. Metatag еще пример. Оба модуля позволяют автоматизировать (шаблонизировать или как это назвать еще, не знаю) заполнение данных. Вот мне надо тоже самое, только для описания термина (чтобы не заполнять вручную). Чтобы модуль в зависимости от словаря брал данные из нужных мне полей термина и с помощью переменных подставлял в описания, например как это делает Metatag для метатегов (там можно вручную прописывать и один раз создать шаблон, например для словаря, и будет автоматически создаваться).
Речь, видимо, идёт просто о токенах. Точнее - о паттернах подстановки значений из токенов. "Серьёзной" автоматизации здесь, по большому счёту, нет.
Тогда чем не устраивает обычный модуль Token? Он вроде бы работает в том числе и в контексте формирования описания термина. Т.е. вроде как можно подставлять значения в поле описания термина.
PS. Есть ещё Prepopulate, с помощью которого тоже можно манипулировать значениями по умолчанию при заполнении форм Друпала. Через URL строку открытия формы редактирования термина, например.
Нет, совсем не это.
Да, о Токенах, только в самом модуле Token я не нашел вообще никаких настроек. В целом, он конечно, прекрасно работает, и если заполнять описания руками, то все прекрасно. Но мне надо другое. Представьте: 1000 терминов, я не хочу вообще руками заполнять Описание 1000 раз. Мне нужно 1 раз заполнить шаблон, вписать туда необходимые переменные, я чтобы при добавлении термина все это само подставлялось (из полей этого термина). Т.е. я руками заполню для каждого термина все необходимые поля, но Описание должно формироваться полностью автоматически. Подобный функционал есть в модуле Metatag, он меня полностью устраивает, но работает только для полей с метатегами.
Посмотрите модуль Entity Prepopulate
По моему, это "в яблочко". И токены поддерживаются, и работает с формами сущностей - по идее не должно возникнуть проблем с полями сущностей терминов.
Скачал, попробовал, но есть проблема. По токенам разобрался, но не могу понять: у меня в поле Название и Описание не работают токены. Например, я хочу отобразать [language:name] и оно не работает, т.е. так и отображается текстом, а должно быть Русский. И другие токены тоже не работают. А, например, в том же Metatags все нормально отображается. Хотелось бы сначала с этой проблемой разобраться, может так и должно быть и где-то настроить надо? Уже не первый час пытаюсь разобраться и никак не получается. Использую поля с Entity Prepopulate, тоже токены отображаются текстом.
С предыдущей проблемой по токенам разобрался наконец-то, надо было Token Filter установить)
А вот с Entity Prepopulate не погу понять. В целом он работает: если создать поле, вписать токены и текст, то все отображается корректно. Также, если поставить галочку "Установить значение по умолчанию", то работает, но это значение подставляется только при создании нового термина. Если термины уже существуют, то не могу понять, как для них за один раз все сделать, т.е. чтобы не редактировать вручную 1000 терминов?
Возможно, VBO + Views Bulk Edit. А вообще - Васёк вроде бы спец по модульному кунгфу. Может, обозначится и что-то посоветует. Я бы вообще бессовестно руками-кодом всё написал. Smile
OldWarrior, полагаю, это модули делают другое, но посмотрю конечно. Вообще я по-другому решил сделать. Создал статью, в ней прописал весь необходимый текст и добавил токены, например [term:name]. Эту статью планирую выводить в качестве описания терминов таксономии. Создал представление, в нем настроил вывод содержимого статьи. Создал блок, с помощью которого вывожу представление в области Содержимое на всех страницах терминов. В итоге, почти все работает, за исключением того, что [term:name] так и отображается текстом. Полагаю, есть возможность как-то настроить через Контекстный фильтр в Представлении (чтобы подставлялся Заголовок текущего термина таксономии и, соответственно, все необходимые поля). Кажется разгадка где-то рядом, в Контекстных фильтрах. Надеюсь понятно объяснил)
Как раз таки не "что-то другое", а массовые операции на основе какого-то существующего или нового представления Views. VBO - довольно распространённый модуль для этих целей. Но отмечу, что сам с этими модулями не работал. Мне просто как-то удобнее и быстрее решать подобные задачи через тот или иной API Друпала.
Я пока понял, что вы, кажется, пытаетесь решить задачу через какой-то очень длинный проход. Wink Смотрите, у вас есть цель сделать формирование описания терминов на основании значений каких-то других полей термина - соединив их в виде какого-то паттерна и (возможно) дополнив произвольным статическим текстом.
1. Зачем тут вообще токены? Если уж копаете Views, то возможно будет проще в представлении термина таксономии динамически формировать вывод поля описания на основании других полей термина. Эти другие поля вывести из отображения дисплея Views, но оставить в выборке. А в конце - "Перезаписать содержимое поля" для описания и добавить эти скрытые поля как шаблоны замены. И ничего не нужно конвертировать тогда - описание всегда будет формировать динамически, независимо от того, что там у вас сейчас записано в реальные поля описаний. Это, кстати, классика для многих сайтов.
2. Если п.1 не проканает - то тот же фокус можно попробовать повторить через шаблон Twig термина (или его поля). Правда, тут неизвестно, будут ли доступны в контексте шаблона другие поля термина. Это как бы копать нужно.
А эта тысяча терминов откуда взялась, не вручную же вбивалась? Если они откуда-то импортировались, то может быть их просто переимпортировать заново с уже включенным Entity Prepopulate?
А вообще я бы тоже
Wink
marassa, я вообще не понял, в чем польза Entity Prepopulate...может конечно она и есть...Там есть поле, которое вроде как должно решить мою задачу (значение по умолчанию). Но задаю значение по умолчанию, а оно нигде не отображается. 1000 - это цифра для примера, на самом деле там намного больше, импортировались термины модулем Feeds (только Название и Родитель). Конечно, можно и все остальные данные в поля импортировать, но не хочу забивать БД лишними однообразными записями, их реально будет очень много. Потом, если надо что-то поменять, опять импортировать...это все будет отнимать время. Поэтому ищу решение "на лету", чтобы быстро управлять. Вот модуль Metatag в этом плане очень удобен: хочешь записывай каждому термину метатеги в БД, а хочешь - задай шаблон.
Вам всё правильно сказали насчёт Entity Prepopulate - это именно то, что лучше всего подходило для (追記) изначально (追記ここまで) озвученной задачи. Никто не знал, что у вас уже есть 1000+ терминов и что их нужно пересохранять.
Но поскольку сценарий меняется по ходу пьесы:
то можно попробовать пояснить разницу. Metatag по сути обслуживает сам себя - т.е. собственный слой обработки и вывода метаинформации сущностей, в том числе - опционально собирая значения и с полей типа description у терминов. В каком-то смысле это финальный этап обработки, т.е. по сути никаким другим модулям производимые Metatag'ом данные обычно не нужны. И потому какие-то внутренние манипуляции над полями этого модуля тут возможны почти какие угодно - хоть шаблоны замены по токенам, хоть что-то ещё. Поскольку цели у модуля Metatag более конкретные и скажем так - нативные, специфические. С полями же сущностей (которыми являются поля терминов) история несколько иная - они работают и формируются во внутренней среде Entity API/Field API Друпала и служат для многих задач и целей. И воздействовать на них каким-то произвольным образом с целью привязки кастомного поведения можно либо через связку контрибных модулей (если такие найдутся), либо - через собственный модуль.
Применительно к вашему запросу, видимо, можно озвучить задачу примерно так:
нужно, чтобы при (追記) отсутствии (追記ここまで) введённого значения в поле "Описание термина" использовался какой-то общий задаваемый шаблон/паттерн на основании комбинации токенов других полей термина и произвольного текста, а при (追記) наличии (追記ここまで) введённого значения в поле "Описание термина" - использовалось именно это введённое значение (которое, видимо, тоже может содержать токен).
Предположу. Также нужен механизм, который бы позволял: а) удалить ранее записанные в поле "Описание термина" значения (чтобы стал работать глобальный паттерн по умолчанию) и/или б) возможность принудительно включить глобальный паттерн даже для тех полей, где уже есть значения, не удаляя эти значения.
И если я тут всё угадал, то скорее всего, ваш выход - только кастомный модуль. Вряд ли что-то нарулите кубиками-модулями.
Да, я возможно не точно озвучил задачу. Я вообще не хотел бы трогать поле Описание. Видимо, этим полем я внес путаницу. Пусть оно всегда будет пустое. Задача - просто вывести на странице термина его название и данные из нужных полей - но в некой одной общей текстовой области - вместо Описания как бы (не знаю как более точно объяснить). В целом, я почти разобрался. Опять сделал по другому. Создал блок, настроил Контекстный фильтр. Если добавить поле Название - то работает корректно, на странице термина оно отображается, т.е. отображается название именно того термина, на странице которого мы находимся. Только я бы хотел это Название отображать в поле "Глобальный: Пользовательский текст" (т.е. в "некой одной общей текстовой области"), а там только:
Вот если подставить {{ arguments.tid }}, то ID текущего термина отображается корректно. Мне протсо необходимо, чтобы также можно было отобразить Название термина и данные из нужных мне полей. Не думаю, что тут надо какой-то кастомный модуль, на самом деле задача очень простая, просто, повторюсь, я некорректно изначально объяснил, тут согласен. В общем, есть ID термина, надо получить все остальное))
Ну по сути я где-то выше уже вам предложил это решение - выводить замену через представление термина, а не через токены поля. Единственный минус - поскольку представление обслуживает только вывод страницы термина (не меняя фактического значения поля) - то описание термина для использования, например, в том же модуле Metatag будет пустое. Хотя, с другой стороны, у Metatag есть собственные механизмы формирования описания на основе токенов и ничто не мешает повторить при необходимости паттерн описания средствами этого модуля.
А сами поля-то добавлены в вывод представления?
PS. Вообще - тут бы опять же Васька можно вспомнить с его опытом Views-решений. Может, ещё появится и вообще что-то другое присоветует.
А можно поподробнее? Поле Описание будет пустое и оно не нужно, а Metatag сам генерирует по токенам.
Да, добавлены и отображаются корректно, но "сами со себе", а мне надо их выводить в одной общей текстовой области, для этого и выбираю поле "Глобальный: Пользовательский текст". Не могу только понять, с помощью каких переменных их туда засунуть. Есть только:
Например, ID термина могу подставить с помощью {{ arguments.tid }}, а как Название подставить - не знаю)
Так всё же уже сами и сказали, какие ещё подробности нужны? Я вроде ровно то же самое написал перед этим. Вы же сейчас редактируете представление taxonomy/term, верно? Я про него и писал. Если такое "составное" описание нужно только для вывода на странице термина, то это "оно самое". Но это сформированное описание будет недоступно для других модулей, поскольку фактическое значение поля не изменится.
Я так тоже не пойму, что не так. Думаю, вам стоит выложить скриншоты настроек представления - как в общем, так и по секциям: настройки выводимых полей и в том числе - "Глобальный: Пользовательский текст". Может, кто-то и разберётся тогда.
OldWarrior, спасибо, общими усилиями все получилось) Наверно, как вы и говорите. Добавил поле Название, переопределил вывод своим текстом и исключил это поле из вывода. А в качестве заголовка блока установил {{ name }}. В итоге получил нужный мне H2-заголовок. Далее добавил поле с нужным Полем термина таксономии, и тут же все само подгрузилось так как надо. Далее уже постепенно разберусь с новыми полями, стилями и прочим, главное идею понял) Немного дольше, чем я планировал с помощью единственного поля "Глобальный: Пользовательский текст", но все равно вполне рабочее решение. И вообще, одним полем, как выяснилось, в принципе не получится обойтись, т.к. чтобы иметь возможность использовать переменные из поля, надо это поле сначала добавить.
Всё верно, поля сначала должны быть добавлены, я про это спрашивал выше. Другой вопрос - нужны ли они в "чистом виде" для вывода или же только для формирования шаблонов подстановки - для использования в другом поле вывода с перезаписью.
Ну, в общем, хорошо, что всё получилось.