[Решено] Значение ССК поля в заголовок материала

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

Аватар пользователя sashken sashken 3 августа 2010 в 21:34

Подскажите, пожалуйста, как сделать так, чтобы при выборе определенного значения CCK поля, это значение прописывалось в заголовок материала. Как вот здесь: http://54live.ru/node/add/advert
Т.е. выбрали "Продам" и в заголовке появилось Продам.

Комментарии

Аватар пользователя ubercoder ubercoder 3 августа 2010 в 22:11

RxB, по-моему вопрос не о том немного.

На селект вешается обработчик на событие onChange. Т.е. при измении селеката изменяем значение поля заголовка.

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

function correctTitle(type) {
  title_first = $('#edit-title').val();
  title = $('#edit-title').val();
  var reg = /^(Куплю |Продам |Отдам даром |Услуги )/gi;
  title = title.replace(reg, '');
  if( title != title_first || title_first == '' ){
    $('#edit-title').val(type + ' ' + title);
  }
}
$(document).ready(function() {
  $('#edit-taxonomy-1').change(function () {
    $("#edit-taxonomy-1 option:selected").each(function () {
      correctTitle($(this).text());
    });
  }).change();
});
Аватар пользователя sashken sashken 3 августа 2010 в 22:26

<a href="mailto:ozoned@drupal.org">ozoned@drupal.org</a> wrote:
RxB, по-моему вопрос не о том немного.

На селект вешается обработчик на событие onChange. Т.е. при измении селеката изменяем значение поля заголовка.

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

А не подскажите как применить этот код?

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 3 августа 2010 в 22:14

Твой код явный перебор и не о том.
Ставишь autonodetitle, там в шаблоне генерации тайтла пропишешь что-то в стиле:
[field_cho_sdelayu] [title] и всё, точнее не подскажу, модуль давно не юзал
Ну или из hook_nodeapi()
И все эти жаба-скрипт извраты лишнее

Аватар пользователя sashken sashken 3 августа 2010 в 22:21

RxB wrote:
Твой код явный перебор и не о том.
Ставишь autonodetitle, там в шаблоне генерации тайтла пропишешь что-то в стиле:
[field_cho_sdelayu] [title] и всё, точнее не подскажу, модуль давно не юзал
Ну или из hook_nodeapi()
И все эти жаба-скрипт извраты лишнее

autonodetitle я уже смотрел, он так как на сайте-примере не делает.
Конечно, если ввести в шаблон это [field_cho_sdelayu] [title] в заголовке появится то что нужно, но только после сохранения ноды, а хотелось чтобы как на сайте-примере.

Аватар пользователя ubercoder ubercoder 3 августа 2010 в 22:19

RxB, это не мой код Smile Это код непосредственно с сайта. Кроме того я считаю что такой подход тоже имеет право на жизнь — система подсказывает пользователю формат подачи объявления, но не ограничивает его.

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 3 августа 2010 в 22:24

autonodetitle имеет дело тегами <h>, а топикстартер, как видно из примера, имел ввиду предзаполняемый инпут

Jquery - самое простое имхо, просто заменять value на значение поля сск

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 3 августа 2010 в 22:25

"<a href="mailto:volocuga@drupal.org">volocuga@drupal.org</a>" wrote:
autonodetitle имеет дело тегами , а топикстартер, как видно из примера, имел ввиду предзаполняемый инпут

Каюсь, на пример не смотрел

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 3 августа 2010 в 22:28

"RxB" wrote:
заголовка, они заменяют по регулярному выражению.

А не подскажите как применить этот код?


У тебя в коде есть ID элементов, тебе надо вооружиться Firebug'ом и переделать ID-шки на свои, т.е. как минимум
"<a href="mailto:ozoned@drupal.org">ozoned@drupal.org</a>" wrote:
$('#edit-taxonomy-1').change(function () { $("#edit-taxonomy-1 option:selected").each(function () {

на ID своего поля

Аватар пользователя ubercoder ubercoder 4 августа 2010 в 11:58

Краткая схема, ищете в коде нужные поля, выбираете их атрибут id, заменяете edit-title и edit-taxonomy на найденные значения.

Упрощенный код, будет заменять полностью значение «приемника», вставляете в файл .js темы:

$(document).ready(function() {
  $('#edit-taxonomy-1').change(function () {
    $target = $('#edit-title');
    $source = $('option:selected', this).slice(0);
    $target.val($source.text());
  }).change();
});
Аватар пользователя sashken sashken 4 августа 2010 в 13:20

Что-то не получается у меня...
Вставил в файл .js темы следующее:

function correctTitle(type) {
  title_first = $('#edit-title').val();
  title = $('#edit-title').val();
  var reg = /^(Продам |Куплю |Меняю |Отдам даром )/gi;
  title = title.replace(reg, '');
  if( title != title_first || title_first == '' ){
    $('#edit-title').val(type + ' ' + title);
  }
}
$(document).ready(function() {
  $('#edit-field-type-ob-value').change(function () {
    $("#edit-field-type-ob-value option:selected").each(function () {
      correctTitle($(this).text());
    });
  }).change();
});

Теперь при загрузке страницы, в поле Заголовок появляется "Продам", но при выборе другого значения ничего не происходит, т.е. как было в заголовке "Продам", так и висит.

Подскажите, пожалуйста, как сделать чтоб значения менялись.

Вариант предложенный ozoned работает. Но очень хочется, чтоб заработал "полный" вариант.

Аватар пользователя sashken sashken 21 сентября 2011 в 22:12

Подскажите, пожалуйста, почему не работает в Drupal 7

function correctTitle(type) {
  title_first = $('#edit-title').val();
  title = $('#edit-title').val();
  var reg = /^(Продам |Куплю |Меняю |Отдам даром )/gi;
  title = title.replace(reg, '');
  if( title != title_first || title_first == '' ){
    $('#edit-title').val(type + ' ' + title);
  }
}
$(document).ready(function() {
  $('#edit-field-type-ob-value').change(function () {
    $("#edit-field-type-ob-value option:selected").each(function () {
      correctTitle($(this).text());
    });
  }).change();
});
Аватар пользователя sashken sashken 22 сентября 2011 в 8:08

Огромное спасибо! В друпал 7 заработало так:

(function ($) {

function correctTitle(type) {
  title_first = $('#edit-title').val();
  title = $('#edit-title').val();
  var reg = /^(Продам |Куплю |Меняю |Отдам даром )/gi;
  title = title.replace(reg, '');
  if( title != title_first || title_first == '' ){
    $('#edit-title').val(type + ' ' + title);
  }
}
$(document).ready(function() {
  $('#edit-field-type-ob-value').change(function () {
    $("#edit-field-type-ob-value option:selected").each(function () {
      correctTitle($(this).text());
    });
  }).change();
});

})(jQuery);