Kottov: Комментарии

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

3 июля 2014 в 12:50

через jQuery

$('#edit-title-field-und-0-value').click(function(){
alert("test3");
});

тоже не работает

Uncaught TypeError: undefined is not a function
(anonymous function)

почему-то не видит он элементы через drupal_add_js через('file')
проверил через('inline') - сработало

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

2 июля 2014 в 23:11

пока сделал через hook_form_alter
два раза выдавало событие js потому что брал заготовку модуля с использованием js из http://stackoverflow.com/questions/10856769/execute-javascript-on-node-c...
и там скрип в mymodule.info включили

1 июля 2014 в 23:06

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

скорее нужен hook_node_prepare
попробую подключить к нему Drupal_add_js

1 июля 2014 в 21:54

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

Вот hook_node_view_alter()

function hook_node_view_alter(&$build) {
if ($build['#view_mode'] == 'full' && isset($build['an_additional_field'])) {
// Change its weight.
$build['an_additional_field']['#weight'] = -10;
}

// Add a #post_render callback to act on the rendered HTML of the node.
$build['#post_render'][] = 'my_module_node_post_render';
}

31 мая 2014 в 0:56

проблема в том что в:
Управление > Конфигурация > Регион и язык > Мультиязычные настройки > Форматы ввода, разрешенные к переводу > PHP code - был включен

каким-то образом это запускало обработку кода уже при создании ноды

мне это было нужно чтоб переводились метки ссылок генерируемых php кодом

с переводом в 7 явные трудности, что-то переводиться, что-то нет. Но нельзя же оставить сайт чуть-чуть непереведенным. Наверное уже и не решиться до 8.

29 мая 2014 в 19:07

Алиса создает Объявление с полями цены, категории и тп. В нем автоматом генериется ссылка на создание Заказа "Order now".
Боря кликает и создает Заказ с указанием количества. В Заказе есть 2 поля где php-код подсчитывает сумму заказа и собирает ссылку uri-запроса к платежной системе "Pay now".
Алиса (коментом или личным собщением) подтверждает принятие заказа, а Боря кликает на ссылку URI-запроса и оплачивает.

29 мая 2014 в 14:29

инзачально там пусто
туда пользователь должен внести количество заказа, сохранить ноду. В сохраненной ноде в полях с php-кодом расчитывается сумма заказа и собрана ссылка на платежную систему (URI-запросом).

29 мая 2014 в 14:14

смотрел аргументы так
print_r (arg(0));
echo '
';
print_r (arg(1));
echo '
';
print_r (arg(2));
echo '
';
print_r (arg(3));
echo '
';
print_r (arg(4));
echo '
';

префиксы языков не попали в аргументы

на странице с ссылкой создания ноды:

node
77

на странице создания ноды:

node
add
order

на странице созданной ноды:

node
82

29 мая 2014 в 12:49

гланое не сделать, а еще понять как оно работает, тогда можно делать по любому, а не как кому-то "нормально".

похоже понял в чем там загвоздка - опишу сначала:

Пользователь может создать ноду в которой используются поля с php кодом.
(сооздание ноды происходит по ссылке для Entity Reference Autopopulete с агрументом родительской ноды)

код в поле начинается так:

if (arg(0) == 'node' && is_numeric(arg(1))) //
{
$nodeid_current = arg(1);
$node = node_load($nodeid_current, null, true);

18 марта 2014 в 6:05

Спасибо,

с помощью
<?php
$user_fields = user_load($user->uid);
print_r ($user_fields);
?>
в page.tpl.php получил как выстроены поля в массиве

смог вывести значение нужного поля, если добавить в page.tpl.php следующее
<?php
$user_fields = user_load($user->uid);
print_r ($user_fields ->field_address['und']['0']['value']);
?>

но если помещаю этот код в PHP поле то выдает ошибку

7 февраля 2014 в 21:33

Спасибо за предыдущий код, это помогло.
Надо и в материале и в профиле использовать значения полей в других полях для создания ссылок.
В профиле (и в пределах одной ноды) я их делал с помощью Computed Fiel. Он часто работает но дает ворнинг по типу переменной. И ответов нормальных нет даже у знатоков.

Раз уж есть возможность делать это на php то решил попробовать обойтись без модулей.

7 февраля 2014 в 5:12

хорошая конструкция :

<?phpif (arg(0) == 'node' && ctype_digit(arg(1))) {
  $node = menu_get_object();
  $author_adress = token_replace('[node:author:field_adress]', array('node' => $node));
?>

но в самом профайле пользователя не работает - не проходит по условию
пробовал без условия, работает но по стандартным токенам (current-page:url)
пробовал заменять токены на current-page:field_adress - не понимает

6 февраля 2014 в 16:35

Единственно что выдает нотис.

Notice: Undefined variable: author_adress в функции eval() (строка 22 в файле C:\OpenServer\domains\clean\modules\php\php.module(80) : eval()'d code).

Notice: Undefined variable: node в функции eval() (строка 24 в файле C:\OpenServer\domains\clean\modules\php\php.module(80) : eval()'d code)

Как с этим бороться?

добавил в начало кода:

$node = 0;
$author_adress =0;

- помогло

Это нормальное решение?

6 февраля 2014 в 4:46

Сделал через токены (по вашей подсказке из http://www.drupal.ru/node/107354#comment-597732)

<?php
if (arg(0) == 'node' && ctype_digit(arg(1))) {
$node = menu_get_object();
$price_first = token_replace('[node:field-price:first]', array('node' => $node));
}
print_r($price_first);
?>

Нашел такое описание по токену Double Field
Field "field_price". The following properties may be appended to the token: first (First subfield), second (Second subfield)

6 февраля 2014 в 4:35

Спасибо. В PHP поле это сработало. В Computed Field - нет, сильно ругается (я уж было думал что прямо в нем собрать ссылку из данных полей автора и его материала).
Провал через токены также получить данные полей документа - получилось.
Собрал свою ссылку.

Если бы вы могли описать как работает подобная конструкция - вообще было бы чудесно.

В любом случае спасибо за содействие и если будет нужна помощь в активации ripple кошелька обращайтесь.

5 февраля 2014 в 5:02

[quote].это что за синтаксис?[quote].

да, конечно же было так:

<?php
$first = '[current-user:field_address]';
$second = token_replace($first, $type = 'global', $object = NULL, $leading = '[', $trailing = ']');
print_r($second);
?>

но выдало:

Recoverable fatal error: Argument 2 passed to token_replace() must be an array, string given, called in C:\OpenServer\domains\clean\modules\php\php.module(80) : eval()'d code on line 3 and defined в функции token_replace() (строка 79 в файле C:\OpenServer\domains\clean\includes\token.inc).

4 февраля 2014 в 5:31

Вот описание поля.
The variables available to your code include: &$entity_field, $entity_type, $entity, $field, $instance, $langcode, and $items. To set the value of the field, set $entity_field[0]['value']. For multi-value computed fields continue with $entity_field[1]['value']. Here's a simple example which sets the computed field's value to the value of the sum of the number fields (field_a and field_b) in a node entity: