20 API за 20 дней

9 апреля 2010 в 21:42
Аватар пользователя graker graker 0 25

Компания Trellon недавно запустила цикл ознакомительных статей о том как пользоваться API популярных модулей Друпала (Views, CCK и так далее). Цикл называется "20 API за 20 дней", сейчас в нем пока статьи про 4 API, но скоро, видимо, будет 20.

Статьи показались мне неплохими, так что я их решил переводить. Переводы публикую у себя в блоге под тегом "20 API за 20 дней". Пока перевел вступление со списком запланированных API и первую статью (про CCK). Дальше будет больше, если интересно - заходите.

Комментарии

2 adubovskoy: не, про селект боксы нигде не публиковал, мне оно не показалось значительным.

2 Ламер: ну да, пехепе надо изучать.

9 апреля 2010 в 21:56
Аватар пользователя Dan Dan 0

Очень хорошее дело ты задумал! Спасибо.
После перевода надо будет занести статьи в подшивку документации в обязательном порядке.

11 апреля 2010 в 12:09

Dan wrote:
После перевода надо будет занести статьи в подшивку документации в обязательном порядке.

Ага, только надо со ссылками на оригиналы треллонавтовских статей Smile

11 апреля 2010 в 13:23
Аватар пользователя Dan Dan 0

"graker" wrote:
Ага, только надо со ссылками на оригиналы треллонавтовских статей :)

И на твой блог тоже Smile
На английском худо-бедно найти информацию можно, но на русском мало. Тем более в одном месте.

11 апреля 2010 в 17:55

Dan wrote:
На английском худо-бедно найти информацию можно, но на русском мало. Тем более в одном месте.

А ведь коммьюнити для этого и существуют! Smile

11 апреля 2010 в 18:41

Сначала меня насторожила статья про CCK, которая закончилась словами

Quote:

Несмотря на длину заметки, мы рассмотрели процесс только поверхностно. Более детальную информацию об использованных здесь функциях, ищите в модулях, включенных в состав CCK, таких как 'text' и 'nodereference', ...

я подумал,
ладно, веротяно кому то лень просто прочесть апи на api.drupal.org и ему проще увидеть это в такой вот неформальной форме пересказа...

но когда я прочитал статью о хуках

которая содержит ряд КОНЦЕПТУАЛЬНЫХ ошибок в описаниях хуков DRUPAL
я понял:

это переводить не только не нужно,а еще и вредно.

как пример - хуки друпала не привязаны к имени модуля. Да, такая привязка в некоторых "высокоуровневых" функциях друпала есть. Но это не правило.

За информацией к размышлению -> описание хуков работы с программно организованными типами материалов. Которые О УЖАС не привязаны к названию модуля, но тем не менее называются хуками etc...

жду фееричного продолжения

13 апреля 2010 в 23:33

Dеmimurych wrote:
которая содержит ряд КОНЦЕПТУАЛЬНЫХ ошибок в описаниях хуков DRUPAL

Я правильно понял, ряд состоит из одного пункта?

Quote:
как пример - хуки друпала не привязаны к имени модуля. Да, такая привязка в некоторых "высокоуровневых" функциях друпала есть. Но это не правило.

Базару нет. Нельзя ли фееричную цитату, где написано, что это правило?

13 апреля 2010 в 23:41

"graker" wrote:
Нельзя ли фееричную цитату, где написано, что это правило?

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

пример

Quote:

Например, если у кого-нибудь есть модуль foo и нужно реализовать hook_bar, нужно поместить в модуль foo функцию под названием foo_bar. Так что реализовать хук не очень-то и сложно

и так далее.

весь материал написан таким образом что создает ложное впечатлние будто бы хуки привязаны к имени модуля.

21 апреля 2010 в 22:46

Dеmimurych wrote:
а это не так. к имени модуля - это имеет отношение точно так же как ромб к паралелограмму.
первый является частным случаем последнего.

Во-первых: в данном случае скорее наоборот - реализация хуков _insert, _update, _delete и еще нескольких в модуле node является исключением из правила, если уж вам угодно называть это правилом. Если же есть некое более общее правило, может быть, уже пора его привести вместе со ссылкой на документацию, где это правило указано?

Во-вторых: node_invoke - это workaround, созданный для того, чтобы разработчик не втыкал условные операторы в хуки, если у него создается несколько типов нод в одном модуле. О том, что это workaround говорит вся реализация, начиная с того, что в комментариях к hook_node_info() говорится "обычно сюда вставляют имя модуля" и заканчивая тем, что столбец в БД, в котором хранится префикс названия функции реализации хука прямо так и называется - имя модуля ('module'). Сделано это, я полагаю, специально, чтобы у пользователя не создалось впечатление о существовании неких более общих правил, нежели имямодуля_имяхука.

В третьих, не стоит забывать, что это обучающая статья, в которой необходимо дать читателю представление о хуках и том, как они обычно именуются, а не перечислять частные случаи, с которыми многие могут вообще не столкнуться. Кстати, в цикле была запланирована статья и про Node API, так что рассказать об обсуждаемой проблеме они могут и потом.

В четвертых, реализацию произвольного хука, вызываемого через module_invoke() или module_invoke_all(), иначе как с имени модуля у вас начать не получится, и это действительно правило.

Наконец, в пятых, если эта ошибка так фундаментальна, предлагаю начать ее исправление прямо со страницы API Hooks, потому что ее авторы явно с вами насчет правил не согласны. Цитата:

Quote:
Drupal's module system is based on the concept of "hooks". A hook is a PHP function that is named foo_bar(), where "foo" is the name of the module (whose filename is thus foo.module) and "bar" is the name of the hook. Each hook has a defined set of parameters and a specified result type.
The available hooks to implement are explained here in the Hooks section of the developer documentation. The string "hook" is used as a placeholder for the module name in the hook definitions. For example, if the module file is called example.module, then hook_help() as implemented by that module would be defined as example_help().

22 апреля 2010 в 0:26

Быстро ты.

Насчет полезности я иначе считаю. Цикл-то про API, поэтому хотелось бы больше о работе с API, а не общие слова. Но хорошо, значит я уже не зря переводил Smile

31 октября 2010 в 21:35