Есть текстовое CCK поле которое содержит Адрес,нужно экспортировать этот адрес в адресную строку карты для вывода меток на ней, прошу помочь в решении данной проблемы, облазил весь поисковик ,толкового объяснения нигде нет,заранее благодарен!
Есть текстовое CCK поле которое содержит Адрес,нужно экспортировать этот адрес в адресную строку карты для вывода меток на ней, прошу помочь в решении данной проблемы, облазил весь поисковик ,толкового объяснения нигде нет,заранее благодарен!
Комментарии
Думаю вам нужен хук preprocess_node, в коде которого заносить значение из одного поля в другое.
Знаю только в теории, так что писать код придется вместе.
Прочитайте про этот хук на друпал АПИ.
Напишите модуль который содержит этот хук, и выведите внутри хука значения переменной $node:
<?php
drupal_set_message('<pre>'.print_r($node).'</pre>','status');
?>
Посмотрите какие поля есть в переменной, найдите ССК поле с адресом и найдите поле с адресом gmap.
Попробуйте присвоить значение из одного поля в другое.
Спасибо большое за ответ,сейчас буду пытаться)
Если быть точным то похоже это тот хук?
http://api.drupal.ru/api/function/template_preprocess_node/6
Попробуйте этот.
Эта функция есть в самом движке includes/theme.inc, line 1983
Думаете можно попытаться реализовать это без создания модуля??
Этот хук пишется в файле template.php вашей темы в стиле:
<?php
function <название_темы>_preprocess_node($node) {
drupal_set_message('<pre>'.print_r($node).'</pre>','status');
}
?>
Но я не уверен что этот хук вызывается вовремя, возможно нужен будет модуль и хук на node_view или подобный, который выполняется немного раньше.
Пока упустим хук node_view.Получилось следующее
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));
}
}
поместите в фильтр кода в редакторе )
так, и что вы этим добились?
Вам же нужно Cck поле занести в поле gmap? Вроде этот код этого не делает )))
По правде говоря я тоже это заметил, я не пойму саму структуру
Мне нужно взять id CCK поля и id gmap и переадресовать?
Например:
$node->filed_{gmap_field}[0]['value'] = $node->field_{cck_name}[0]['value'];
Я что-то делаю не так...не могли бы вы показать наглядно в примере,я уже наверное достал вас, мне очень нужно разрешить данный вопрос, буду очень вам благодарен=)
Для начала, я думаю, этот хук нам не подойдет.
Этот хук нужен для занесения значений во временные переменные для шаблона.
Использовать его можно если вы карту гугл выводите в шаблоне и все адреса заносите там(в шаблоне).
------
Все-таки нам нужен хук на просмотр ноды node_view()
Нам нужно подменять значения внутри ноды, присваивая значения из одного поля в другое.
И чтобы потом модуль gmap сам отрисовал что нужно.
Этот хук мы будем использывать непосредственно в самом модуле gmap или в template.php файле как говорилось изначально?
Этот хук мы будем использывать непосредственно в самом модуле gmap или в template.php файле как говорилось изначально?
yет сделайте новый модуль:
1 папка
2 файла: mygmap.module mygmap.info
скопируйте информацию в файл info из любого другого модуля, заменив нужные значения на свои
Это сделано у меня использую хук node_views а какие еще нужно хуки?
только этот
$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'];
?>
Вот что получилось,в принципе должно быть правильным но не работает!
{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($nid, NULL, TRUE);
node_view($node);
print
?>
это не нужно, у вас в этом хуке уже есть переменная $node;
выведите ее на экран и посмотрите внутренности.
<?php
drupal_set_message('<pre>'.print_r($node).'</pre>','status');
?>
А если попробывать через page.tpl.php или это способ не верный?
Есть получилось через page.tpl.php только не знаю как у казать правильное поле в модуле карты,там есть такое поле как STREET как мне его указать правильно?
Внутри ноды находится 1,если я не ошибаюсь, когда вывожу изображение карты исчезает,что за....