hook_deleteQdrupal7
drupal7 时间:2021-04-13 阅读:(
)
ProDrupal7DevelopmentToddTomlinsonJohnK.
VanDykThirdEditionProDrupal7Development:ThirdEditionCopyright2010byToddTomlinsonandJohnK.
VanDykAllrightsreserved.
Nopartofthisworkmaybereproducedortransmittedinanyformorbyanymeans,electronicormechanical,includingphotocopying,recording,orbyanyinformationstorageorretrievalsystem,withoutthepriorwrittenpermissionofthecopyrightownerandthepublisher.
ISBN978-1-4302-2838-7ISBN978-1-4302-2839-4(eBook)DOI10.
1007/978-1-4302-2839-4987654321Trademarkednames,logos,andimagesmayappearinthisbook.
Ratherthanuseatrademarksymbolwitheveryoccurrenceofatrademarkedname,logo,orimageweusethenames,logos,andimagesonlyinaneditorialfashionandtothebenefitofthetrademarkowner,withnointentionofinfringementofthetrademark.
Theuseinthispublicationoftradenames,trademarks,servicemarks,andsimilarterms,eveniftheyarenotidentifiedassuch,isnottobetakenasanexpressionofopinionastowhetherornottheyaresubjecttoproprietaryrights.
PresidentandPublisher:PaulManningLeadEditor:MichelleLowmanTechnicalReviewers:JoshuaBrauer,RobertDouglass,PeterM.
WolaninEditorialBoard:SteveAnglin,MarkBeckner,EwanBuckingham,GaryCornell,JonathanGennick,JonathanHassell,MichelleLowman,MatthewMoodie,DuncanParkes,JeffreyPepper,FrankPohlmann,DouglasPundick,BenRenow-Clarke,DominicShakeshaft,MattWade,TomWelshCoordinatingEditor:AnitaCastroCopyEditor:MaryAnnFugateProductionSupport:PatrickCunninghamIndexer:BIMIndexing&ProofreadingServicesArtist:AprilMilneCoverDesigner:AnnaIshchenkoDistributedtothebooktradeworldwidebySpringerScience+BusinessMedia,LLC.
,233SpringStreet,6thFloor,NewYork,NY10013.
Phone1-800-SPRINGER,fax(201)348-4505,e-mailorders-ny@springer-sbm.
com,orvisitwww.
springeronline.
com.
Forinformationontranslations,pleasee-mailrights@apress.
com,orvisitwww.
apress.
com.
ApressandfriendsofEDbooksmaybepurchasedinbulkforacademic,corporate,orpromotionaluse.
eBookversionsandlicensesarealsoavailableformosttitles.
Formoreinformation,referenceourSpecialBulkSales-eBookLicensingwebpageatwww.
apress.
com/info/bulksales.
Theinformationinthisbookisdistributedonan"asis"basis,withoutwarranty.
Althougheveryprecautionhasbeentakeninthepreparationofthiswork,neithertheauthor(s)norApressshallhaveanyliabilitytoanypersonorentitywithrespecttoanylossordamagecausedorallegedtobecauseddirectlyorindirectlybytheinformationcontainedinthiswork.
ContentsataGlanceForewordxxvAbouttheAuthorsxxviAbouttheTechnicalReviewersxxviiAcknowledgmentsxxviiiIntroductionxxixChapter1:HowDrupalWorks1Chapter2:WritingaModule.
13Chapter3:Hooks,Actions,andTriggers33Chapter4:TheMenuSystem57Chapter5:WorkingwithDatabases89Chapter6:WorkingwithUsers.
115Chapter7:WorkingwithNodes.
137Chapter8:WorkingwithFields163Chapter9:TheThemeSystem185Chapter10:WorkingwithBlocks223Chapter11:TheFormAPI239Chapter12:ManipulatingUserInput:TheFilterSystem.
295Chapter13:SearchingandIndexingContent307Chapter14:WorkingwithFiles323iiiivCONTENTSATAGLANCEIIChapter15:WorkingwithTaxonomy343IIChapter16:Caching365IIChapter17:Sessions379IllChapter18:UsingjQuery389chapter10:LocalizationandTranslation417IIChapter20:XML-RPC451IIChapter21:WritingSecureCode.
465IIChapter22:DevelopmentBestPractices487IIChapter23:OptimizingDrupal499IIChapter24:InstallationProfiles.
525IIChapter25:Testing545IIAppendixA:DatabaseTableReference565IIAppendixB:Resources623Index111ContentsForewordxxvAbouttheAuthors.
xxviAbouttheTechnicalReviewersxxviiAcknowledgmentsxxviiiIntroductionxxixChapter1:HowDrupalWorks1WhatIsDrupal1TechnologyStack1Core2AdministrativeInterface3Modules3Hooks5Themes5Nodes6Fields6Blocks6FileLayout6ServingaRequest.
9TheWebServer'sRole9TheBootstrapProcess.
10vCONTENTSProcessingaRequest.
10ThemingtheData11Summary11IIIChapter2:WritingaModule.
13CreatingtheFiles.
13ImplementingaHook.
15AddingModule-SpecificSettings17DefiningYourOwnAdministrationSection.
25PresentingaSettingsFormtotheUser.
26ValidatingUser-SubmittedSettings.
29StoringSettings29UsingDrupal'svariablesTable29RetrievingStoredValueswithvariable_getO30FurtherSteps30Summary31IIChapter3:Hooks,Actions,andTriggers33UnderstandingEventsandTriggers.
33UnderstandingActions.
35TheTriggerUserInterface.
35YourFirstAction38AssigningtheAction.
39ChangingWhichTriggersanActionSupports40UsingtheContextinActions.
45HowtheTriggerModulePreparestheContext.
45ChangingExistingActionswithaction_info_alterQ.
46EstablishingtheContext.
47viCONTENTSHowActionsAreStored.
49TheactionsTable49ActionIDs49CallinganActionDirectlywithactions_doQ50DefiningYourOwnTriggerswithhook_trigger_infoQ51AddingTriggerstoExistingHooks.
54Summary55IIChapter4:TheMenuSystem.
57CallbackMapping51MappingURLstoFunctions51CreatingaMenuItem61PageCallbackArguments.
64PageCallbacksinOtherFiles67AddingaLinktotheNavigationBlock.
68MenuNesting.
69AccessControl70TitleLocalizationandCustomization72DefiningaTitleCallback.
72WildcardsinMenuItems74BasicWildcards.
74WildcardsandPageCallbackParameters.
75UsingtheValueofaWildcard.
75WildcardsandParameterReplacement77PassingAdditionalArgumentstotheLoadFunction78Special,PredefinedLoadArguments:%mapand%index79BuildingPathsfromWildcardsUsingto_argOFunctions79SpecialCasesforWildcardsandto_argOFunctions79viiCONTENTSAlteringMenuItemsfromOtherModules.
80AlteringMenuLinksfromOtherModules82KindsofMenultems.
82CommonTasks84AssigningCallbacksWithoutAddingaLinktotheMenu85DisplayingMenuItemsAsTabs.
85HidingExistingMenuItems.
87Usingmenu.
module.
87CommonMistakes.
88Summary88IIChapter5:WorkingwithDatabases89DefiningDatabaseParameters.
89UnderstandingtheDatabaseAbstractionLayer90ConnectingtotheDatabase.
91PerformingSimpleQueries.
92RetrievingQueryResults93GettingaSingleValue94GettingMultipleRows94UsingtheQueryBuilderandQueryObjects.
94GettingaLimitedRangeofResults95GettingResultsforPagedDisplay96OtherCommonQueries97InsertsandUpdateswithdrupal_write_recordO98TheSchemaAPI.
99UsingModule.
installFiles.
100CreatingTables.
100UsingtheSchemaModule.
102FieldTypeMappingfromSchematoDatabase.
103viiiCONTENTSDeclaringaSpecificColumnTypewithmysql_type106MaintainingTables108DeletingTablesonUninstall109ChangingExistingSchemaswithhook_schema_alterQ110ModifyingOtherModules'Querieswithhook_query_alterO111ConnectingtoMultipleDatabasesWithinDrupal112UsingaTemporaryTable113WritingYourOwnDatabaseDriver114Summary114IIIChapter6:WorkingwithUsers.
115The$userObject.
115TestingIfaUserIsLoggedIn118Introductiontouserhooks.
118Understandinghook_user_view($account,$view_mode)120TheUserRegistrationProcess.
122Usingprofile.
moduletoCollectUserInformation125TheLoginProcess125AddingDatatothe$userObjectatLoadTime127ProvidingUserInformationCategories.
129ExternalLogin130Summary135IIChapter7:WorkingwithNodes.
137SoWhatExactlyIsaNode137NotEverythingIsaNode140CreatingaNodeModule140Creatingthe.
installFile.
140Creatingthe.
infoFile143ixCONTENTSCreatingthe.
moduleFile143ProvidingInformationAboutOurNodeType144ModifyingtheMenuCallback.
145DefiningNode-Type-SpecificPermissionswithhook_permissionQ.
146LimitingAccesstoaNodeTypewithhook_node_accessQ147CustomizingtheNodeFormforOurNodeType148ValidatingFieldswithhook_validateQ.
149SavingOurDatawithhook_insertQ.
149KeepingDataCurrentwithhook_updateQ150CleaningUpwithhook_deleteQ.
150ModifyingNodesofOurTypewithhook_loadQ.
151Usinghook_viewQ.
151ManipulatingNodesThatAreNotOurTypewithhook_node_xxxxxQ.
153HowNodesAreStored.
155CreatingaNodeTypewithCustomContentTypes.
157RestrictingAccesstoNodes.
157DefiningNodeGrants.
157TheNodeAccessProcess159Summary161IIIChapter8:WorkingwithFields163CreatingContentTypes163AddingFieldstoaContentType165CreatingaCustomField169AddingFieldsProgrammatically.
181Summary183XCONTENTSIIChapter9:TheThemeSystem185Themes185InstallinganOff-the-ShelfTheme185BuildingaTheme.
186The.
infoFile194AddingRegionstoYourTheme194AddingCSSFilestoYourTheme194AddingJavaScriptFiles195AddingSettingstoYourTheme195UnderstandingTemplateFiles198TheBigPicture198Thehtml.
php.
tplFile.
200OverridingTemplateFiles.
214OtherTemplateFiles215OverridingThemableItems216OverridingwithTemplateFiles.
219AddingandManipulatingTemplateVariables219UsingtheThemeDeveloperModule.
221Summary221IIIChapter10:WorkingwithBlocks.
223WhatIsaBlock223BlockConfigurationOptions226BlockPlacement.
227DefiningaBlock228UsingtheBlockHooks.
229BuildingaBlock.
230EnablingaBlockWhenaModuleIsInstalled237xiCONTENTSBlockVisibilityExamples238DisplayingaBlocktoLogged-InUsersOnly.
238DisplayingaBlocktoAnonymousUsersOnly238Summary238IIIChapter11:TheFormAPI.
239UnderstandingFormProcessing.
239InitializingtheProcess241SettingaToken.
241SettinganID241CollectingAllPossibleFormElementDefinitions241LookingforaValidationFunction242LookingforaSubmitFunction243AllowingModulestoAltertheFormBeforeIt'sBuilt.
243BuildingtheForm243AllowingFunctionstoAltertheFormAfterIt'sBuilt243CheckingIftheFormHasBeenSubmitted.
244FindingaThemeFunctionfortheForm244AllowingModulestoModifytheFormBeforeIt'sRendered244RenderingtheForm244ValidatingtheForm245SubmittingtheForm.
246RedirectingtheUser.
246CreatingBasicForms.
247FormProperties.
249FormIDs249Fieldsets250ThemingForms.
253SpecifyingValidationandSubmissionFunctionswithhook_formsQ.
257CallOrderofTheme,Validation,andSubmissionFunctions.
258xiiCONTENTSWritingaValidationFunction.
258FormRebuilding262WritingaSubmitFunction263ChangingFormswithhook_form_alterQ.
263SubmittingFormsProgrammaticallywithdrupal_form_submitQ.
265DynamicForms.
265FormAPIProperties.
273PropertiesfortheRootoftheForm273PropertiesAddedtoAllElements274PropertiesAllowedinAllElements.
275FormElements277Summary293chapter12:ManipulatingUserInput:TheFilterSystem.
295Filters295FiltersandTextformats.
296InstallingaFilter.
300KnowingWhentoUseFilters.
300CreatingaCustomFilter.
301Implementinghook_filter_infoQ302TheProcessFunction302HelperFunction303Summary305chapter13:SearchingandIndexingContent307BuildingaCustomSearchPage307TheDefaultSearchForm.
308TheAdvancedSearchForm.
308AddingtotheSearchForm.
309xiiiCONTENTSUsingtheSearchHTMLIndexer312WhentoUsetheIndexer313HowtheIndexerWorks313Summary322IIIChapter14:WorkingwithFiles323HowDrupalServesFiles.
323ManagedandUnmanagedDrupalAPis323PublicFiles325PrivateFiles.
325PHPSettings325MediaHandling.
326UploadField.
327VideoandAudio.
328FileAPI328DatabaseSchema.
328CommonTasksandFunctions329AuthenticationHooksforDownloading340Summary342IIIChapter15:WorkingwithTaxonomy343TheStructureofTaxonomy343CreatingaVocabulary.
343CreatingTerms344AssigningaVocabularytoaContentType.
344KindsofTaxonomy345Flat346Hierarchical346MultipleHierarchical347xivCONTENTSViewingContentbyTerm.
349UsingANDandORinURLs349SpecifyingDepthforHierarchicalVocabularies349AutomaticRSSFeeds350StoringTaxonomies351Module-BasedVocabularies352CreatingaModule-BasedVocabulary352KeepingInformedofVocabularyChangeswithTaxonomyHooks352CommonTasks354DisplayingTaxonomyTermsAssociatedwithaNode.
354BuildingYourOwnTaxonomyQueries.
355Usingtaxonomy_select_nodesO355TaxonomyFunctions.
355RetrievingInformationAboutVocabularies355Adding,Modifying,andDeletingVocabularies356RetrievingInformationAboutTerms.
357Adding,Modifying,andDeletingTerms.
358RetrievingInformationAboutTermHierarchy.
359FindingNodeswithCertainTerms362AdditionalResources363Summary363IIChapter16:Caching365KnowingWhentoCache.
365HowCachingWorks.
366HowCachingIsUsedWithinDrupalCore368MenuSystem.
368CachingFilteredText.
368AdministrationVariablesandModuleSettings.
369XVCONTENTSBlocks372UsingtheCacheAPI374Summary378IllChapter17:Sessions.
379WhatAreSessions379Usage379Session-RelatedSettings381In.
htaccess381Insettings.
php.
381Inbootstrap.
inc.
382RequiringCookies.
383Storage383SessionLifeCycle.
384SessionConversations.
385FirstVisit.
386SecondVisit.
386UserwithanAccount386CommonTasks386ChangingtheLengthofTimeBeforeaCookieExpires.
386ChangingtheNameoftheSession387StoringDataintheSession387Summary388IIChapter18:UsingjQuery.
389WhatIsjQuery389TheOldWay.
390xviCONTENTSHowjQueryWorks391UsingaCSSIDSelector.
391UsingaCSSClassSelector392jQueryWithinDrupal392YourFirstjQueryCode.
393TargetinganElementbyID396MethodChaining.
396AddingorRemovingaClass.
397WrappingExistingElements.
397ChangingValuesofCSSElements.
398WheretoPutJavaScript.
399OverridableJavaScript402BuildingajQueryVotingWidget405BuildingtheModule.
407UsingDrupal.
behaviors414WaystoExtendThisModule.
415Compatibility415NextSteps415Summary416IIChapter19:LocalizationandTranslation417EnablingtheLocaleModule.
417UserInterfaceTranslation417Strings417TranslatingStringswithtO418ReplacingBuilt-InStringswithCustomStrings419xviiCONTENTSStartingaNewTranslation429Generating.
potFileswithTranslationTemplateExtractor429Creatinga.
potFileforYourModule.
430Creating.
potFilesforanEntireSite.
431InstallingaLanguageTranslation.
432SettingUpaTranslationatInstallTime.
432InstallingaTranslationonanExistingSite.
433Right-to-LeftLanguageSupport434LanguageNegotiation.
435Default436PathPrefixOnly438PathPrefixwithLanguageFallback440URLOnly441ContentTranslation.
442IntroducingtheContentTranslationModule442MultilingualSupport442MultilingualSupportwithTranslation444Localization-andTranslation-RelatedFiles447AdditionalResources448Summary449IIIChapter20:XML-RPC451WhatIsXML-RPC451PrerequisitesforXML-RPC451XML-RPCClients.
452XML-RPCClientExample:GettingtheTime452XML-RPCClientExample:GettingtheNameofaState.
453HandlingXML-RPCClientErrors.
454xviiiCONTENTSASimpleXML-RPCServer457MappingYourMethodwithhook_xmlrpcQ458AutomaticParameterTypeValidationwithhook_xmlrpcO459Built-InXML-RPCMethods461system.
listMethods461system.
methodSignature462system.
methodHelp462system.
getCapabilities462system.
multiCall463Summary463IIChapter21:WritingSecureCode.
465HandlingUserInput465ThinkingAboutDataTypes.
465Usingcheck_plainOandtOtoSanitizeOutput468Usingfilter_xssOtoPreventCross-SiteScriptingAttacks470Usingfilter_xss_adminQ.
472HandlingURLsSecurely.
472MakingQueriesSecurewithdb_queryQ473KeepingPrivateDataPrivatewithhook_query_alterQ.
476DynamicQueries.
477PermissionsandPageCallbacks.
477Cross-SiteRequestForgeries(CSRF)478FileSecurity.
478FilePermissions479ProtectedFiles.
479FileUploads.
480FilenamesandPaths480EncodingMailHeaders.
481xixCONTENTSFilesforProductionEnvironments.
482SSLSupport.
482Stand-AlonePHP.
483AJAXSecurity,a.
k.
a.
RequestReplayAttack485FormAPISecurity485ProtectingtheSuperuserAccount.
486Summary486IIChapter22:DevelopmentBestPractices487CodingStandards487LineIndentionandWhitespace487Operators487Casting487ControlStructures.
488FunctionCalls488FunctionDeclarations489FunctionNames.
489ClassConstructorCalls.
490Arrays490Quotes491StringConcatenators.
491Comments491DocumentationExamples.
492DocumentingConstants493DocumentingFunctions.
493DocumentingHookImplementations495IncludingCode.
495PHPCodeTags495Semicolons496XXCONTENTSExampleURLs.
496NamingConventions.
496CheckingYourCodingStylewithCoderModule.
496FindingYourWayAroundCodewithgrep497Summary498IIIChapter23:OptimizingDrupal499CachingIstheKeytoDrupalPerformance499OptimizingPHP501SettingPHPOpcodeCacheFileto/dev/zero.
502PHPProcessPoolSettings502TuningApache503mod_expires503MovingDirectivesfrom.
htaccesstohttpd.
conf.
504MPMPreforkvs.
ApacheMPMWorker.
504BalancingtheApachePoolSize505DecreasingApacheTimeout.
505DisablingUnusedApacheModules506UsingNginxInsteadofApache506UsingPressflow.
506Varnish506NormalizingincomingrequestsforbetterVarnishhits.
507Varnish:findingextraneouscookies.
508Boost508Boostvs.
Varnish509xxiCONTENTSLinuxSystemTuningforHighTrafficServers509UsingFastFileSystems.
510DedicatedServersvs.
VirtualServers511AvoidingCallingExternalWebServices511DecreasingServerTimeouts.
512DatabaseOptimization.
512EnablingMySQL'sQueryCache.
512MySQLlnnoDBPerformanceonWindows513DrupalPerformance.
513Eliminating404Errors.
513DisablingModulesYou'reNotUsing.
514Drupai-SpecificOptimizations514PageCaching.
514BandwidthOptimization514PruningtheSessionsTable514ManagingtheTrafficofAuthenticatedUsers.
515Runningcron515Architectures516SingleServer516SeparateDatabaseServer.
516SeparateDatabaseServerandaWebServerCluster517MultipleDatabaseServers518FindingtheBottleneck.
518Summary523xxiiCONTENTSIIIChapter24:InstallationProfiles.
525CreatingaNewInstallationProfile525Theenhanced.
infoFile526Theenhanced.
profileFile527Theenhanced.
installFile.
527Usinghook_install_tasksandhook_install_tasks_alter543Summary544IIIChapter25:Testing545SettingUptheTestEnvironment545HowTestsAreDefined550TestFunctions556TestAssertions560Summary563IIIAppendixA:DatabaseTableReference565IIIAppendixB:Resources.
623Code623TheDrupalSourceCodeRepositoryonGIT.
623Examples623DrupalAPIReference.
624SecurityAdvisories.
624UpdatingModules.
624UpdatingThemes.
624Handbooks624Forums624xxiiiCONTENTSMailingLists625Development625Themes625Translations625UserGroupsandInterestGroups.
625InternetRelayChat625NorthAmerica.
627Europe627Asia628LatinAmericaICaribbean629Oceania629Africa629Videocasts629Weblogs629Conferences630Contribute630Index631xxivForewordFouryearsago,Iwrotetheforewordforthefirsteditionofthisbook.
WhatwasmissingatthattimewasadeveloperbookforDrupal.
Sincethen,ProDrupalDevelopmenthasmadeanincrediblecontributiontoDrupal'ssteadygrowth.
Idon'tthinkIknowasingleDrupaldeveloperwhodoesn'townacopyoftheProDrupalDevelopmentbook.
Drupal,throughitsopensourcenature,hasbecomemuchgreaterthanIeverimagineditwould.
Whatdidn'tchangeistheDrupaldevelopercommunity'shealthydesiretoinnovate,torespondtotheever-changinglandscapeofwebdevelopment,andtoprovidewebdevelopersanalmostinfiniteamountofflexibility.
ChangeisaconstantintheDrupalcommunityandkeytooursuccess.
AlotofthesuccessofDrupaltodaycanbeattributedtoDrupal6.
However,fromthedaythatDrupal6wasreleasedalmostthreeyearsago,we'vebeenworkingreallyhardonDrupal7.
Morethan800individualcontributorshavepatchesincludedinDrupal7core.
Drupal7willfeaturesomeofthebiggestarchitecturalchangesinthehistoryofDrupal,willshipwithmanyAPIimprovements,andwillbeabletopowerbiggersitesthaneverbefore.
ThenetresultisthatDrupal7isanevenbetterwebapplicationdevelopmentplatformthanDrupal6,anditwillfuelalotofDrupal'sgrowthoverthenextyears.
AllthesechangesalsomeanthatthepreviousProDrupalDevelopmentbookswentoutofdate.
Fortunately,thethirdeditionofthisbookfixesallthat.
ThisbookcoversallofthecapabilitiesanddeveloperfacilitiesinDrupal7,andprovidesdeepinsightintotheinnerworkingsanddesignchoicesbehindDrupal7.
ArmedwiththisbookandacopyofDrupal'ssourcecode,youhaveeverythingyouneedtobecomeaDrupalexpert.
If,alongtheway,youhavefiguredouthowtodosomethingbetter,withfewerlinesofcodeormoreelegantlyandfasterthanbefore,getinvolvedandhelpusmakeDrupalevenbetter.
I'dlovetoreviewandcommityourDrupalcorepatches,andI'msuremanyoftheothercontributorswouldtoo.
DriesBuytaertDrupalFounderandProjectLeadXXVxxviAbouttheAuthorsToddTomlinsonisthevicepresidentofeGovernmentSolutionsatServerLogicCorporationinPortland,Oregon.
Todd'sfocusoverthepast15yearshasbeenondesigning,developing,deploying,andsupportingcomplexwebsolutionsforpublicandprivatesectorclientsallaroundtheworld.
HehasbeenusingDrupalastheprimaryplatformforcreatingbeautifulandfeature-richsitessuchashttp:I/arapahoelibraries.
org/ald/.
PriortoServerLogic,ToddwastheseniordirectorofeBusinessStrategicServicesforOracleCorporation,wherehehelpedOracle'slargestclientsdeveloptheirstrategicplansforleveragingtheWebasacorecomponentoftheirbusiness.
HeisalsotheformervicepresidentofInternetSolutionsforClaremontTechnologyGroup,vicepresidentandCTOofEmeraldSolutions,managingdirectorforCNFVentures,andaseniormanagerwithAndersenConsulting/Accenture.
ToddhasaBSincomputerscienceandanMBA,andheisinthedissertationphaseforhisPhD.
Todd'spassionforDrupalisevidentinhisobsessionwithevangelizingabouttheplatformandhisenthusiasmwhenspeakingwithclientsaboutthepossibilitiesofwhattheycanaccomplishusingDrupal.
Ifyouwanttoseesomeoneliterally"lightup,"stophimonthestreetandaskhim,"WhatisDrupalandwhatcanitdoforme"HeisalsotheauthorofApress'sBeginningDrupal7.
JohnK.
VanDykbeganhisworkwithcomputersonablackBellandHowellAppleIIbyprintingoutandporingovertheBASICcodeforLittleBrickOutinordertoincreasethepaddlewidth.
Later,hemanipulatedtimingloopsinassemblytogivePac-Manalargertimeslicethantheghosts.
BeforediscoveringDrupal,JohnwasinvolvedwiththeUserLandFrontiercommunityandusedPlonebeforewritinghisowncontentmanagementsystem(withMattWestgate)usingRuby.
JohnisaseniorwebarchitectatLullabot,aDrupaleducationandconsultingfirm.
Beforethat,JohnwasasystemsanalystandadjunctassistantprofessorintheentomologydepartmentatIowaStateUniversityofScienceandTechnology.
Hismaster'sthesisfocusedoncoldtoleranceofdeerticks,andhisdoctoraldissertationwasontheeffectivenessofphotographicallycreatedthree-dimensionalvirtualinsectsonundergraduatelearning.
JohnliveswithhiswifeTinainAmes,Iowa.
Theyhomeschooltheirpasselofchildren,whohavebecomeusedtobedtimestorieslike"TheAdventuresofaNodeRevisionintheLandofMultipleJoins.
"AbouttheTechnicalReviewersJoshuaBrauerjumpedontotheWorldWideWebasanaspiringtechnicaljournalismstudentworkingwithcontentmanagementsystemsin1995.
SincebecomingamemberoftheDrupalcommunityin2003,JoshuahasbeeninvolvedwithrunningDrupalsitesofallsizes.
In2007JoshualeftworkinITmanagementtodevotehisfull-timeprofessionalefforttoDrupal.
JoshuaisoneoftheleadersoftheBoiseDrupalUsersGroupandcanfrequentlybefoundgivingtalksatconferences,camps,localmeetups,andanywhereelsepeopleareinterestedinhearingaboutDrupal.
Joshua'swritingsaboutDrupalcanbefoundonlineathttp:I/joshuabrauer.
com.
AsaDrupalistatAcquia,JoshuaworkswithcustomersfromsmallsitestolargeenterprisesonallphasesoftheirDrupalexperience,frompre-planningthroughhostingandoperations.
JoshuafindsgreatinspirationintheDrupalcommunityanditsmanysignificantaccomplishments.
WhendisconnectedfromtheWeb,Joshuacanbefoundbehindacamera,enjoyingthewonderfulvarietyofbeautifulplacesonourplanet.
RobertDouglassistheseniorDrupaladvisoratAcquia,Inc.
,apermanentmemberoftheDrupalAssociation,andafoundingmemberofDieDrupai-Initiative,Germany'sDrupal-orientednonprofit.
Heisactiveasamodulemaintainer,corecontributor,andspeakeratvariousDrupaleventsandconferences.
HisApressprojectsincludeBuildingOnlineCommunitieswithDrupal,phpBB,andWordPress(author,2005),ProDrupalDevelopment(technicalreviewer,2007),andProDrupalDevelopment,SecondEdition(technicalreviewer,2008).
PeterM.
WolaninhasbeenworkingwithDrupalsincelate2005,whenafriendwhohadbeenaHowardDeansupporterinvolvedhiminaprojecttobuildanewWebpresenceforthelocalDemocraticPartyclub,andtheystartedbuildingthesiteonDrupal4.
7beta.
PetersoonbecameasinterestedinthechallengeaffixingbugsandaddingfeaturesinDrupalcoreandcontributedmodulesashewasinactualsitebuilding.
HebecameanotedcontributortoDrupal5,6,and7,andamemberoftheDrupaldocumentationteam.
HejoinedtheDrupalsecurityteamandwaselectedin2010asapermanentmemberoftheDrupalAssociation.
PeterjoinedtheAcquiaengineeringteamin2008andenjoysthecompanyofhisstellarcolleagues.
Beforeallthis,PetergraduatedcumlaudefromPrincetonUniversity,receivedadoctoraldegreeinphysicsfromtheUniversityofMichigan,andconductedpost-doctoralandindustrialresearchinbiophysicsandmolecularbiology.
xxviiAcknowledgmentsBeth,foryournever-endingsupport,encouragement,love,andlaughter-thankyouforbringingbacktheabilitytodreambigaboutthefuture.
Mydaughters,Anna,Alissa,andEmma,forgivingupcountlesshoursoftimewithDadwhileIwrotethebook.
Myparents,forgivingmethetoolsIneededtoembarkonthejourneysthatI'vetraveled.
Mygrandmother,forsparkingthefiretobecomeanauthor.
Dries,withoutyourvisionandpassionfortheplatform,therewouldn'tbeaProDrupalDevelopmentbook.
TheAquiateam,forjumpinginandlendingyoursupportwhileItackledthetoughsectionsofthebookWebchick(a.
k.
a.
AngieByron),foryourdedicationtotheplatformandyourrelentlesseffortstolaunchDrupal7.
Thethousandsofdeveloperswhohavecontributedtotheplatformtomakeitwhatitistoday.
Myclients,forembracingthetechnologyandsharingtheexcitementoverwhatitcando.
Jason,Darren,Kathryn,andSteve-myteammateswhowakeupeverymorningexcitedtodiscoversomethingnewthatDrupalcando-forputtingupwithmywilddreamsabouthowDrupalcandoanything.
xxviiiIntroductionInitsrelativelyshortlife,DrupalhashadatremendousimpactonthelandscapeoftheInternet.
Asawebcontentmanagementsystem,Drupalhasenabledthecreationoffeature-andcontent-richwebsitesfororganizationslargeandsmall.
Asawebapplicationframework,Drupalischangingthewaythatpeoplethinkaboutwebapplicationdevelopment.
WhenIexperiencedthepoweroftheDrupalplatformforthefirsttime,Iknewthatitwassomethingmorethanjustanothercontentmanagementsolution.
WhenIsawhoweasilyandquicklyIcouldbuildfeature-richwebsites,IshiftedgearsandfocusedmyentirecareeraroundDrupal.
I'moftenaskedthequestion,"WhatisDrupal"TheshortanswerisDrupalisanopensourcewebcontentmanagementsystemthatallowsyoutoquicklyandeasilycreatesimpletocomplexwebsitesthatspaneverythingfromasimpleblogtoacorporatewebsite,asocialnetworkingwebsite,orvirtuallyanythingyoucandreamup.
WhatyoucanbuildwithDrupalislimitedonlytoyourimagination,thetimeyouhavetospendwiththeplatform,andyourknowledgeaboutDrupal'scapabilities-whichistheimpetusbehindthisbook.
Asanopensourceplatform,Drupal'scommunityisconstantlyimprovingtheplatformandextendingthefunctionalityofthecoreplatformbycreatingnewandexcitingadd-onmodules.
Ifthere'sanewconceptcreatedontheWeb,it'slikelythattherewillbeanewDrupalmodulethatenablesthatconceptinamatterofdays.
It'sthecommunitybehindtheplatformthatmakesDrupalwhatitistoday,andwhatitwillbecomeinthefuture.
I'llshowyouhowtoleveragethefeaturescontributedbythecommunity,makingiteasyforyoutobuildincrediblesolutionswithminimaleffort.
TheveryactofpickingupthisbookisthefirststepinyourjourneydownthepathoflearninghowtouseDrupal.
Ifyouwillwalkwithmethroughtheentirebook,you'llhavetheknowledgeandexperiencetobuildcomplexandpowerfulDrupal-basedwebsites.
You'llalsohavethefoundationnecessarytomovebeyondthebasics,expandingontheconceptsIcoverinthisbook.
LearningDrupalislikelearningeverynewtechnology.
Therewillbebumpsandhurdlesthatcauseyoutostepbackandscratchyourhead.
Ihopethebookhelpssmooththebumpsandprovidesyouwithenoughinformationtoeasilyjumpoverthosehurdles.
IlookforwardtoseeingyourworksontheWebandhopetobumpintoyouatanupcomingDrupalCon.
Iwillendonanoteofcarefreeabandon-learntosteal!
Onceyou'velearnedthepiecesofthepuzzleandhowtocombinethem,thereisverylittlenewtoinvent.
Everynewideayoudiscoverisamerepermutationoftheoldideas.
Andideasarefree!
EverycoolfeaturediscussedonTVshowsorpresentedinthebrochuresorwebsitesofcommercialHAcompaniescanbetaken,adapted,andimplementedwiththeinformationpresentedhereusingverylittleeffort.
Andthenyouwillgraduatefromanautomatedhometoasmarthometoapersonalizedsmarthome!
xxix
Hosteons,一家海外主机商成立于2018年,在之前还没有介绍和接触这个主机商,今天是有在LEB上看到有官方发送的活动主要是针对LEB的用户提供的洛杉矶、达拉斯和纽约三个机房的方案,最低年付21美元,其特点主要在于可以从1G带宽升级至10G,而且是免费的,是不是很吸引人?本来这次活动是仅仅在LEB留言提交账单ID才可以,这个感觉有点麻烦。不过看到老龚同学有拿到识别优惠码,于是就一并来分享给有需...
易速互联怎么样?易速互联是国人老牌主机商家,至今已经成立9年,商家销售虚拟主机、VPS及独立服务器,目前商家针对美国加州萨克拉门托RH数据中心进行促销,线路采用BGP直连线路,自带10G防御,美国加州地区,100M带宽不限流量,月付299元起,有需要美国不限流量独立服务器的朋友可以看看。点击进入:易速互联官方网站美国独立服务器优惠套餐:RH数据中心位于美国加州、配置丰富性价比高、10G DDOS免...
热网互联怎么样?热网互联(hotiis)是随客云计算(Suike.Cloud)成立于2009年,增值电信业务经营许可证:B1-20203716)旗下平台。热网互联云主机是CN2高速回国线路,香港/日本/洛杉矶/韩国CN2高速线路云主机,最低33元/月;热网互联国内BGP高防服务器,香港服务器,日本服务器全线活动中,大量七五折来袭!点击进入:热网互联官方网站地址热网互联香港/日本/洛杉矶/韩国cn2...
drupal7为你推荐
文章文章苹果appstore宕机最近app store一直不能用 怎么回事啊 改dns也不能用 持续好久好久了即时通请问有没有人知道即时通是什么?怎样先可以开??如何发帖子怎么发帖啊超级用户在电脑上如何设置超级用户(Administrator)?空间导航自定义名称在空间里 给导航 改名字 怎么改.netcms如何区分磷酸盐,磷酸一氢盐,磷酸二氢盐无法访问手机为什么已连接但无法访问互联网什么是网站优化什么是网站优化?优化对于网站又什么好处?网站漏洞修复知道网站的SQL漏洞,怎样修补?
我的世界服务器租用 免费动态域名解析 香港cdn 抢票工具 我爱水煮鱼 有益网络 isp服务商 能外链的相册 安徽双线服务器 双12 腾讯总部在哪 韩国代理ip 游戏服务器出租 服务器论坛 atom处理器 卡巴斯基官网下载 阿里云个人邮箱 七十九刀 windowsserverr2 stealthy 更多