понял что только одним hook_node_view_alter() не обойтись
нужно просто без создания всяких полей дать сработать яваскрипту. С помошью него и определятся значения цены и валюты по событию onChange, помножатся на курс и выведутся рядышком.
скорее нужен hook_node_prepare
попробую подключить к нему Drupal_add_js
проблема в том что в:
Управление > Конфигурация > Регион и язык > Мультиязычные настройки > Форматы ввода, разрешенные к переводу > PHP code - был включен
каким-то образом это запускало обработку кода уже при создании ноды
мне это было нужно чтоб переводились метки ссылок генерируемых php кодом
с переводом в 7 явные трудности, что-то переводиться, что-то нет. Но нельзя же оставить сайт чуть-чуть непереведенным. Наверное уже и не решиться до 8.
Алиса создает Объявление с полями цены, категории и тп. В нем автоматом генериется ссылка на создание Заказа "Order now".
Боря кликает и создает Заказ с указанием количества. В Заказе есть 2 поля где php-код подсчитывает сумму заказа и собирает ссылку uri-запроса к платежной системе "Pay now".
Алиса (коментом или личным собщением) подтверждает принятие заказа, а Боря кликает на ссылку URI-запроса и оплачивает.
инзачально там пусто
туда пользователь должен внести количество заказа, сохранить ноду. В сохраненной ноде в полях с php-кодом расчитывается сумма заказа и собрана ссылка на платежную систему (URI-запросом).
гланое не сделать, а еще понять как оно работает, тогда можно делать по любому, а не как кому-то "нормально".
похоже понял в чем там загвоздка - опишу сначала:
Пользователь может создать ноду в которой используются поля с php кодом.
(сооздание ноды происходит по ссылке для Entity Reference Autopopulete с агрументом родительской ноды)
с помощью
<?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 поле то выдает ошибку
Спасибо за предыдущий код, это помогло.
Надо и в материале и в профиле использовать значения полей в других полях для создания ссылок.
В профиле (и в пределах одной ноды) я их делал с помощью Computed Fiel. Он часто работает но дает ворнинг по типу переменной. И ответов нормальных нет даже у знатоков.
Раз уж есть возможность делать это на php то решил попробовать обойтись без модулей.
но в самом профайле пользователя не работает - не проходит по условию
пробовал без условия, работает но по стандартным токенам (current-page:url)
пробовал заменять токены на current-page:field_adress - не понимает
Нашел такое описание по токену Double Field
Field "field_price". The following properties may be appended to the token: first (First subfield), second (Second subfield)
Спасибо. В PHP поле это сработало. В Computed Field - нет, сильно ругается (я уж было думал что прямо в нем собрать ссылку из данных полей автора и его материала).
Провал через токены также получить данные полей документа - получилось.
Собрал свою ссылку.
Если бы вы могли описать как работает подобная конструкция - вообще было бы чудесно.
В любом случае спасибо за содействие и если будет нужна помощь в активации ripple кошелька обращайтесь.
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).
Вот описание поля.
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:
Использование яваскрипт при создании/редактирвоании ноды
короче, https://www.drupal.org/node/2035395 тут ответ
Получилось и через hook_after_build c drupal_add_js и через #attached - как ниже приведено:
Использование яваскрипт при создании/редактирвоании ноды
через 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 использовать
Использование яваскрипт при создании/редактирвоании ноды
поставил вес яваскрипта 30
и модуля 3
добавил $ в
document.getElementById("edit-field-price-und-0-value").onclick=function($){
alert("test1");
};
не работает
Использование яваскрипт при создании/редактирвоании ноды
Скрипт работает.
Но как получить Элементы?
вот исходник страницы создания ноды
Использование яваскрипт при создании/редактирвоании ноды
пока сделал через hook_form_alter
два раза выдавало событие js потому что брал заготовку модуля с использованием js из http://stackoverflow.com/questions/10856769/execute-javascript-on-node-c...
и там скрип в mymodule.info включили
Использование яваскрипт при создании/редактирвоании ноды
получилось запустить яваскрипт как здесь https://www.drupal.org/node/1253520#comment-4881588
на семерке тоже пошло
Использование яваскрипт при создании/редактирвоании ноды
понял что только одним hook_node_view_alter() не обойтись
нужно просто без создания всяких полей дать сработать яваскрипту. С помошью него и определятся значения цены и валюты по событию onChange, помножатся на курс и выведутся рядышком.
скорее нужен hook_node_prepare
попробую подключить к нему Drupal_add_js
Использование яваскрипт при создании/редактирвоании ноды
Проверил то что в ссылке на английском - работает но не то что надо - запускает явоскрипт уже по созданю ноды.
Вот 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';
}
[РЕШЕНО] HybridAuth Social Login. Авторизация через vk.com
у меня решилось. (Спасибо duozersk) Была проблема с JS из-за модуля DHTML Menu. Обновил его на dev - все заработало как часики.
[РЕШЕНО] HybridAuth Social Login. Авторизация через vk.com
Что именно было "arg_separator.output"?
Возможно что у меня таже проблема.
https://drupal.org/node/2122383#comment-8879243
При в ходе зависает страница, пишет "Closing..."
Отключение обработки php-полей при создании ноды
проблема в том что в:
Управление > Конфигурация > Регион и язык > Мультиязычные настройки > Форматы ввода, разрешенные к переводу > PHP code - был включен
каким-то образом это запускало обработку кода уже при создании ноды
мне это было нужно чтоб переводились метки ссылок генерируемых php кодом
с переводом в 7 явные трудности, что-то переводиться, что-то нет. Но нельзя же оставить сайт чуть-чуть непереведенным. Наверное уже и не решиться до 8.
Отключение обработки php-полей при создании ноды
Алиса создает Объявление с полями цены, категории и тп. В нем автоматом генериется ссылка на создание Заказа "Order now".
Боря кликает и создает Заказ с указанием количества. В Заказе есть 2 поля где php-код подсчитывает сумму заказа и собирает ссылку uri-запроса к платежной системе "Pay now".
Алиса (коментом или личным собщением) подтверждает принятие заказа, а Боря кликает на ссылку URI-запроса и оплачивает.
Отключение обработки php-полей при создании ноды
инзачально там пусто
туда пользователь должен внести количество заказа, сохранить ноду. В сохраненной ноде в полях с php-кодом расчитывается сумма заказа и собрана ссылка на платежную систему (URI-запросом).
Отключение обработки php-полей при создании ноды
смотрел аргументы так
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
Отключение обработки php-полей при создании ноды
гланое не сделать, а еще понять как оно работает, тогда можно делать по любому, а не как кому-то "нормально".
похоже понял в чем там загвоздка - опишу сначала:
Пользователь может создать ноду в которой используются поля с php кодом.
(сооздание ноды происходит по ссылке для Entity Reference Autopopulete с агрументом родительской ноды)
код в поле начинается так:
if (arg(0) == 'node' && is_numeric(arg(1))) //
{
$nodeid_current = arg(1);
$node = node_load($nodeid_current, null, true);
Получение данных полей профиля пользователя
Спасибо,
с помощью
<?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 поле то выдает ошибку
Получение данных поля со страницы профиля
Спасибо за предыдущий код, это помогло.
Надо и в материале и в профиле использовать значения полей в других полях для создания ссылок.
В профиле (и в пределах одной ноды) я их делал с помощью Computed Fiel. Он часто работает но дает ворнинг по типу переменной. И ответов нормальных нет даже у знатоков.
Раз уж есть возможность делать это на php то решил попробовать обойтись без модулей.
Получение данных поля со страницы профиля
хорошая конструкция :
<?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 - не понимает
Получить первое поле из Double Fields
не вышло.
вставил как есть:
Получение данных поля со страницы профиля
Единственно что выдает нотис.
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;
- помогло
Это нормальное решение?
Получить первое поле из Double Fields
Можно, но не понятно как. Предложите рабочую конструкцию.
Получить первое поле из Double Fields
Сделал через токены (по вашей подсказке из 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)
Получение данных поля со страницы профиля
Спасибо. В PHP поле это сработало. В Computed Field - нет, сильно ругается (я уж было думал что прямо в нем собрать ссылку из данных полей автора и его материала).
Провал через токены также получить данные полей документа - получилось.
Собрал свою ссылку.
Если бы вы могли описать как работает подобная конструкция - вообще было бы чудесно.
В любом случае спасибо за содействие и если будет нужна помощь в активации ripple кошелька обращайтесь.
Получение данных поля со страницы профиля
[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).
Получить первое поле из Double Fields
Вот описание поля.
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: