Единый телефон на всем сайте

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

Аватар пользователя Nnemo Nnemo 6 марта 2012 в 21:11

Здравствуйте!

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

1. в админке возможность задать телефон
2. телефон выводится в теме (в шапке и футоре сайта)
3. телефон выводиться на некоторых страницах сайта (например в контактах или какой-либо статье)
4. при смене телефона в админке сайта, телефон меняется везде (и в теме, и в текстах статей и в контактах)

как это сделать?

Комментарии

Аватар пользователя Nnemo Nnemo 6 марта 2012 в 21:37

"xamctepdak" wrote:
token?

спасибо, вроде то что надо,

как я понимаю теперь это часть ядра d7, но в списке модулей нет модуля token
не могу понять как мне их использовать?

Где они (small bits of text) теперь находятся? Как их задать и как их использовать:
1. в теме
2. в странице (при добавлении контента)

Аватар пользователя Nnemo Nnemo 6 марта 2012 в 21:59

"Ch" wrote:
Custom Tokens

ого, смотрю тут не особо многословны ...

ладно, спасибо большое и на этом (действительно спасибо, это не сарказм), попробую поставить этот модуль

оф. описание модуля тоже не особо подробно: "It gives the user the ability to create custom tokens for specific replacements that can improve other modules relying on the Drupal 7 token API or, for Drupal 6, the Token module."

дает возможность, но блин, как их использовать?!

Аватар пользователя Kvark Kvark 6 марта 2012 в 23:19

я наверно тупой или что то не понимаю но тупо создать простой блок с телефоном и разместить где хочеться не катит?

Аватар пользователя Nnemo Nnemo 6 марта 2012 в 23:27

"Kvark" wrote:
я наверно тупой или что то не понимаю но тупо создать простой блок с телефоном и разместить где хочеться не катит?

первая мысль тоже такая была, через блок, но как быть с пунктом:
"3. телефон выводиться на некоторых страницах сайта (например в контактах или какой-либо статье)"

Аватар пользователя Kvark Kvark 7 марта 2012 в 1:04

Nnemo wrote:
"Kvark" wrote:
я наверно тупой или что то не понимаю но тупо создать простой блок с телефоном и разместить где хочеться не катит?

первая мысль тоже такая была, через блок, но как быть с пунктом:
"3. телефон выводиться на некоторых страницах сайта (например в контактах или какой-либо статье)"

да просто, делаем ввод значения, через phone.admin.inc скажем задаем значение переменной, а потом блоком отображаем эту переменую где нада, зачем слоган пееменую то трогать? Smile

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

Аватар пользователя Andruxa Andruxa 6 марта 2012 в 23:50

"Nnemo" wrote:
1. в админке возможность задать телефон

Вот это, имхо гемор - ради одного телефона писать модуль, чтобы через hook_menu создать страницу в админке для его ввода, это как-то из пушки по воробьям
Как вариант - воспользоваться каким-нибудь неиспользуемым значением из раздела "Информация о сайте", слоган вполне может подойти: в переводе интерфейса найти строку "слоган" и заменить её на "телефон", чтобы не сбивала с толку

"Nnemo" wrote:
2. телефон выводится в теме (в шапке и футоре сайта)

достигается правкой шаблонов - вставкой <?php print $slogan?> там, где это требуется

"Nnemo" wrote:
3. телефон выводиться на некоторых страницах сайта (например в контактах или какой-либо статье)

либо вставкой вышеуказанного кода, надо будет указывать формат ввода - php (не гуд), либо токенами (возможно, потребуется отдельный формат ввода)

"Nnemo" wrote:
4. при смене телефона в админке сайта, телефон меняется везде (и в теме, и в текстах статей и в контактах)

PROFIT!

Аватар пользователя Nnemo Nnemo 7 марта 2012 в 0:33

вроде то что надо, но придется пожертвовать $slogan; — что не хорошо само по себе, и выглядит как костыль

я сейчас пытаюсь использовать custom tokens — но не могу понять как токены можно вывести в page.tpl.php?

Аватар пользователя Nnemo Nnemo 7 марта 2012 в 1:07

Аааа, держите меня семеро, заработало!!!

Итак, для потомков, алгоритм действия
Если Вам надо размещать на сайте маленькие кусочки текста (такие как например телефон компании) с возможностью изменения значения из админки то для Drupal 7 делаем:

1.
ставим модули:
token (да-да, в D7 core перенесли не все, и без модуля работать не будет) — для самих токенов
token_custom — для пользовательских токенов, задаются через php, т.е. в примере с телефоном надо будет задать что-то вроде echo '500-50-50';
token_filter — для вывода токенов в содержимом (статьях и прочем)

2.
включаем Token Filter для каждого из требуемх Вам форматов ввода (в админке, в настройке фильтров ввода)
например для Full HTML

3.
задаем пользовательский токен (custom token), например так
Token name: Phone Machine name: phone
Token description: Телефон фирмы
Token type: Custom tokens
PHP replacement: echo '500-50-50';

4.
используем:
в выводе содержимого как [custom:phone] при формате ввода который установили в пункте 2 (Full HTML)
в шаблоне темы как <?php print token_replace('[custom:phone]', array('node' => $node)); ?>

Теперь изменив в админке токен phone у нас на всем сайте поменяются телефоны и в дизайне (шаблоне), и в текстах содежримого
Profit!!!

ps: что-то мне подсказывает что использование print token_replace('[custom:phone]', array('node' => $node)); в шаблоне не есть хорошо, т.к. при большом кол-ве токенов (а они бывают не только custom, их много и в ядре) все будет тормозить

Аватар пользователя boneg boneg 7 марта 2012 в 1:08

А не изящней будет просто добавить хуком еще одно поле к формк system-site-information-settings и писать его в variables?

Аватар пользователя Nnemo Nnemo 7 марта 2012 в 1:18

"Kvark" wrote:
да просто, делаем ввод значения, через phone.admin.inc скажем задаем значение переменной, а потом блоком отображаем эту переменую где нада, зачем слоган пееменую то трогать? Smile
как еще вариант чтоб пушкой не стрелять Smile в блок запихать пхп код который скажем записывает значение в базу данных (показываеться только в админке), а со стороны юзера выводиться где хочеш...

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

<div>Бла-бла-бла</div>
<div>Бла-бла-бла, мы самая лучшая шарага на просторах России про производству картофеля,
по рекламациям звоните в отдел контроля формы картофеля <span><strong>500-50-50</strong></span></div>
<div>Бла-бла-бла</div>

Причем этот-же телефон указан на странице контактов, и шапке сайта и в футере и еще где-нибудь

В определенный момент Editor меняет телефон в админке и везде телефон должен поменяется, в случае с блоками как в статье поменяется телефон?

Аватар пользователя Kvark Kvark 7 марта 2012 в 1:33

Nnemo wrote:

Причем этот-же телефон указан на странице контактов, и шапке сайта и в футере и еще где-нибудь

В определенный момент Editor меняет телефон в админке и везде телефон должен поменяется, в случае с блоками как в статье поменяется телефон?


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

Аватар пользователя Nnemo Nnemo 7 марта 2012 в 1:22

"boneg" wrote:
А не изящней будет просто добавить хуком еще одно поле к формк system-site-information-settings и писать его в variables?

как телефон будет меняться в статьях? Они же его туда как <?php echo $var['phone'] ?> записать не могут, а если смогут то это угроза работы сайта

а вот в статье сделать так

div>Бла-бла-бла, мы самая лучшая шарага на просторах России про производству картофеля,
по рекламациям звоните в отдел контроля формы картофеля <span><strong>[custom:phone]</strong></span></div>

смогут, если объяснить что вместо телефона надо вставлять [custom:phone], поймут же?

Аватар пользователя Andruxa Andruxa 7 марта 2012 в 1:31

"boneg" wrote:
А не изящней будет просто добавить хуком еще одно поле к формк system-site-information-settings и писать его в variables?

да, лучше всего, имхо

"Nnemo" wrote:
как телефон будет меняться в статьях?

так же, через custom_token отдавать variable_get($site_phone)

Аватар пользователя Nnemo Nnemo 7 марта 2012 в 1:37

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

это же не только может быть телефон, а любая информация привязанная не к конкретной ноде или типу нод, а к сайту целиком (имя руководителя, адрес, ссылка на партнеров которые могут меняться, список телефонов — тут можно много примеров привести)
а давать возможность редакторам пользоваться php очень небезопасно, где-нибудь забудут ";" и сайт ляжет целиком т.к. ляжет интерпретатор

Аватар пользователя Nnemo Nnemo 7 марта 2012 в 1:41

"Andruxa" wrote:
А не изящней будет просто добавить хуком еще одно поле к формк system-site-information-settings и писать его в variables?

"Andruxa" wrote:
как телефон будет меняться в статьях?

"Andruxa" wrote:
так же, через custom_token отдавать variable_get($site_phone)

хорошая идея, логично что сущности привязанные к сайту буду расположены в "адимка-конфигурация-информация о сайте"

не подскажите теперь как добавить хуком еще одно поле к формк system-site-information-settings и писать его в variables?

Аватар пользователя Andruxa Andruxa 7 марта 2012 в 1:56

"Nnemo" wrote:
как добавить хуком еще одно поле

таки своим модулем )

<?php
function имя-модуля_form_alter(&$form, &$form_state$form_id) {
  if (
$form_id == 'system-site-information-settings') { // уточнить имя формы!
    
$form['site_phone'] = array(
      
'#type' => 'textfield',
      
'#title' => t('Site phone'),
      
'#default_value' => variable_get('site_phone'),
    );
  }
}
?>

написал в сонном состоянии, сверяйтесь:

hook_form_alter
Form API

Аватар пользователя Ch Ch 7 марта 2012 в 7:16

Если телефон нужно выводить только в шаблонах, то можно добавить ещё одну переменную в settings.php. Или сделать дополнительный интерфейс в админке.

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

Аватар пользователя marazmus marazmus 7 марта 2012 в 16:43

+++ к токенам, ибо давать редакторам PHP это отсроченное самоубийство Biggrin

ТС молодец, рад что на д.ру есть люди, способные не ныть, задавать правильные вопросы, находить (по минимальным подсказкам) подходящие решения и вести диалог Smile

А то, судя по последним дням, одни ламеры с гаврами заполонили сайт...