Добрый день!
Поднимаю новый проект на drupal7. На сайте есть раздел новости. В админке сделан тип материала - новость с соответствующими полями. Нужно реализоввать следующее: при вводе менеджером контента (текста) новости сделать возможность добавления контактного телефона через переменную. Например, чтобы менеджер не вбивал рукам код города, номер телефона и т д, а просто вставил переменную (что то типа %phone% или $phone) в контент и при сохранении содержимого в этом месте появлялся номер телефона. Пробовал вывести переменную в контенте, но drupal выводит ошибку типа Notice: Undefined variable: variables в функции eval()(строка 2 в файле Z:\home\mysite\www\modules\php\php.module(80) : eval()'d code).
Каким путем можно реализовать данную задачу?
Комментарии
А номер единый всегда будет?
Или переменная будет чему-нибудь равняться?
глупый вопрос, неправильно задание прочитал...
А если создать поле, а в темплейте переопределить его на вывод переменной
Создайте поле. В поле вводе телефон а в тексте исползуете токен, он всегда доступен для полей.
я так и хотел предложить, но меня смутило - что не хочется вбивать номер...а если поле номера уже есть, тогда действительно через токен...
Так и не разобрался, как ими (токенами) пользоваться(((( Уже и Custom Tokens модуль установил, создал токен по инструкции вот этой http://debuntu.ru/note/drupal-modul-custom-tokens , вроде всё понятно. Вставляю токен в содержимое и номер телефоне не отражается , а тупо отражается [custom:phone].((((( Может надо выводить как то определенным образом? Друзья, помогите! Очень нужно реализовать...
https://www.drupal.org/project/token_filter
Я с Drupal только начал работать. Можете пошагово объяснить как это сделать или на простом примере? Заранее спасибо!!!
Спасибо, будем изучать.
Вы напишите, что конкретно надо сделать, тогда легче описать решение...
В любом случае поле номера телефон надо заполнять, тогда все остальное через views.
Задача такая. На сайте есть разделы, доступные для контент-менеджера (Новости, статьи, акции...). Нужно, что бы в этих разделах менеджер добавляя к примеру новость в контенте новости мог вместо номера телефона указать метку (в данном случае я так понял, можно токен использовать), и в случае, если телефон изменился, то он изменился бы во всех местах сайта, где он был внесен в контент этми токенами, а так же желательно иметь возможность мне добавить эти токены в шаблоне (в шапке, подвале и на некоторых страницах). Задача заключается в том, чтоб через админку иметь возможность поменять телефон в одном месте, а в контенте он изменился бы везде, где он есть... Первоначально я решил эту проблему через модуль views сделав блок с телефоном и разместив его во всех нужных регионах и в отдельном поле в новости, но вот добавить в содержание его я не знал как. Вот и пришлось с токенами разбираться...
Подождите, если номер телефона единый, тогда создать поле со значением по умолчанию, и никаких токенов не надо, выбрал поле во views, а значение уже есть.
Так номер единый во всех новостях?
Да. Единый.
ну так создайте поле (текст), укажите там значение по умолчанию, и настройте его во views, а если надо будет сменить, то просто поменять умолчание, вроде должно сработать...попробуйте, если не получиться тогда другое протянем...
Можно модулек, создать страницу настройки типо поле телефон - забивается в variable. И можно кнопочку добавить на страницу редактирования + js который по нажатию этой кнопки вставляет например phone_var в body в месте курсора. И потом в этом же модуле hook_node_view с регуляркой и заменять phone_var на variable.
Модуль
https://www.drupal.org/project/token_var
позволяет использовать "глобальные переменные"(установленные функцией variable_set()) Drupal как токены .
Осталось только придумать, как по простому добавлять редактировать эти переменные.
Варианты навскидку:
1.Добавить в settings.php
<?php
$conf += array(
'TEL_1' => '22-33-44',
);
?>
2. Добавить в template.php темы (THEME_page_preprocess)
<?php
variable_set('TEL_1','22-33-44')
?>
3.Сделать форму в админке для ввода-редактирования переменных.
4.Возможно можно как-то rules приспособить, чтобы при сохранении некоторой ноды с полем-значением телефона, устанавливал нужную переменную значением этого поля.
......
Спасибо всем! Попробую на выходных этот вопрос решить с помощью предложенных Вами вариантов! Отпишу о результатах, т к возможно кто то с такой же проблемой тоже столкнётся...
да что же вы так извращаетесь с регулярками, препроцессами, переменными, человеку нужно простое решение, а простое было предложено ранее, с помощью custom tokens создать новый токен и записать в него значение, потом модуль token_filter поможет вставить этот токен в любое текстовое поле в нужном месте, только вот не забыть включить этот фильтр в настройках формата, через который выводится поле
К сожалению так и не получилось у меня ничего с токенами. Попробовал ещё раз с Custom Tokens создав пользовательский токен и скопировав его в текст ноды, но при выводе в ноде токена выводится сам токен [custom:phonenamber], а не его значение.(((( Причем в справке модуля Token на странице /admin/modules в разделе "пользовательские" я свой токен вижу. Следовательно он есть? Может я его копирую в текст ноды неверно?
Кстати не получается даже вставить токен такого плана [date:short], который как я понял в системе есть по умолчанию. Выводится опять же [date:short] , а не текущая дата.
Не забыли ???
Так а где настройки формата находятся то? Можно скриншот для начинающих?)))
/admin/config/content/formats/full_html для Full HTML
/admin/config/content/formats/filtered_html для Filtered HTML
Всё заработало! Огромное спасибо за помощь! Вот блин, век живи, век учись и дураком помрешь!!! Это про меня!"!!!)))))