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

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

18 июля 2014 в 15:38

Ну есть поля которые заполняет автор, это понятно.
Другие - нужно же где-то выводить динамическую информацию, привязывать ее к чему-то.
Через что еще делать? Собирать страницу их представлений?
Ну и да код там-же хранил. Для разработки (особенно когда никогда ранее друпал/пхп/сайты не занималься)) удобно.
Вот по тихоньку разобрался (спасибо всем кто помог) и уже можно делать как надо.
Если бы сразу в модули направили - то вряд ли бы осилил.

17 июля 2014 в 17:48

О, СПАСИБО! - это вариант!

Отравил в яваскрипт, от туда по ajax в my_module_menu_ajax_callback().

Как-нибудь, когда прийдет мое время, пойму как это делать в php, отпишусь.

17 июля 2014 в 16:38

Мене в полях хранить нечего. Они у меня должны выдавать значения динамически. То есть я пока там (с включенным php фильтром) "храню" php код который все это делает и в них же выводит.

Вот думал что правильнее его вынести в одно место и от туда программно заполнять поля.
Вот еще такие доводы http://rxb.name/blog/pochemu-ya-protiv-koda-v-blokah-i-nodah-i-modulya-p...

так заполнять чем?
hook_user_view_alter
hook_node_view_alter

17 июля 2014 в 5:22

добавил в модуль

function user_uid_glob_init(){
global $user_uid_glob_outopt;
$user_uid_glob_outopt = arg(1);
print_r($user_uid_glob_outopt);
}

print_r($user_uid_glob_outopt); - не сработало

user_uid_glob_init(); - выдавало не uid пользователя, а name - это заначит разрешния не выставлены?

17 июля 2014 в 4:20

не работает agr() под my_module_menu_ajax_callback()
а под my_module_user_view_alter(&$build) работает

и протащить эту как переменную через global тоже не получается,

прописывал my_module_user_view_alter(&$build)

global $user_uid_glob;
$user_uid_glob = arg(1)
print_r ($user_uid_glob);

и потом в my_module_menu_ajax_callback()

global $user_uid_glob; // пробал сначала без этой строки
print_r ($user_uid_glob);

ничего не вышло

как-то через классы можно, но похоже что проблема в друпале

16 июля 2014 в 21:49

Примеров много, но либо с кусками кода, который не понятно как склеивать, либо пример заточен под какую-то специфическую задачу что там вообще черт ногу сломит.
Далее что одни предлагают способ с хук-меню - но без Drupal.ajax, другие с ним.

Вот разобрался с первым более простым. Привожу без всяких довесов, но все 3 файла сразу и целиком.

с помощью js подхавываются данные со страницы (в данном случае с профиля) отправляются на сервер, обрабатываются и возвращается результат в js

все в папуку /sites/default/modules/my_module

my_module.info

16 июля 2014 в 16:28

То есть как "все в поля"?
php код в поля - так тогда те 3 тяжелых нужно будет грузить и в каждом поле отдельно

или я не понял?

пока намереваюсь переносить код в модули (и если там объект ноды уже есть - то еще лучше) и буду программно заполнять результатами созданные ранее поля

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

16 июля 2014 в 13:37

Есть код который генерирует ссылки в из данных автора. Такое я думаю надо во время создания/редактирования ноды собрать и сохранить в полях уже как ссылки.
Для это нужен hook_node_presave($node)?
Но даже они должны показываться или нет в зависимости это автор просматривает или нет.
то есть мне постоянно приходится проверять
if ($user->uid <> $node->uid)

16 июля 2014 в 13:22

так тоже пробовал - ничего не выдало в поле

только ворнинги
Warning: end() [function.end]: Passed variable is not an array or object в функции eval() (строка 3 в файле C:\OpenServer\domains\localhost\xxxxxx.org\modules\php\php.module(80) : eval()'d code).

это если вставлять в поле c PHP кодом

в Computed field - там все через $entity_field[0]['value'] делать надо (по конструкции модуля)

попробовал

16 июля 2014 в 4:18

Спасибо, почти убедил. (( Придется пытаться понять Друпал.
Материала хватает, но весь какой-то механический. Это туда, это сюда. Не один раз смотрел на друпаловские методы - могу понять почему это работает. И делать так соответственно не хочется.
Я обычным ajax c первого раза все стало понятно.

15 июля 2014 в 20:18

Подождем того кто помимо советов того что можно и нельзя - даст дельный совет как это можно.
Спасибо и на том, а ведь мог бы и .... ))

То что можно, я и сам это понимаю. Не писал бы сюда о полетах на Марс.

15 июля 2014 в 17:20

не могу понять что тут можно уточнить

в форме создания ноды выбирали термин таксономии с помощью Hierarchical Select
так нужно это же самое чтоб было возможно для "всех" в уже готовой ноде (при ее просмотре)

ничего большего действия а сам через яваскрипт и ajax прикручу

15 июля 2014 в 16:58

Все так, только не думал что вместо того чтобы дописывать то что нужно, используя базвые инструменты - прийдется "пилить" сами эти инструменты.

Если вас послушать то и views пользоваться не нужно, а самому все писать, чтоб было именно то что нужно.

Если него дельного сказать, так и делайте, - ничего не говорите.
По вашему станицы должны быть статическими, а интерактивность в виде селекта - это нечто нестандартное, узкоспецифическое что нужно с нуля писать.

Спашиваю тех кто с этим сталкивался и у кого есть наработки по этому вопросу.

15 июля 2014 в 12:32

Спасибо, помогли. ))
Если бы я знал что нужно делать, я бы это делал, а не спарашивал тут у знатаков как и чего не надо делать.

Я ущу выход из ситуации отсутствия в Друпале элементарного функционала. И если вам он тоже не известен (или лень его искать) то .... помогите там где реально можете помочь.

Вопрос в понимании как работает Друпал. Почему одно и тоже поле в форме работает одним образом, а в ноде другим (хотя в exposed filter работает как в форме). Что этим управляет?

15 июля 2014 в 4:49

Да, спасибо. Именно то что я хотел увидеть. Страно что нет оригинальных модулей под это. Установил. Но он работает только как приемер.
Ему еще надо сделать новый тип поля. Глянул сюда http://internetdevels.ru/blog/module-with-field-api-drupal-7 и понял что для меня это еще рановато )).

Но должна же быть возможность его вызывать прямо из поля с php фильтом?
Попробовал прописать запускающую функцию example_hs_menu(); - но не сработало

14 июля 2014 в 21:25

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

мне нужен маленький инструментик типа http://htmlbook.ru/html/optgroup - продвинутая форма селект
но чтоб там было два поля выбора: родительское и дочернее отдельно
и чтоб я туда мог словарь таксономии вогнать - (все это делает Hierarchical Select) остальное я лучше руками чем из пушки по воробьям.

14 июля 2014 в 17:17

Но, вот тут это реализованно. http://wimleers.com/demo/hierarchical-select/taxonomy
Это не форма, а нода. Используется именно Hierarchical Select даже видно как ajax работает.

Для чего? Нечто вроде ubercart_marketplace своими руками )).
Например, интерактивно запросить чего (термин таксономии) и сколько (данные в базе) у продавца на складе.
На странице футболок, запросить сколько из них синих XXL на складе.

5 июля 2014 в 1:10

решено, ответ здесь https://www.drupal.org/node/2182879

для тех кто хочет вешать Ajax не по друпаловски

в начало php файла надо добавить

define('DRUPAL_ROOT', $_SERVER['DOCUMENT_ROOT']); //added to make sure its defined as we're outside the use of index.php
chdir(DRUPAL_ROOT);
require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

ну и в конце не забыть вернуть JSON по друпаловски
return drupal_json_output($res);

4 июля 2014 в 23:02

Так все таки можно, хоть и не рекомендуется. Но мене он пока кажется самым простым.

http://www.drupal.ru/node/108320
"4 способ(из серии "как делать нельзя"), прикручиваете js, где на событие change цепляете аякс запрос к некоему скрипту(обычный php файл), в который и запихиваете ваш код. Эдакий битрикс стайл."

4 июля 2014 в 19:43

Понял что сделал подключение ajax в общем случае, не как в друпале заведено.
Я создал его отдельным файлом ajax.php в друпал это должно быть модулем (или в модуле). Вот он его и не видет должным образом.