50 полезных мелочей для спеца

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

Аватар пользователя seaji seaji 27 ноября 2007 в 15:28

Перевод вот этого : http://www.lullabot.com/audiocast/podcast-50-drupal-tips-and-tricks с моими комментариями
Слушать подкаст тяжеловато, очень много информации дается в короткое время. Но зато почти все популярно объясняется с примерами.

Drupal admin and configuration:

1. Создайте блок "Помощь по HTML" и в настройках видимости задайте показ на страницах "node/*/edit" и "node/add/*"

2. Можно получить табличку управления доступом с одной колонкой для одной роли, для этого перейдите по ссылке "управлять доступом" на странице admin/user/roles

3. Используйте Firefox Web Developer Toolbar для заполнения формы на странице управления доступом для админа

4. В поиске Google используйте следующий шаблон "site:drupal.org {search terms}" - это значит вы ищете по всему drupal.org
Настройте ярлык в FF так, что набирая "dru [your search]" вы ищете по Друпалу
Можно еще использовать api.drupal.org/apis/{search_term} для поиска по API

5. Если вы используете pathauto для создания алиасов пользовательских имен, то не давайте пользователям прав на смену своего имени.

6. Используя совместно модули PathAuto и Path Redirect вы можете редиректить старые алиасы на новые. Поисковики вас полюбят за это.
(при изменении алиаса старый не удаляется, а начинает ссылаться на системный путь "node/")

7. Используя модуль Global Redirect вы можете быть уверены, что домашняя страница это "/" и текущая страница не имеет алиасов.

8. Создавая шаблон пути для PathAuto, имейте ввиду уникальность адресов. Имеет смысл добавлять дату к записям в дневнике или к новостям.

9. Вы можете перемещать пункт меню "моя учетная запись" создав свой пунк меню со ссылкой на 'user'
(системное меню "моя учетная запись" заблокировано, и вы ничего не можете с ним делать)

10. Используйте модуль update_status совместно с cvs_deploy & cvs tags для управления сайтами.

11. Для ресайза картинок используйте модуль ImageCache. Простой интерфейс и настройки, работает с ImageField, CCK и Views.

12. Вы можете превратить любой тип материала (CCK) с imagefield в Фото-каст с помощью модуля ConTemplate

13. Допустим у вас "имя" и "фамилия" это разные поля, а вы хотите в качестве заголовка иметь полностью "имя фамилия" - используйте Automatic Node Titles

14. Используя SimpleMenu можно убрать админ блок со страницы
(типа перенести его в компактный вид куда нибудь)

15. Обновляя сайт всегда переводите его в "offline mode", чтоб не конфузить пользователей.
(кажется это в администрирование -> настройки)

16. В шестом Друпале появиться новая фича "locale lite" которая позволит переводить только некоторые части интерфейса избегая нагрузчивого модуля locale.
(это к нам мало относится т.к. это про изменение английских фраз типа "Forums" на "Message Boards")

17. Нужно построить свой расширенный поиск по своим полям? Используйте модули views + views_fastsearch

Drupal.org

18. Enable the contributor block on drupal.org. This will give you access to all kinds of useful links, as well as tell you how close we are to releasing Drupal 6.
(это и так понятно)

19. Друпал Планет - интересное местечко где можно узнать кто над чем работает http://drupal.org/planet

20. 21. Сообщайте о багах или о своих предложениях (для модулей) не на форуме а в специальном месте "issue queues"

22. Видеокаст - полно видео по теме http://drupal.org/videocasts

23. Подпишитесь на аннонсы по безопасности здесь http://drupal.org/security вы первые узнаете про дыры и тут же сможете их залатать.

24. Продвинутый поиск:
Если не хотим искать это слово, ставим перед ним минусик : -Joomla
Ищем определенный тип материала, используем такой вид : type:forum или type:image
Четко знает всю фразу, заключаем ее в кавычки, например: "Drupal rocks"

Theming

25. Установите локально Друпал с какой нибудь простенькой темой (напр. Zen) и покажите дизайнеру код перед тем как он начнет работать. Особенно стоит выделить такие вещи как табы и сообщения.
(Вообще вы экономите кучу времени и нервов если дизайнер (или верстальщик) будет придерживаться друпаловских классов и ID)

26. Если вы работаете над темой, то смените административную тему. Таким образом вы будете уверены, что даже если вы что то и напортачите в теме, то страница "admin" всегда будет доступна.
(не думал про это, наверное удобно)

27. Если вы еще не знали, то знайте, что Firebug (для FF) отлично ищет баги не только в JS но и в CSS

28. Работаете с файлом шаблона *.tpl.php и не знаете какие переменные вам доступны? Не беда, вот это вам поможет:
<?php var_dump(get_defined_vars()); ?>
(видимо нужно сделать print или print_r() этого дела, хотя может и само печатает но вряд ли)

29. Изменять ссылки к материалу можно с помощью хука hook_link_alter(). Например, поменять "Read more" на "More..."
(не знаю можно ли менять "hook" на имя темы или эта вещь работает только в модулях).

30. Еще одна полезняшка, функция format_interval(). Возвращает что то типа "10 минут 15 секунд назад".

31. Если вы используете кэш для анонимов, то стоит позаботиться о динамическом содержимом страниц и приспособить это содержимое к кэшу. Например, для анонимов стоит использовать абсолютный формат даты, а не относительный "{X} hours, {Y} seconds ago"

Views

32. Вставлять виды в файлы template.php или .tpl.php можно с использованием функции темизации вида: theme('view', {arguments})

33. Вы можете использовать "argument handling code" для любой манипуляции над видом. Можете менять его параметры в зависимости от условий или без всяких условий.

34. Используйте "поместить на главную" или "закрепить вверху списков" еще попробуйте Views Bookmarks
(и вы что то сделаете, я не совсем понял что)

35. Хотите руководить выводом списков материалов в словаре? назначьте словарю вид. Используйте Views + Taxonomy Redirect

36. Если есть желание посмотреть на объект $view (в котором все параметры вида)? Вам поможет вот это вещь: print_r($view), расположенная в поле "argument handling code"

37. Вид может создать страницу и блок, страница имеет url, а блок имеет ссылку "подробней" которая ссылается на эту url.
Что делать если вам нужно нескольно разных блоков, которые имеют ссылку на одну и ту же страницу?
Просто, можно сделать много видов, которые создают только блок (без страницы) и дать всем этим видам один url и они будут ссылаться на одну страницу.

JavaScript

38. Переводите ваш JS таким способом:
<?php
drupal_add_js(array('my_module' => array('my_string' => t('My string'))), 'setting')
?>
Получайте переведенные строки здесь (JS): Drupal.settings.my_module.mystring

39. То же и с url-ками:
<?php
drupal_add_js(array('my_module' => array('my_url' => url('node/10'))), 'setting')
?>
Это легче и надежней чем используя $base_path и Clean URL.

Drupal Development and Coding

40. DON'T HACK DRUPAL
(да да, именно так, большими буквами и было написано)

41. Современные IDE (Zend, Komodo, Eclipse) парсят код ядра Друпала и дают вам автокомплит Друпальных функций и множественные подсказки.

42. Установите локальную версию api.drupal.org (модуль api.module) - вы будете иметь документацию к вашему, конкретному сайту (включая сторонние модули). Документация: http://drupal.org/node/26669

43. Функция arg() поможет вам узнать какие аргументы передаются странице через адресную строку.

44. Переменная $_GET['q'] даст вам системный путь этой странице, алиасы не входят в эту переменную.

45. Хотите узнать залогинен ли данный юзер или нет? Вот как это делается:
<?php
if ($GLOBALS['user']->uid) {/* the user is logged in */}
?>

46. In Drupal 6, the contrib Schema module will generate a full-documented list of Drupal's tables. See http://jaspan.com/drupal-6s-self-documenting-database-schema and http://drupal.org/node/184586.

47. Use cvs annotate to track down the hows and whys of a particular line of code. View a how-to at http://www.lullabot.com/articles/cvs_annotate_or_what_the_heck_were_they...

48. Модуль Coder не только следит за соответствием вашего кода стандартам кодирования, но и может извещать вас о том, как следует апдейтить модуль для следующей версии Друпала.

49. На сайте api.drupal.org используйте вкладку "List references". Она покажет какие функции вызывают эту функцию и какие функции вызываются в этой функции.

50. Drush!
(черт знает, что это такое)

Комментарии

Аватар пользователя Dan Dan 30 ноября 2007 в 15:37

var_dump(get_defined_vars());
(видимо нужно сделать print или print_r() этого дела, хотя может и само печатает но вряд ли)

Не надо. var_dump выдаёт подробную информацию о переменной. Если нужен в выдаче чистый php, лучше юзать ф-цию var-export

29. Изменять ссылки к материалу можно с помощью хука hook_link_alter(). Например, поменять "Read more" на "More..."
(не знаю можно ли менять "hook" на имя темы или эта вещь работает только в модулях).

Для тем надо юзать theme_links

50. Drush!
(черт знает, что это такое)

Drupal shell. Управление друпалом через консоль. Когда задолбает щёлкать мышкой в браузере, попробуй Smile Для винды статус - deep developer Smile

Ещё совет. Для программистов. Я на это дело целый день убил, уже думал, что баг (в PHP или Drupal ).
Если вы пишите код, который будет исполняться ф-цией eval() (например создаёте материал с PHP-кодом или насилуете views-аргументы) и вам надо использовать _свои_ глобальные переменные, например так:
<?php
$var = 'string';

function my_func(){
global $var;
print( $var );
}
?>
То такой код работать не будет (в данном случае ничего выведено не будет), ибо этот код не входит в глобальный контекст. Исправить это просто: надо сделать нужную переменную глобальной заранее. Вот так:
<?php
global $var;
$var = 'string';

function my_func(){
global $var;
print( $var );
}
?>

Удачи! Smile

Аватар пользователя Ильич Рамирес Санчес Ильич Рамирес Санчес 30 ноября 2007 в 22:27

DON'T HACK DRUPAL

Это вы зря.. ща пишу свой модуль. был приятно удивлен хуками на аплоад файлов которые делает модуль Image.

Естественно лезешь в дро 5го и 6го друпала и смотришь как сделано там чтобы все сделать стандартными функциями апи и не потерять совместимость... так что... hack must have.

Вдруг мне же придется в текущиих проектах делать миграцию на 6ку а не другому кодеру? Smile
Я хочу это быстро и легко Lol

Аватар пользователя seaji seaji 1 декабря 2007 в 14:45

Ну да, система хуков и позволяет наклонять Друпал как угодно.
А хакая ядро вы теряете все плюсы свободного ПО т.к. получаете уже свой личный продукт и никто вам уже не сможет помочь.

Аватар пользователя Mr.Alinaki Mr.Alinaki 5 декабря 2007 в 2:46

Drush! = Друпальте! IMHO

А вообще вовремя это появилось Smile наконец-то решился разработать первый заказной сайт на друпале после пары месяцев вкуривания.

Аватар пользователя anser anser 18 декабря 2007 в 20:21

Первый пункт тут самый полезный. Я пошел дальше и сделал вывод блока "Помощь" не только на node/*/edit и node/add/*, но и на comment/reply* и comment/edit* . Считаю, так намного логичнее.

Аватар пользователя nleo nleo 13 ноября 2008 в 16:05

41. Современные IDE (Zend, Komodo, Eclipse) парсят код ядра Друпала и дают вам автокомплит Друпальных функций и множественные подсказки.

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

Аватар пользователя qman qman 3 февраля 2009 в 22:32

Спасибо за перевод.

"nleo" wrote:
41. Современные IDE (Zend, Komodo, Eclipse) парсят код ядра Друпала и дают вам автокомплит Друпальных функций и множественные подсказки.

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


Кто нибудь смог настроить автокомплит (auto - complite)?

Аватар пользователя nleo nleo 4 февраля 2009 в 6:48

"qman" wrote:
Кто нибудь смог настроить автокомплит (auto - complite)?

вся сила в магической комбинации клавишь < Ctrl >+< Space >

ЗЫ NetBeans в 100 раз лучше для серьезной разработки, чем Komodo Edit

Аватар пользователя faraon faraon 18 июля 2009 в 20:35

27. Если вы еще не знали, то знайте, что Firebug (для FF) отлично ищет баги не только в JS но и в CSS

Сам ищет баги или помогает их найти? Такой возможности (поиск багов) не замечал в фаербаге.

Аватар пользователя Dan Dan 18 июля 2009 в 20:51

"faraon" wrote:
Сам ищет баги или помогает их найти? Такой возможности (поиск багов) не замечал в фаербаге.

Скорее помогает. Найти баги в CSS не так-то просто.