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

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

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

Комментарии

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();
});
3 августа 2010 в 22:11

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

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

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

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

3 августа 2010 в 22:26

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

3 августа 2010 в 22:14

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

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

3 августа 2010 в 22:21

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

3 августа 2010 в 22:19

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

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

3 августа 2010 в 22:24

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

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

3 августа 2010 в 22:25

"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 своего поля

3 августа 2010 в 22:28

Краткая схема, ищете в коде нужные поля, выбираете их атрибут 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();
});
4 августа 2010 в 11:58

Что-то не получается у меня...
Вставил в файл .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 работает. Но очень хочется, чтоб заработал "полный" вариант.

4 августа 2010 в 13:20

Подскажите, пожалуйста, почему не работает в 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();
});
21 сентября 2011 в 22:12

Огромное спасибо! В друпал 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);

22 сентября 2011 в 8:08