Перевод вот этого : 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!
(черт знает, что это такое)
Комментарии
в мемориз
Большая работа
Пасиб.
http://drupal.org/project/drush интересный и порой полезный модуль, тоже рекомендую
отмечусь, чтобы не потерять эту тему спасибо
очень замечательно , сразу же 1 пункт сделал и очень удобно.
Кином-бы интересне. А то голос в перемешку с ха-ха на языке шекспира не очень
спасибо, полезные советы
особо про помощь понравилось (1 пункт)
Спасибо.
титанический труд, я когда вначале в трекере прочитал тему - думал шутка...
1) hook_link_alter() пишется в модуле, как и все хуки
2) полезно про theme('view'), я обычно как-то длинно писал
Очень много полезного, спасибо!
2 andypost@drupal.org:
Поделись, плиз, примерами использования Drush...
Не надо. var_dump выдаёт подробную информацию о переменной. Если нужен в выдаче чистый php, лучше юзать ф-цию var-export
Для тем надо юзать theme_links
Drupal shell. Управление друпалом через консоль. Когда задолбает щёлкать мышкой в браузере, попробуй Для винды статус - deep developer
Ещё совет. Для программистов. Я на это дело целый день убил, уже думал, что баг (в 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 );
}
?>
Удачи!
DON'T HACK DRUPAL
Это вы зря.. ща пишу свой модуль. был приятно удивлен хуками на аплоад файлов которые делает модуль Image.
Естественно лезешь в дро 5го и 6го друпала и смотришь как сделано там чтобы все сделать стандартными функциями апи и не потерять совместимость... так что... hack must have.
Вдруг мне же придется в текущиих проектах делать миграцию на 6ку а не другому кодеру?
Я хочу это быстро и легко
Имелось вввиду: "Не вносите правки в ядро Друпала!"
Ну да, система хуков и позволяет наклонять Друпал как угодно.
А хакая ядро вы теряете все плюсы свободного ПО т.к. получаете уже свой личный продукт и никто вам уже не сможет помочь.
очень интересно +1
спасибо!
Drush! = Друпальте! IMHO
А вообще вовремя это появилось наконец-то решился разработать первый заказной сайт на друпале после пары месяцев вкуривания.
Спасибо читал это с переводчиком, но здесь намного удобней....
Ну и чтоб не потерять тему
хорошо поработал
Первый пункт тут самый полезный. Я пошел дальше и сделал вывод блока "Помощь" не только на node/*/edit и node/add/*, но и на comment/reply* и comment/edit* . Считаю, так намного логичнее.
спасибки
Спасибо. Отличная информация.
41. Современные IDE (Zend, Komodo, Eclipse) парсят код ядра Друпала и дают вам автокомплит Друпальных функций и множественные подсказки.
я наверно туплю, но подскажите как сделать так чтоб комодо едит, пропарсил друпал и выдавал подсказки
спасибо! Большая работа и полезная. В закладки.
Спасибо за перевод.
Кто нибудь смог настроить автокомплит (auto - complite)?
вся сила в магической комбинации клавишь < Ctrl >+< Space >
ЗЫ NetBeans в 100 раз лучше для серьезной разработки, чем Komodo Edit
спасибо. действительно, позволяет систематизировать знания.
+1
Спасибо, сразу же пункт 5 выполнил
27. Если вы еще не знали, то знайте, что Firebug (для FF) отлично ищет баги не только в JS но и в CSS
Сам ищет баги или помогает их найти? Такой возможности (поиск багов) не замечал в фаербаге.
Скорее помогает. Найти баги в CSS не так-то просто.
Спасибо!
спасибо!
отлично! а закладки!