Comments 24
а почему в tpl-файлах не использовалась функция l()? Вместо:
Получилось бы
l($url->name, «rss_feeds/{$url->id}/items», array('attributes' => array('target' => '_blank')));
Плюс на сабмите форм используйте $form_state['redirect'] вместо drupal_goto(). drupal.stackexchange.com/a/30938
Получилось бы
l($url->name, «rss_feeds/{$url->id}/items», array('attributes' => array('target' => '_blank')));
Плюс на сабмите форм используйте $form_state['redirect'] вместо drupal_goto(). drupal.stackexchange.com/a/30938
Почему статей мало? Вы же сами приводите ссылку на drupal.org, там есть очень подробный и понятный раздел по созданию модулей для текущей версии: drupal.org/node/1074360
Там нету примеров создания таблицы в БД, прикрепления JS, создания переводов. Хотелось бы увидеть все это все в цельной статье, а не искать по кусочкам, как я и делал. Тем более на русском более понятно, нежели на английском.
drupal.org/project/examples страница с модулями примерами на многие случаи жизни
Там нету примеров создания таблицы в БД
Надо быть внимательнее, в том же меню есть:
drupal.org/node/876250
В функции rss_list в theme('table') рекомендую добавлять параметр Empty, на тот случай если запрос окажется пустой.
Вообще сам хотел попасть на Хабр с подобной статьёй. Но как ни брался, понимал, что все, что я хотел написать есть на Drupal.org. Например к некоторым хукам в комментариях обязательно есть ссылка на более подробную документацию к этому хуку.
Почему вы не использовали hook_permission? Получается вашим модулем может пользоваться только администратор. И вообще одна из фишек, за которые я люблю Друпал, это то, что к любому полю формы можно через атрибут #access настроить права доступа. И не надо «корячится» с IF-ами.
Хотелось написать цельную статью по созданию модуля, нежели «бегать» по разным ссылкам. Да и не все хорошо знают английский.
Permission настроен специально, чтобы добавлять ленты мог только администратор, а пользователи только читать их.
Permission настроен специально, чтобы добавлять ленты мог только администратор, а пользователи только читать их.
Еще небольшой фикс в hook_install. Нашел когда-то в документации:
//Don't put a comma after primary key definition, since doing so will cause database errors.
(Не ставьте запятую после объяления primary key, это может вызвать ошибки в базе данных).
Должно быть так:
И желательно для serial, int указывать размер — 'size'=>'normal'(big и т.п.).
//Don't put a comma after primary key definition, since doing so will cause database errors.
(Не ставьте запятую после объяления primary key, это может вызвать ошибки в базе данных).
Должно быть так:
<?php
$schema['rssfeeds'] = array(
'fields' => array(
'id' => array('type' => 'serial', 'not null' => TRUE),
'name' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE),
'url' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE),
'created_at' => array('type' => 'int', 'not null' => TRUE),
'updated_at' => array('type' => 'int', 'not null' => TRUE),
),
'primary key' => array('id')
);
И желательно для serial, int указывать размер — 'size'=>'normal'(big и т.п.).
Спасибо, исправил. Но size вроде бы по умолчанию стоит normal.
данный комментарий в нём говорит лишь о компетенции автора
Возможно, но я не могу судить о компетенции автора, так, как вы. Хотя бы потому, что с ним лично не знаком и спросить мне не у кого (вы же участвуете в разработке ядра и больше знакомы с другими разработчиками). На самом деле есть запятая или нет ее, для PHP нет никакой разницы, поэтому хуже не будет.
И да, скорей всего, это перешло при переносе модулей на Drupal 7. Спасибо, буду знать.
Написание модуля для Drupal — свежо и молодёжно.
Перейдём к ревью:
Не обязательно.
Оберните в тег code, хабрапарсер побил кавычки.
Тут могу ошибаться, но файл модуля указывать совсем не обязательно.
Вы прогоняли свой модуль через coder или другой инструмент? Кодинг-стандарт у вас не друпальный.
Некоторые ваши функции имеют просто префикс rss_*, с rss_load() понятно, а rss_list() и rss_content()?
Перейдём к ревью:
все новые модули, которые Вы хотите добавить, должны находиться в этой папке
Не обязательно.
создаем файл rss_feeds.info
Оберните в тег code, хабрапарсер побил кавычки.
files[]= rss_feeds.module
Тут могу ошибаться, но файл модуля указывать совсем не обязательно.
Вы прогоняли свой модуль через coder или другой инструмент? Кодинг-стандарт у вас не друпальный.
Некоторые ваши функции имеют просто префикс rss_*, с rss_load() понятно, а rss_list() и rss_content()?
RxB знает о чем говорит. :)
Можешь немного расписать свое видение на данный момент — ты перешел на RoR?
Можешь немного расписать свое видение на данный момент — ты перешел на RoR?
Все писали свой первый модуль, тут нет ничего зазорного и слоупочного.
В files[] нужно прописывать только файлы с классами (типа хэндлеров Views). *.module, *.token.inc, *.variable.inc и т.д. подсасываются сами.
Из rss_feeds_uninstall можете всё удалять. Указанные вами вещи друпал 7 сделает сам.
Вы свой модуль запускали вообще?
return $schema хоть напишите.
hook_form вы не используете.
В целом отлично для начала. Успехов!
Тут могу ошибаться, но файл модуля указывать совсем не обязательно.
В files[] нужно прописывать только файлы с классами (типа хэндлеров Views). *.module, *.token.inc, *.variable.inc и т.д. подсасываются сами.
Из rss_feeds_uninstall можете всё удалять. Указанные вами вещи друпал 7 сделает сам.
rss_feeds_schema
Вы свой модуль запускали вообще?
return $schema хоть напишите.
Подробнее о hook_form().
hook_form вы не используете.
drupal_goto
$form_state['redirect']
В целом отлично для начала. Успехов!
На счет первого замечания согласен, можно не только в этой папке. А на счет обязательности .info файла… Я описывал конкретно свой взгляд на разработку модуля, а не дополнение к документации Drupal.
По третьему замечание — все верно выводит. Там кавычки не нужны.
Кодинг-стандарта как такового нету. Это IDE форматировала код таким образом. Я не делал на этом акцент, в будущем буду обращать внимание.
Функции rss_list() и rss_content() это функции отображения страницы. Я так назвал их в хуке меню.
По третьему замечание — все верно выводит. Там кавычки не нужны.
Кодинг-стандарта как такового нету. Это IDE форматировала код таким образом. Я не делал на этом акцент, в будущем буду обращать внимание.
Функции rss_list() и rss_content() это функции отображения страницы. Я так назвал их в хуке меню.
Ох и наворотили же вы.
Во-первых, для чтения и вывода RSS есть модуль «из-коробки».
Во-вторых, хоть код и не ужасен, но очень многое сделано криво.
Во-первых, для чтения и вывода RSS есть модуль «из-коробки».
Во-вторых, хоть код и не ужасен, но очень многое сделано криво.
Sign up to leave a comment.
Создание модуля под Drupal 7. Часть 1