Текстовое поле CCK содержащее Адрес + gmap location

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

Аватар пользователя vinchester vinchester 23 августа 2012 в 11:25

Есть текстовое CCK поле которое содержит Адрес,нужно экспортировать этот адрес в адресную строку карты для вывода меток на ней, прошу помочь в решении данной проблемы, облазил весь поисковик ,толкового объяснения нигде нет,заранее благодарен!

Комментарии

Аватар пользователя divined divined 23 августа 2012 в 12:16

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

Знаю только в теории, так что писать код придется вместе.
Прочитайте про этот хук на друпал АПИ.
Напишите модуль который содержит этот хук, и выведите внутри хука значения переменной $node:

<?php
drupal_set_message
('<pre>'.print_r($node).'</pre>','status');
?>

Посмотрите какие поля есть в переменной, найдите ССК поле с адресом и найдите поле с адресом gmap.
Попробуйте присвоить значение из одного поля в другое.

Аватар пользователя vinchester vinchester 23 августа 2012 в 12:24

Эта функция есть в самом движке includes/theme.inc, line 1983
Думаете можно попытаться реализовать это без создания модуля??

Аватар пользователя divined divined 23 августа 2012 в 12:28

Этот хук пишется в файле template.php вашей темы в стиле:

<?php
function <название_темы>_preprocess_node($node) {
  
drupal_set_message('<pre>'.print_r($node).'</pre>','status');
}
?>
Аватар пользователя divined divined 23 августа 2012 в 12:29

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

Аватар пользователя vinchester vinchester 23 августа 2012 в 12:41

Пока упустим хук node_view.Получилось следующее

function phptemplate_preprocess_node(&$vars, $node) {
drupal_set_message('<pre>'.print_r($node).'</pre>','status');
  if ($vars['node']->type == 'personal_pages') {
    $node = $vars['node'];
    sort($node->taxonomy);
    $term = end($node->taxonomy);
    $q = db_query('SELECT nid FROM {term_node} WHERE tid = %d', $term->tid);
    while ($row = db_fetch_object($q)) {
      if ($row->nid == $node->nid) {
        $vars['related_nodes'][] = $node;
      }
      else {
        $vars['related_nodes'][] = node_load(array('nid' => $row->nid));
      }
    }
   
   //$vars['related_nodes'][] = node_load(array('nid' => $nid));
  }
}
Аватар пользователя vinchester vinchester 23 августа 2012 в 12:48

По правде говоря я тоже это заметил, я не пойму саму структуру
Мне нужно взять id CCK поля и id gmap и переадресовать?

Аватар пользователя vinchester vinchester 23 августа 2012 в 16:29

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

Аватар пользователя divined divined 27 августа 2012 в 12:30

Для начала, я думаю, этот хук нам не подойдет.
Этот хук нужен для занесения значений во временные переменные для шаблона.

Использовать его можно если вы карту гугл выводите в шаблоне и все адреса заносите там(в шаблоне).

------

Все-таки нам нужен хук на просмотр ноды node_view()

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

Аватар пользователя vinchester vinchester 27 августа 2012 в 12:38

Этот хук мы будем использывать непосредственно в самом модуле gmap или в template.php файле как говорилось изначально?

Аватар пользователя vinchester vinchester 27 августа 2012 в 12:38

Этот хук мы будем использывать непосредственно в самом модуле gmap или в template.php файле как говорилось изначально?

Аватар пользователя divined divined 27 августа 2012 в 12:48

yет сделайте новый модуль:

1 папка
2 файла: mygmap.module mygmap.info

скопируйте информацию в файл info из любого другого модуля, заменив нужные значения на свои

Аватар пользователя vinchester vinchester 27 августа 2012 в 15:34
<?php
$nid = db_result(db_query('SELECT MAX(nid) AS nid FROM {node} WHERE type = " content_type_ypages"'));
$node = node_load($nid, NULL, TRUE);
node_view($node);
print $node->filed_{field_gmap}[0]['value'] = $node->field_{cck_addr}[0]['value'];
?>

Вот что получилось,в принципе должно быть правильным но не работает!

Аватар пользователя divined divined 27 августа 2012 в 15:40

{field_gmap},{cck_addr} - вместо этого нужно подставить правильные поля

<?php
$nid 
db_result(db_query('SELECT MAX(nid) AS nid FROM {node} WHERE type = " content_type_ypages"'));
$node node_load($nidNULLTRUE);
node_view($node);
print
?>

это не нужно, у вас в этом хуке уже есть переменная $node;
выведите ее на экран и посмотрите внутренности.

<?php
drupal_set_message
('<pre>'.print_r($node).'</pre>','status');
?>
Аватар пользователя vinchester vinchester 27 августа 2012 в 15:49

Есть получилось через page.tpl.php только не знаю как у казать правильное поле в модуле карты,там есть такое поле как STREET как мне его указать правильно?