Drupal 8 User Guide Preface Source file: guide.txt Overview of introductory topics that help to leverage this guide in an efficient manner.
Audience and Goal Source file: preface-audience.txt Understanding the target audience for this guide, and what they will learn from it. This guide was written mainly for people with minimal knowledge of the Drupal content management system. The topics will help them become skilled at installing, administering, site building, and/or maintaining the content of a Drupal-based website. The guide is also aimed at people who already have some experience with a current or past version of Drupal, and want to expand the range of their skills and knowledge or update them to the current version. This guide assumes that you have already decided you want to learn and use Drupal. If you need to learn more before deciding, see . Depending on which aspects of Drupal you would like to learn, you will need some background knowledge to understand this guide: general Internet skills and knowledge are assumed, and the guide concentrates on how to use the software itself. For instance, the sections about installing Drupal on a web server assume you can obtain web hosting and figure out how to transfer files to your chosen web host. Similarly, the sections about content management assume you can log into a website and fill in a web-based form. After reading this guide, you should be able to: Plan the content architecture for a Drupal-based site Build the site that you planned Manage and administer your site Understand documentation and blog posts on topics not covered here, to expand your knowledge and skills Connect with the worldwide Drupal community Attributions Written by Jennifer Hodgdon.
Organization Source file: preface-organization.txt Understanding the organizational structure of this guide for better navigation through topics. This user guide contains a series of topics, each of which covers either a task (how to do something) or a concept (background knowledge, terminology, and the like). Concept topics have names starting with Concept:, while task topics have names containing verbs, like Editing Basic Site Information. The topics are grouped into chapters in a logical order, with concepts and tasks interleaved so that concepts are presented before related tasks, and tasks build on each other. To take advantage of this, you are encouraged to read the entire guide in its presented order, possibly skipping topics that are not of interest or that present information you already know. Remember to try out the tasks on your own site as you read the guide; most people learn better by doing rather than reading. If you prefer, you can also use the index or table of contents to jump straight to a topic that you’d like to learn about, rather than reading the entire guide. To facilitate this approach, each topic lists the prerequisite knowledge that you’d need in order to understand it, if any (with links to the topics that present that knowledge); task topics also list site prerequisites (things that you would need to have configured or created on your site in order to perform the task). Also, most topics have sections at the end where you can find related information and/or tasks for expanded understanding, to continue your learning. You may also want to refer to the section as you read — it gives brief definitions of most of the terminology used in the guide, with links to topics having more detailed explanations. Attributions Written by Jennifer Hodgdon.
Reporting Problems Source file: preface-reporting.txt How to report an issue with this guide (with detailed steps).
Goal Report a problem with this guide, such as: Information that is incorrect or does not follow best practices Steps that do not work Screen shots or text that doesn’t match what you see on the screen Unclear writing Places where a table or screen shot would help clarify the text Failure to define terminology Missing knowledge prerequisites or site prerequisites for a topic Typographical, spelling, grammar, or formatting errors Broken links
Steps Make a note of the topic or topics that contain the problem you have found. Log in to Drupal.org (you will need to create a user account if you do not already have one). Visit the User Guide issues page on Drupal.org. Verify that the problem you found has not already been reported in another issue: If there are only a few open issues, scan the Summary column to see if any of their descriptions match the problem you found. You may also need to read some of the issues to make sure, which you can do by clicking the links in the Summary column. If the open issue list is long, enter either a keyword related to the problem you found or the title of the topic where the problem occurs in the Search for box, and click Search to reduce the issue list. Then either scan the summaries or read the issues to see if they match your problem. If you determine that your problem has not already been reported, click Create a new issue, and fill in the issue report as follows: Field name Explanation Example value Title Short summary of the problem you found Instructions in "Adding a Content Type" do not work Category Type of issue being reported Bug report Version Version of the guide you found the problem in 8.x-0.x-dev Issue summary Details of the problem you found In the "Adding a Content Type" topic, in step 3, when I clicked Save, I got the following error message: … Reread the Title and Issue summary you entered, and verify that the following information is included in your report: A complete description of the problem you found The name of the topic or topics where you found the problem The language you are reading the guide in (if not English) If you read the guide on a website, a link to the page or pages with the problem Click Save to create the issue. Check back on the issue in a few days. If one of the project maintainers has asked for clarification, respond by adding a comment to the issue. Attributions Written by Jennifer Hodgdon.
Conventions of the Guide Source file: preface-conventions.txt Understanding the conventions used in this guide.
Assumptions and prerequisites This guide has the following assumptions and prerequisites: This guide is organized into topics; see for details. Many topics include a Prerequisite knowledge section, which lists other topics whose content knowledge is needed in order to understand the topic you are reading. Some background knowledge that is not covered in the guide is also assumed; see for details. Many task topics list Site prerequisites, which are tasks that you’ll need to have completed on your site before you’ll be able to do the task in the topic you are reading. The specifics of the site prerequisites relate to the scenario used throughout this guide of building a site for a farmers market (see for details). You can adapt the tasks to your own scenario, but you will also need to remember the changes you made when deciding if your site satisfies the site prerequisites for a task. For all task topics after , there is also an implicit prerequisite: you must have installed the content management software on your site, and be logged in to a user account with sufficient permissions to do the task (such as the user account created when you installed your site, which automatically has full permissions). If you read all the topics in order, and perform all of the steps in the task topics as you go (staying logged in), you should have the background knowledge and site prerequisites in place for each topic as you read it.
Text conventions The following conventions are used in the text of this guide: The URL example.com means the base URL of your website. See the Navigation section below for more details on how URLs internal to your site are indicated. Text you should see in the user interface of your site is shown in italics, such as: Click Save configuration. This only applies to text in the user interface that comes from the software, not to text that was entered in a previous topic. For example, in a topic about editing, you might see this instruction: Click Edit in the row of the About page (Edit would be in italics, but About would not be, because the About page was created in a previous topic). URLs, file names, and newly-introduced terminology are also shown in italics. Text that you should type at a shell command line is shown in monospace type, such as: drush cr Within this guide, the word directory is always used to refer to file directories (which some people prefer to call folders).
Navigation To do most of the task topics in this guide, you will need to navigate to one or more pages in the administrative interface of your site. You might see something like this in the instructions (this will make more sense after you have the base software installed): In the Manage administrative menu, navigate to Structure > Taxonomy (admin/structure/taxonomy). Navigation instructions like this assume that you have the core Toolbar module installed, and this example means that in the menu bar at the top of your site, you would need to click Manage to expose the menu choices, then click Structure, then :_Taxonomy_, and that at the end, you would be on a page with URL http://example.com/admin/structure/taxonomy (if your site base URL is http://example.com). Admin menu Here’s another example: In the Manage administrative menu, navigate to Configuration > System > Site information (admin/config/system/site-information). In this example, after clicking on Manage and Configuration, you would need to find the System section of the page, and within that, click Site information. After that, you’d end up on http://example.com/admin/config/system/site-information. System section of the Configuration page One other note: if you are using the standard administrative core Seven theme, many "Add" buttons in the administrative interface are displayed with + signs on them. For instance, on admin/content, the Add new content button appears as + Add new content. However, this is theme-dependent and is not really part of the text on the button (for instance, it would not necessarily be read by a screen reader), so in this guide, the convention is to not mention the + sign on the buttons.
Filling in forms Many of the task topics in this guide include steps where you will fill out a web form. In most cases, a screen capture image of the form will be included, along with a table of the values you will need to enter into each form field. For example, you might see a table that starts out like this, explaining the site information form you would see if you navigated to Configuration > System > Site information (admin/config/system/site-information): Field name Explanation Example value Site name Name of your site Anytown Farmers Market To use this table, find the field labeled Site name in the form, and enter the name of your site in this field. An example site name of "Anytown Farmers Market" is suggested in the table, which relates to the scenario of building a website for a farmers market that you’ll find all through this guide (see for details). Attributions Written/edited by Jennifer Hodgdon.
Guiding Scenario Source file: preface-scenario.txt Understanding the project scenario used in this guide to follow the topics better. Scenario for this document (farmers market)overview Guiding scenario for this document (farmers market) Usage scenario for this document (farmers market) Farmers marketusage scenario for this document When reading this guide, it is helpful to have a website building project in mind. The following project scenario provides context and links together the examples in this guide: You are making a website for a farmers market. The site needs to display information about the location and hours of the market, and an About page with the history of the market. It also needs to list the vendors. Vendors should be able to edit their listings (including a logo or photo), and post recipes. Site visitors should be able to browse recipes, or locate recipes using ingredients that they purchased at the market. Some visitors to your site speak another language, so the main pages and vendor pages need to be translated. Attributions Written/edited by Jennifer Hodgdon.
Understanding Drupal Source file: guide.txt Overview of Drupal concepts such as modules, themes, distributions, and types of data.
Concept: Drupal as a Content Management System Source file: understanding-drupal.txt Overview of Drupal and the reasons to choose it as a reliable Content Management System (CMS). CMS (Content Management System)overview Content Management System (CMS)overview Drupal content management systemoverview Drupal content management systemserver requirements Drupal coreoverview Drupal.org websitedownloading modules and themes from
What is a Content Management System? A content management system (CMS) is a software tool that lets users add, publish, edit, or remove content from a website, using a web browser on a smartphone, tablet, or desktop computer. Typically, the CMS software is written in a scripting language, and its scripts run on a computer where a database and a web server are installed. The content and settings for the website are usually stored in a database, and for each page request that comes to the web server, the scripts combine information from the database and assets (JavaScript files, CSS files, image files, etc. that are part of the CMS or have been uploaded) to build the pages of the website. The combination of the operating system that the CMS runs on, the scripting language it is written in, the database it stores its information in, and the web server that runs the scripts to retrieve information and return it to the site visitor’s web browser is known as the stack that the CMS runs on; the commonly used combination of the Linux operating system, Apache web server, MySQL database, and PHP scripting language is known as the LAMP stack.
What is Drupal? Drupal is a flexible CMS based on the LAMP stack, with a modular design allowing features to be added and removed by installing and uninstalling modules, and allowing the entire look and feel of the website to be changed by installing and uninstalling themes. The base Drupal download, known as Drupal Core, contains the PHP scripts needed to run the basic CMS functionality, several optional modules and themes, and many JavaScript, CSS, and image assets. Many additional modules and themes can be downloaded from the Drupal.org website. Drupal can also run on other technology stacks: The operating system can be Windows or Mac OS instead of Linux. The web server can be Nginx or IIS instead of Apache. The database can be PostgreSQL or SQLite instead of MySQL, or a MySQL-compatible replacement such as MariaDB or Percona. Other operating systems, web servers, and databases can also be made to work; however, the scripts that the software uses are written in PHP, so that cannot be changed.
What are the reasons for using Drupal? When building a website, you have your choice of using one of the many existing CMS packages and hosted services, developing your own CMS, or building the site without using a CMS. Here are some of the reasons you might choose to use Drupal: Building a small, simple site with static HTML pages is not difficult, and you can get a simple site up very quickly. Setting up a site in a CMS generally requires more time initially, but brings you the benefits of on-line editing (easier for less experienced content maintainers), uniformity (harder to maintain using static HTML for larger sites), and the possibility of more complex features requiring a database. Some CMS software is special-purpose; for instance, there are packages and hosted services that you can use to build a blog or a club membership website. Drupal, in contrast, is a general-purpose CMS. If you are building a special-purpose site, you might choose to use a special-purpose CMS; however, if your site falls even slightly outside the intended purpose, you will probably be better off using a general-purpose CMS rather than trying to adapt a special-purpose CMS. Building your own CMS-type software can seem attractive. However, using a general-purpose CMS like Drupal as a starting point is usually a better idea, because the basic CMS functionality (such as user accounts and content management) has thousands of developer hours behind it, including many years of user testing, bug fixing, and security hardening. Some CMS software packages are expensive to purchase a license for. Some are free or have a free version, but have restrictive licenses that do not allow you to make modifications and extensions. You might prefer to use a package (like Drupal) that has a less restrictive software license, and is developed by a world-wide community. See for more on this topic.
Additional resources The Drupal overview Drupal.org page "FAQ" (Frequently Asked Questions) Drupal.org page "Case Studies" Wikipedia page "Content management systems" Wikipedia page "Modular design" Attributions Written and edited by Kristof van Tomme at Pronovix, Jennifer Hodgdon, and Michael Lenahan at erdfisch.
Concept: Modules Source file: understanding-modules.txt Overview of modules and the functionality they can be used for. Moduleoverview Contributed moduleoverview Core moduleoverview Field moduleoverview Field UI moduleoverview Menu UI moduleoverview Node moduleoverview User moduleoverview Views moduleoverview Views UI moduleoverview Modulecore Modulecontributed ModuleField ModuleField UI ModuleMenu UI ModuleNode ModuleUser ModuleViews ModuleViews UI
Prerequisite knowledge
What is a module? A module is a set of PHP, JavaScript, and/or CSS files that extends site features and adds functionality. You can turn the features and functionality on by installing the module, and you can turn it off by uninstalling the module; before uninstalling, you may need to remove data and configuration related to the feature or functionality. Each module that is installed adds to the time needed to generate pages on your site, so it is a good idea to uninstall modules that are not needed. The core download provides modules for functionality such as: Managing user accounts (the core User module) Managing basic content (the core Node module) and fields (the core Field and Field UI modules; there are also core modules providing field types) Managing navigation menus (the core Menu UI module) Making lists, grids, and blocks from existing content (the core Views and Views UI modules) You can download additional contributed modules from the Drupal.org Module Downloads, or create your own custom modules.
Additional resources Drupal.org community documentation page "Module developer’s guide" Attributions Written by Jennifer Hodgdon.
Concept: Themes Source file: understanding-themes.txt Overview of themes and where to obtain them. Themeoverview Themecore Core themeoverview Themethird-party Third-party themeoverview Themecustom Custom themeoverview
Prerequisite knowledge
What is a Theme? A theme is a set of files that define the visual look and feel of your site. The core software and modules that run on your site determine which content (including HTML text and other data stored in the database, uploaded images, and any other asset files) is displayed on the pages of your site. The theme determines the HTML markup and CSS styling that wraps the content. The core software provides several basic themes with the core distribution. These themes have largely been designed and built by the community over the last several years and will all be good choices for building your first sites and becoming more familiar with how the core software works. Drupal is a well-established CMS so the market for 3rd party themes - both free and paid - is very robust. If none of the 3rd party options suit your needs, you’ll need to create a custom theme. A custom theme can be as simple as a single CSS file that adds styling to the markup provided by the core software. Guidance for creating custom themes in Drupal 8 can be found in the Drupal.org community documentation page "Theming Drupal".
Additional resources Drupal.org community documenation page "Theming Drupal" Attributions Written and edited by John Grubb and Jennifer Hodgdon.
Concept: Distributions Source file: understanding-distributions.txt Overview of distributions and their different types to set up use-specific websites. Distributionoverview Distributionfull-featured Distributionquick-start Full-featured distributionoverview Quick-start distributionoverview
Prerequisite knowledge
What are Distributions? Distributions provide site features and functions for a specific type of site as a single download containing the core software, contributed modules, themes, and pre-defined configuration. A distribution makes it possible to set up a complex, use-specific site in fewer steps than installing and configuring elements individually. There are two main types of distributions: Full-featured Distributions A full-featured distribution is a project that provides a complete solution to set up a site for a specialized purpose such as academic, business, government, nonprofit, publishing, social, etc. For example, you could use an existing distribution for farmers markets to build your own website, or you could share your set-up for the farmers market site as a distribution for others to use. Other Distributions Distributions can also be quick-start tools that developers and site builders can use as a starting point.
Additional resources Drupal.org Drupal Distribution Downloads Attributions Adapted and edited by Diána Lakatos and Antje Lorch, from "Distributions" and "Download & Extend — Distributions" copyright 2000-2016 by the individual contributors to the Drupal Community Documentation.
Concept: Types of Data Source file: understanding-data.txt Overview of common types of data used in a site. Data typeoverview Data typeconfiguration Data typecontent Data typestate Data typesession Configurationas a type of data Contentas a type of data Stateas a type of data Sessionas a type of data
What are the types of data? The data and information on your site is divided up into four types, which are edited, translated, and stored differently. These four types are: Content Information (text, images, etc.) meant to be displayed to site visitors. This type of information tends to be relatively permanent, but can normally be edited. Configuration Information about your site that is not content, but is also relatively permanent, and is used to define how your site behaves or is displayed. It is sometimes also displayed to site visitors, but tends to be smaller pieces of text (like field labels, the name of your site, etc.) rather than larger chunks that you’d normally think of as Content. State Information of a temporary nature about the current state of your site, such as the time when cron jobs were last run. Session Information about individual site visitors' interactions with the site, such as whether they are logged in and their cookies. This is technically a subtype of State information, since it is also temporary.
Concept: The Drupal Project Source file: understanding-project.txt Overview of Free and Open Source Software (FOSS), Drupal project, and Drupal Association. Drupal projectoverview Drupal Associationoverview FOSS (Free and Open Source Software)overview Free and Open Source Software (FOSS)overview
Prerequisite knowledge
What is Free and Open Source Software? Free and Open Source Software (FOSS) is software that is developed by a community of people, released under a non-commercial license, and whose source code (the program files that make up the software) is freely available. For more information on the non-commercial license used by Drupal, see .
What is the Drupal project? The Drupal project is a FOSS project whose purpose is to develop the core content management system software, as well as add-on modules, additional themes, translations, documentation, and special-purpose distributions. The people who contribute their time and money to the Drupal project come from all over the world, and are a diverse community that comes together for this common purpose. The community encompasses many smaller groups who perform many different tasks such as developing a particular piece of Drupal-related software, writing documentation, maintaining the security of Drupal software, translating Drupal software into a particular language, using Drupal for some specific purpose, and coming together to meet in person within a particular geographical area. For more on how you can connect to and communicate with the world-wide community, see and .
What is the Drupal Association? The Drupal Association is a non-profit organization dedicated to supporting the Drupal project and community. Its main functions are: Putting on large conventions around the world Maintaining the Drupal.org websites and the servers that they run on Promoting Drupal as a web platform Supporting Drupal education and training Providing grants to the Drupal community in support of its mission Raising funds for these purposes
Additional resources Drupal project governance Drupal Code of Conduct Attributions Written by Jennifer Hodgdon.
Concept: Drupal Licensing Source file: understanding-gpl.txt Overview of Drupal licensing and the guidelines to be followed by users and contributors. Licensingoverview Drupal licensingoverview GPL (General Public License or GNU General Public License)overview GNU General Public Licenseoverview Legaloverview
Prerequisite knowledge
What is Drupal Licensing? Drupal and all contributed files hosted on Drupal.org are licensed under the GNU General Public License (GPL), version 2 or later. That means you are free to download, reuse, modify, and distribute any files that are part of a project on Drupal.org under the terms of GPL version 2 or 3. You can also run the core software in combination with any code with any license that is compatible with version 2 or 3. Drupal contributors should follow these guidelines: All files (PHP, JavaScript, images, Flash, etc.) that are part of a project on Drupal.org have to be under GPL version 2 or later. All Drupal contributors retain copyright on their code, but agree to release it under the same license as Drupal. Drupal modules and themes are a derivative work of Drupal. If you distribute them, you must do so under the terms of GPL version 2 or later. All content on Drupal.org itself is copyrighted by its original contributors, and is licensed under the Creative Commons Attribution-ShareAlike license 2.0. Sample code on Drupal.org is also available under GPL version 2 or later.
Additional resources Drupal.org page on "Licensing" "Drupal 8 LICENSE.txt" page on api.drupal.org GNU General Public License, version 2 GNU General Public License, version 3 Creative Commons Attribution-ShareAlike license 2.0. "Legal Group" on groups.drupal.org Attributions Adapted by Diána Lakatos at Pronovix from "Licensing" copyright 2000-2016 by the individual contributors to the Drupal Community Documentation.
Planning Your Site Source file: guide.txt Overview of site planning concepts and details of common site layout tasks. Content entity and structure concepts are covered.
Concept: Regions in a Theme Source file: block-regions.txt Overview of regions from a theming perspective. Themeregions in Bartik themeregions in Regionoverview Breadcrumb regionoverview Content regionoverview Featured regionsoverview Footer regionsoverview Header regionoverview Help regionoverview Highlighted regionoverview Menu regionoverview Primary menu regionoverview Secondary menu regionoverview Sidebar regionsoverview Regionbreadcrumb Regioncontent Regionfeatured Regionfooter Regionheader Regionhelp Regionhighlighted Regionmenu Regionprimary menu Regionsecondary menu Regionsidebar
Prerequisite knowledge
What is a region? Besides its primary content, a web page contains other content such as site branding (site name, slogan, and logo), navigation aids (menus, links, and icons), formatted text, and images. Each theme provides a set of named regions, such as Header, Content, and Sidebar, where site builders may choose to place their content. The available regions depend on the theme design. Only the Content region, which contains the primary content, is required; others are optional. The core Bartik theme provides the eighteen regions highlighted in the following image. core Bartik theme regions
Additional resources Drupal.org community documentation page "Structure Guide" Drupal.org community documentation page "Assigning content to regions" Attributions Written and edited by John MacDonald, and Michael Lenahan at erdfisch.
Planning Your Site Layout Source file: planning-layout.txt How to plan the navigation and layout of a website (mobile and desktop browsers). Planningsite layout Site layoutplanning Layoutplanning
Goal Plan the navigation and layout of the site, for both mobile and desktop browsers.
Prerequisite knowledge
Steps It is a good idea to plan the site layout before you start building the site and writing content; however, your plan may need to be revised either before you start implementing it or after you have some of the site built with draft content in place, based on budgetary concerns or stakeholder feedback. Make a list of the information that your site should present to visitors. In the farmers market scenario, this might include: Location of the market, with directions and a map Hours and days the market is open History of the market List of vendors Details about each vendor Searchable list of recipes Details about each recipe List of the most recently added recipes Decide which information should be on which pages or types of pages on the site: Information that should be on all pages Address, hours, and recently-added recipes list Vendor details pages Information about each vendor on its own page Recipe details pages Details of each recipe on its own page Home page Location, map, directions, and hours About page History of the market Vendors list page List of vendors, with links to vendor detail pages Recipe list page Searchable list of recipes, with links to recipe detail pages Decide which information is the most important on each page. Site visitors using mobile phones or other small browsers will often only see the content that is presented first, and they may not scroll down to see all of the information. Decide which of these pages should appear in the main site navigation. For instance, the main navigation might consist of the Home, About, Vendors, and Recipes pages. Make a rough design sketch for each page, showing how it would look when viewed on a small screen such as a phone, as well as on a larger screen such as a desktop browser. Considering that most site visitors will be using smaller browsers, it is a good idea to start with the phone-size layout, to make sure that these visitors will be able to find the information they need without too much scrolling. In making these page layout plans, you might find that you need to revise your plan for which information should be on which pages. For example, you might decide that the address, hours, and recently-added recipes list would all fit well in the right sidebar area of all pages, when the site is viewed on desktop-sized browsers. On the other hand, you might decide that for mobile browsers, you would instead put the address and hours in a short format at the top of each page, but only display the recent recipe list at the bottom of the home page.
Expand your understanding Attributions Written by Jennifer Hodgdon.
Concept: Content Entities and Fields Source file: planning-data-types.txt Overview of content entities and fields. Entityoverview Taxonomy termoverview Vocabularyoverview Contententity type Entity typeoverview Entity subtypeoverview Blockentity type Comment entity typeoverview Contact form entity typeoverview Form entity typeoverview Content entity typeoverview Custom blockentity type Fieldoverview User profile entity typeoverview ModuleComment ModuleContact ModuleTaxonomy ModuleUser ModuleNode ModuleCustom Block ModuleFile Comment moduleentity type Contact moduleentity type Custom block moduleentity type Node moduleentity type Taxonomy moduleentity type User moduleentity type File moduleentity type
Prerequisite knowledge
What is a content entity? A content entity (or more commonly, entity) is an item of content data, which can consist of text, HTML markup, images, attached files, and other data that is intended to be displayed to site visitors. Content entities can be defined by the core software or by modules. Content entities are grouped into entity types, which have different purposes and are displayed in very different ways on the site. Most entity types are also divided into entity sub-types, which are divisions within an entity type to allow for smaller variations in how the entities are used and displayed. Here is a table of some common content entity types: Entity type Entity sub-type Defining Module Main uses Examples Content item Content type Node module Content intended to be the main page area for pages on the site In the farmers market site example, you might have content types for basic pages, vendor pages, and recipe pages. Comment Comment type Comment module Commentary added to content entities (typically to Content item entities) On a blog site, blog posts might have comments. They are not needed in the farmers market site example. User profile (none) User module Data related to a person with a user account (login access) on the site Every site has at least basic user profiles with user names and email addresses; social networking sites may have more complex user profiles with more information. Custom block Block type Custom Block module Text and images in smaller chunks, often displayed in the site header, footer, or sidebar In the farmers market site example, you might put the hours and location in a sidebar block. Taxonomy term Vocabulary Taxonomy module Used to classify other types of content In the farmers market site example, you might classify Recipe content with an Ingredients taxonomy vocabulary, with taxonomy terms like Carrots and Tomatoes. In a blogging site, blog posts might be classified using a Tags vocabulary, and perhaps also a Categories vocabulary. File (none) File module An image or attachment file that is tracked and managed by the site, often attached to other types of content In the farmers market site example, both Recipe and Vendor pages might have image attachments, which would (behind the scenes) be managed as File entities by the site Contact form Form type Contact module A form that lets site visitors contact site owners A contact form is needed in the farmers market site example
What is a field? Within entity items, the data is stored in individual fields, each of which holds one type of data, such as formatted or plain text, images or other files, or dates. Field types can be defined by the core software or by modules. Fields can be added by an administrator on entity sub-types, so that all entity items of a given entity sub-type have the same collection of fields available. For example, the Vendor content type in the farmers market example might have fields for the vendor name, a logo image, website URL, and description, whereas the Basic page content type might only have fields for the title and page body. When you create or edit entity items, you are specifying the values for the fields on the entity item.
Concept: Modular Content Source file: planning-modular.txt Overview of modular content and how content in a page can be sourced from other content items. Contentmodular Modular contentoverview Pagecomposite Composite pagecreating with modular content Viewand modular content Views moduleoverview
Prerequisite knowledge
What is modular content? Given that the content of your site is stored in a database, it is desirable to make the content modular, meaning that certain pages on your site, rather than being edited as a whole page, are instead generated automatically from other content items. For instance, in the farmers market site scenario, you might create individual content items for recipes. If the recipe content items have a field that keeps track of ingredients, then your site could include a composite page that would list recipes, and allow visitors to search for a recipe that contained some particular ingredient they had bought at the market. Smaller sections of pages can also be generated as composites. For instance, recipe content items could have a field that keeps track of which vendor submitted the recipe (see ), with the vendor details edited in separate vendor content items. This would allow you to do the following on your site: On each Recipe page, there could be an area that displays some information about the vendor that submitted the recipe, such as their name and market stall number. Each vendor page could have a section that lists the recipes they have submitted. The key idea is that each piece of information is only edited in one place. When vendor information is updated, all recipe pages that display that vendor information are automatically updated; when a recipe is submitted by a vendor, it is automatically displayed on the vendor page. The core Views module is the usual way to use modular content to create composite pages and page sections; see for more information. Also, view modes are useful for defining different ways to display each content item; see for more information.
Planning your Content Structure Source file: planning-structure.txt How to plan a content structure that assigns content entity types to specific content on the website. Content structureplanning Site plancontent structure
Goal Make a plan for the content structure of the site (which type and subtype of entity to use for which content), and which pages will contain listings of content.
Prerequisite knowledge
Steps Brainstorm about what content your site needs to contain, which could include content that visitors would be looking for, as well as content that you want to show to visitors. The result could be the description in . For each identified piece of content, decide which content entity type would be the best fit. In doing this, you’ll need to consider where and how the content will be used and edited on the site. For example, in the farmers market site scenario, you might want to display the hours and location of the farmers market on the sidebar of every page. For that content, a single custom block makes sense. As another example, you might decide that pages displaying information about each vendor should be content items managed by the core Node module, because you want vendors to be able to edit their own listings. The core Node module permission system lets you do this easily. These decisions do not necessarily always have only one right answer; for instance, you could decide that vendor pages should be user profiles instead of content items, but if you did that the content would be tied to a specific user account, and it would not be as easy to later change the ownership of a vendor page to a different user account. Within each content entity type you identified, decide what division into entity sub-types would make sense. For example, in the farmers market site example, you would probably decide that under the Content item entity type, there should be one content type for basic pages (Home and About), one for vendor pages, and one for recipe pages. For each entity sub-type you decided on, decide what fields are needed. For instance, the Vendor content type might need fields for the vendor name, web page URL, image, and description. Decide on what entity listings are needed, which could be entire pages or smaller areas on the page. For each listing, you’ll need to determine what entity items should be listed. Then you’ll need to decide in what order and with what filtering options they should be displayed; for example, you might want to give the site visitor the option to search by keyword, to filter the list down to a subset, or to sort the list. You’ll also need to decide what information from the entity items should be shown, which might result in adding to the list of fields you determined in the previous step. The farmers market site, for example, needs to have a Recipes listing page that lists content items of type Recipe, with the ability to filter by ingredients, so that means that the Recipe content type needs an Ingredients field. For each identified field on each entity subtype, identify what type of data it should contain (such as plain text, formatted text, a date, an image file, etc.), and how many values should be allowed. Most fields are single-valued, but for example, a Recipe should allow for multiple values in its Ingredients field. Consider which fields would be best as references to taxonomy term entities: fields whose values should be chosen from a list of allowed values. Allowed values that are expected to change and grow over time, are good candidates. An example is the Ingredients field for the Recipe content type. Consider which fields should reference other content entities. An example is that since vendors will be submitting recipes, a field will be needed on the Recipe content type that references the Vendor content item for the vendor who submitted the recipe. Here’s an example of the resulting content structure for the farmers market scenario example site: Entity type Entity sub-type Examples Fields Content item Basic page Home page, about page Title, page body Content item Vendor A page for each vendor at the market Vendor name, page body, image, URL Content item Recipe A page for each submitted recipe Recipe name, page body, image, reference to Vendor who submitted it, Ingredients taxonomy Custom block (generic) Copyright notice for footer, Hours and location for sidebar No special fields Taxonomy term Ingredients Carrots, tomatoes, and other recipe ingredients No special fields Contact form (generic) Generic contact form Name, email, subject, message User profile (none) Will not be displayed on site No special fields And here are the listings the site needs: Page or page area Entity type and sub-type Filter/sort/pagination Fields displayed Vendors page Vendor content items All vendors, alphabetical, paged Image, vendor name, trimmed body Recipes page Recipe content items Filter by ingredients, alphabetical, paged Image, recipe name Recent recipes sidebar Recipe content items List 5 most recent Image, recipe name
Expand your understanding
Concept: Editorial Workflow Source file: planning-workflow.txt Overview of the editorial workflow to manage content on a website. Editorial Workflowoverview Published flagoverview Unpublished flagoverview Revisionoverview
Prerequisite knowledge
What is an Editorial Workflow? An Editorial Workflow is the process organizations follow to create, review, edit and publish content. Depending on the size and processes of the organization, multiple people in different roles can be part of the process. For example, content creators collect information and write content, editors review, edit, ask for changes, and publish the content once it’s considered ready to be shared with the audience. In your site, content types can have either a Published or an Unpublished flag to track their workflow states, that you can set for each content item when saving: Published content items are visible to all visitors of the site. Unpublished content items are not visible to the visitors of the site, but can be seen by authenticated users who have the permissions to view unpublished versions of specific content items. Most content entity types support revision tracking, if it is enabled by an administrator for the entity sub-type. If you have revision tracking enabled, the software will store old versions of the content each time it’s revised, and add notes about what is changed. This allows you to look at the history and revert to older versions. Using the Unpublished flag and Revisions, you can build an editorial workflow that lets content creators and editors work on the live site without displaying the content to visitors. When the content is ready to be published, all they need to do is save it as Published.
Additional resources Talking about online content, organizations would also want to consider post-publication phases of the editorial workflow: content teams might need to update already published content. Some organizations might need a more complex workflow with the options to configure which content type goes through the workflow process, set up user roles and permissions, set different workflow states (for example draft, needs review, published). For more complex workflows, you can add install or more modules from the contributed Workbench Suite module to your site. Attributions Written and edited by Diána Lakatos at Pronovix, and Grant Dunham.
Installation Source file: guide.txt Overview of server requirements and details of common installation tasks.
Concept: Server Requirements Source file: install-requirements.txt Overview of server requirements for installing and running the core software. Installation requirementsoverview Installation requirementsdisk space Installation requirementsweb server Installation requirementsdatabase Installation requirementsPHP programming language Installingcore software Core softwareinstallation requirements Disk spaceinstallation requirements Web serverinstallation requirements Apache web serverversion requirements Hiawatha web serverversion requirements Nginx web serverversion requirements Microsoft IIS web serverversion requirements Databaseinstallation requirements MySQL databaseversion requirements PostgreSQL databaseversion requirements SQLight databaseversion requirements PHP programming languageversion requirements
What are the requirements for running the core software?
Disk space A minimum installation requires 15 MB. 60 MB is needed for a website with many contributed modules and themes installed. Keep in mind you need much more for the database, files uploaded by the users, media, backups, and other files.
Web server Apache (Recommended) Apache is the most commonly used web server. The core software will work on Apache 2.x hosted on UNIX/Linux, OS X, or Windows that have the Apache mod_rewrite module installed and enabled. The Apache VirtualHost configuration must contain the directive AllowOverride All to allow the .htaccess file to be used. Nginx Nginx is a commonly used web server that focuses on high concurrency, performance and low memory usage. The core software will work on Nginx 1.1 or greater hosted on UNIX/Linux, OS X, or Windows. The ngx_http_rewrite_module must be installed and enabled. Hiawatha Hiawatha is a web server with a strong focus on security. It also aims at being easy to use and lightweight. Research performed by independent researchers proves that Hiawatha offers a performance comparable to other web servers under normal conditions, but much better while under attack. URL Toolkit must be installed and configured to rewrite URLs. Microsoft IIS Microsoft IIS is a web server and set of feature extension modules for use with Microsoft Windows. The core software will work with IIS 5, IIS 6, or IIS 7 if PHP is configured correctly. Because clean URLs are required, you may need to use a third party product. For IIS 7, you can use the Microsoft URL Rewrite module or a third party solution.
Database Use one of the following databases: MySQL - 5.5.3 (MariaDB 5.5.20, Percona 5.5.8) or higher with an InnoDB-compatible primary storage engine PostgreSQL - 9.1.2 or higher SQLite - 3.4.2 or higher
PHP PHP 5.5.9 or higher.
Additional resources Drupal.org community documentation page "System requirements" Attributions Adapted by Karl Kedrovsky and Brian Emery from "System requirements", copyright 2000-2016 by the individual contributors to the Drupal Community Documentation.
Concept: Additional Tools Source file: install-tools.txt Overview of additional tools that help site builders conveniently create sites. ToolCoder ToolDevel ToolDrush ToolFirebug ToolGit Coder tooloverview Devel tooloverview Drush tooloverview Firebug tooloverview Git tooloverview Drupal Consoleoverview
What tools are available for site builders? There are several additional tools available that help you create sites faster, more accurate and with less effort. Drush See below for more about Drush. Git Git is a version control system you can use to track changes made to files within your entire site, or files relating only to the module or theme that you are using. Git makes it possible to try out changes, and if necessary, revert to a previous version. It can be used as well to track changes in the configuration files and synchronize the configuration of different sites. Git has become the standard for web development projects. Devel The contributed Devel module helps with development tasks such as debugging and inspecting code, analyzing database queries, and generating dummy content.
What is special about Drush? Drush is a command-line tool for building and maintaining sites, providing an alternative to using the administrative interface for many operations. Many site builders and maintainers prefer to use Drush whenever possible, and consider the time spent installing and learning to use Drush to be a good investment. Reasons to consider using Drush: Drush provides a large number of commands for tasks such as installing the base software, modules, and themes; updating software; performing database operations, including copying and querying; resetting passwords; and clearing the cache. Some contributed modules and themes also define Drush commands. Doing administrative tasks using Drush is typically faster and less tedious than performing the same tasks through the administrative interface. Since Drush is a command-line interface, you can write scripts that combine Drush commands and other commands on the server, to automate more complicated tasks. Drush provides additional functionality not available via the administrative interface; for example, running database queries. If you want to use Drush, you will need to have command-line terminal access to the server where your website will be hosted, and you will need to have a compatible version of the Drush tool installed on that server. Check the Drush website for installation instructions and version compatibility. There is also documentation on the available Drush commands on that site.
What tools are available for module and theme developers? In addition to the site builder tools mentioned above, the following tools are useful for module and theme developers. Drupal Console Drupal Console is a command-line tool that generates boilerplate code and interacts with a Drupal site. It can generate, for example, block or form code, install modules and themes, and create dummy content. Drupal Console makes use of the Symfony Console. Coder Coder is a command-line tool that checks if your modules and themes comply with coding standards and other best practices. It can also fix coding standard violations. Firebug Firebug is a Firefox plugin that allows viewing, editing, debugging, and monitoring CSS, HTML, and JavaScript in a separate browser window. The contributed Drupal for Firebug module displays Drupal debugging and SQL query information in the Firebug window.
Additional resources Drupal.org community documentation page "Development tools" Attributions Written and edited by Boris Doesborg and Jennifer Hodgdon.
Preparing to Install Source file: install-prepare.txt How to choose a method for installing the core software, and satisfy prerequisites for installation. Installingcore software Drush toolusing to install the core software Web installerusing to install the core software Downloadingcore software Drupal corepreparing install
Goal Choose an appropriate way to install the core software, and handle any required prerequisites.
Prerequisite knowledge
Site prerequisites If you want to use Drush to install the core software, Drush must be installed. See .
Steps Choose a method for installing the core software. Try a free online demo Use an online provider to get a demo installation of the core software in 20 minutes or less. See the Drupal.org page "Try Drupal". Use a one-click installer from your hosting provider If you choose to install the core software at your hosting provider, your hosting provider may have specific documentation and/or a one-click install that you can use. See Drupal.org’s list of hosting providers that support Drupal. Use Drush You will need to have Drush installed and command-line access to the site. See . Use the web installer You will need space on a local or hosted web server to install the core software manually. If you are installing using Drush or the web installer, set up a URL and hosting for your site, either at an external hosting provider or on your own computer. Verify that the hosting is working by putting a simple HTML file in the web root directory of the hosting, and visiting the URL for your site. If you are installing using Drush or the web installer, create a database, along with a database user account with full access. If you are installing using Drush, type the following at the Drush command line, where example is the name of the directory that the core software will be downloaded to, and DB_NAME, DB_USER and DB_PASS are your database’s credentials: drush dl drupal --drupal-project-rename=example cd example drush site-install standard --db-url='mysql://DB_USER:DB_PASS@localhost/DB_NAME' --site- name=example If you are installing using web installer, upload the core software files manually. You will need to: Go to https://www.drupal.org and click Download & Extend on the top-level menu. Downloads page on Drupal.org Click the green download button under Core to be taken to the Downloads page. Recommended releases section of Drupal downloads page on Drupal.org Click the version you wish to download under Recommended releases. Download files section of Drupal core download page on Drupal.org Download the tar.gz or zip file to the web root in your local machine. Upload the downloaded files to your hosting account. Log in to the control panel and navigate to the HTML directory. Save the Drupal files in a new directory at the same level as other sites you are hosting. Uncompress the tar.gz or zip file. A new directory will be created featuring all the uncompressed Drupal files. Optionally, rename the directory to match your custom site’s name.
Expand your understanding Run the installer if you chose web installer to install the core software. See .
Additional resources Drush Attributions Written and edited by Drew Gorton, Michael Lenahan at erdfisch, and Jojy Alphonso at Red Crackle.
Running the Installer Source file: install-run.txt How to use the installer to install the core software. Installer toolrunning Installation process Installation profile Profileinstallation Databaseconfiguring during the installation process Core softwareinstalling Drupal coreinstalling Web installerrunning
Goal Install the core software and create the admin account by running the included installer.
Prerequisite knowledge
Site prerequisites
Steps If you are using a 1-click install from a hosting provider or demo site, you will most likely see some or all of the following screens as part of the installation process. If you uploaded the core files manually, to start the installer, open a browser and visit the URL that you set up for your hosting. Select a language on the first page of the installer; for example, English. You could optionally choose from any of the other listed languages. The language files for the chosen language will be downloaded and installed so that the rest of the installation process can be finished in the chosen language. After choosing a language, click Save and continue. Choose a language Select an installation profile. Installation profiles provide site features and functions for a specific type of site as a single download containing the core software, contributed modules, themes, and pre-defined configuration. Core contains two installation profiles. Select the core Standard installation profile. Click Save and continue. Choose an installation profile The next step in the installer will verify that your system meets the minimum requirements. If it does not, you’ll be presented with an outline of what needs to be corrected in order to proceed. If it does, the installer will automatically advance to the next step. Provide details of the database you created in the chapter. Then click Save and continue. Field name Explanation Value Database name The custom name given to the database drupal8 Database username Username created databaseUsername Database password Password chosen Database configuration form The next step will display a progress bar under the heading Installing Drupal. After the installer has completed, it will automatically advance to the next step. Installation progress bar The final step is to configure some basic information about your new site. Note that the user account you create in this step is the site’s admin account. See for important information about this unique account. You can safely name this account "admin", and make sure to choose a secure and unique password. Fill in the form with the following information: Field name Explanation Value Site name The name chosen for the site Anytown Farmers Market Site email address The email associated with the site info@example.com Username The designated user’s credentials admin Password The password chosen Confirm password Repeat the password Email address The user’s email admin@example.com The remaining fields can likely be left at their default values. Configuration form Click Save and continue. You will be redirected to the front page of your new site and you should see the message Congratulations, you installed Drupal! displayed at the top of the page. Installation success
Expand your understanding Check the Status Report to see if there are any problems with the installation. See .
Additional resources Drupal.org community documentation page "Create A Database" Attributions Written and edited by Joe Shindelar at Drupalize.Me, and Jojy Alphonso at Red Crackle.
Basic Site Configuration Source file: guide.txt Overview of basic site configuration concepts. Tasks on module installation, user account settings, and themes are covered.
Concept: Administrative Overview Source file: config-overview.txt Overview of administrative menu and contextual links. Administrationoverview Administrative menuoverview Manage administrative menuoverview Toolbaroverview Contextual linkoverview Content menu entryadministrative menu Structure menu entryadministrative menu Appearance menu entryadministrative menu Extend menu entryadministrative menu Configuration menu entryadministrative menu People menu entryadministrative menu Reports menu entryadministrative menu Help menu entryadministrative menu
Prerequisite knowledge
What is the administrative menu? The toolbar provided by the core Toolbar module displays the Manage administrative menu at the top or left side of the site, for users with permission to see it. This menu provides access to all of the administrative areas of the site. The menu entries will vary depending on which modules are active on your site and the permissions of the person viewing the menu; if you install using the core Standard installation profile and have full administrative permissions, the top-level entries are as follows: Administrative menu in horizontal mode Content Lists and manages existing content, and allows creation of new content. Structure Contains a list of links for managing structural elements of the site, such as blocks, content types, menus, and taxonomy. Appearance Manages themes and appearance-related settings. Extend Manages the installation and uninstallation of modules. Configuration Contains links to settings pages for various site features. People Manages users, roles, and permissions. Reports Contains links to logs, update information, search information, and other information about the site’s status. Help Lists help topics for installed modules that provide them. The arrow button on the far right side of the second line of the toolbar (or far left side, if the site is being viewed using a right-to-left-reading language like Arabic) can be used to switch the menu from appearing horizontally at the top of the page, to a vertical format on the left side (or right side, in right-to-left languages). When viewed vertically, the menu becomes an interactive tree. Administrative menu in vertical mode This guide has a standard way to describe navigation to administrative pages using the administrative toolbar. See for more information.
Editing Basic Site Information Source file: config-basic.txt How to edit basic site information (site name, slogan, and default time zone). Configuringsite Site nameconfiguring Site sloganconfiguring Sloganconfiguring Site taglineconfiguring Taglineconfiguring Site email addressconfiguring Email addressconfiguring Front pageconfiguring Error pageconfiguring Regional settingconfiguring Locale settingconfiguring Country settingconfiguring Time zone settingconfiguring First day of weekconfiguring
Goal Change basic site information such as Site name, Slogan, Default time zone.
Prerequisite knowledge
Steps
Configuring the basic site information In the Manage administrative menu, navigate to Configuration > System > Site information (admin/config/system/site-information) to change the Site name, Slogan, administrative Email address, or the Default front page path. Fill in the available fields as appropriate for your site. Field name Explanation Example value Site name Used to identify the site and displayed in browsers Anytown Farmers Market Slogan Usually displayed sitewide Farm Fresh Food Email address Used as From address in automated email messages (registrations, password resets, etc) info@example.com Site Information After editing the fields, click Save configuration to see the changes applied to the site.
Configuring default Regional settings In the Manage administrative menu, navigate to Configuration > Regional and Language > Regional settings (admin/config/regional/settings). Select the appropriate country from the Default country select list in the Locale section, and set which day will be displayed as First day of week on your site. In the Time zones section, select the sitewide Default time zone from the list and configure user-specific time zones. Time Zones After editing the fields, click Save configuration to see the changes applied to the site.
Additional resources Drupal.org community documentation page "Getting started with Drupal 8 administration" Attributions Written and edited by Sree Veturi, Michael Lenahan at erdfisch, and Antje Lorch.
Installing a Module Source file: config-install.txt How to install a core or contributed module, using the administrative interface or Drush. Moduleenabling Moduleinstalling
Goal Install a core module, or a contributed module whose files have already been uploaded to the site, through the administrative interface or using Drush.
Prerequisite knowledge
Site prerequisites If you want to use Drush to install modules, Drush must be installed. See .
Steps You can use the administrative interface or Drush to install modules.
Using the administrative interface In the Manage administrative menu, navigate to Extend (admin/modules). The Extend page appears showing all the available modules in your site. Check the boxes for the module or modules you want to install. For example, check the box for the core Activity Tracker module. Enabling the core Activity Tracker module Click Install. The checked modules will be installed.
Using Drush In the Manage administrative menu, navigate to Extend (admin/modules). The Extend page appears showing all the available modules in your site. Find the machine name of the module you want to install, by expanding the information area for the module. For instance, the core Activity Tracker module’s machine name is tracker. Run the following Drush command to install the module: drush en tracker
Additional resources Drush Attributions Written and edited by Boris Doesborg and Jennifer Hodgdon.
Uninstalling Unused Modules Source file: config-uninstall.txt How to uninstall modules to reduce overhead. Moduleuninstalling unused Uninstallingunused modules Performanceimproving Drush toolusing to uninstall module
Goal Uninstall the core Search and History modules, as well as the core Activity Tracker module if you installed it in , to reduce overhead.
Prerequisite knowledge
Site prerequisites You must have at least one unused module on your site that you want to uninstall, such as the core Search module. If you want to use Drush to uninstall modules, Drush must be installed. See .
Steps You can use the administrative interface or Drush to uninstall modules.
Using the administrative interface In the Manage administrative menu, navigate to Extend > Uninstall (admin/modules/uninstall) where you will find the list of modules that are ready to be uninstalled. Check the boxes for the modules you are uninstalling (Search, History, and Activity Tracker). Click Uninstall at the bottom of the page. Uninstalling module You cannot uninstall a module if it is required by some other module(s) and/or functionality. For example, the core File module is required by the core Text Editor, CKEditor, and Image modules. It can’t be uninstalled unless you uninstall its dependent module(s) and functionality first. A module that cannot be uninstalled yet will have a disabled checkbox, restricting you from uninstalling it. Step 2 will prompt you to confirm the module uninstall request. Click Uninstall. Confirm uninstall - search module
Using Drush In the Manage administrative menu, navigate to Extend (admin/modules). The Extend page appears showing all the available modules in your site. Find the machine name of the module you want to uninstall, by expanding the information area for the module. For instance, the core Activity Tracker module’s machine name is tracker. Run the following Drush command to uninstall the module: drush pm-uninstall tracker
Expand your understanding You can also uninstall the core Comment module by following these steps, but only after comment fields have been removed, which is a side effect of . Attributions Written and edited by Surendra Mohan, and Jojy Alphonso at Red Crackle.
Configuring User Account Settings Source file: config-user.txt How to change user account registration settings. Userconfiguring account setting Account settingconfiguring Securitymanaging user accounts Securityuser account settings
Goal Turn off the ability for people to register user accounts on the site. Also, review and/or edit the email messages generated by the site for events related to user accounts.
Prerequisite knowledge
Steps In the Manage administrative menu, navigate to Configuration > People > Account settings (admin/config/people/accounts). Under Registration and Cancellation, select Administrators only as the people with permissions to register user accounts. You can check Require email verification when a visitor creates an account in case you want to change the settings for account registration later on. Account registration only by admin Optionally, change the default email address from which user account notifications from the farmers market website will be sent. This will help you maintain a separate email address from the one used for the website in general. For example, this email address for user account notifications will be useful for a staff member(s) communicating with vendors. Optionally, edit the email templates in the Emails section to customize automated emails. There are seven email templates available with the core. They are meant for different user-specific occasions. All of them can be personalized and three can be disabled via checkboxes: activation, blocking, and cancellation. You can send out your own text (for example, welcoming the new vendors for whom accounts were just created) by editing the the Welcome (new user created by administrator) template. Email notification on account events Click Save configuration to save the changes.
Expand your understanding
Additional resources Security Guide can help you with a more safety-focused approach to configuration. Attributions Written and edited by Laura Vass at Pronovix, and Jojy Alphonso at Red Crackle.
Configuring the Theme Source file: config-theme.txt How to edit a theme’s settings to update the color scheme and add a logo. Themeconfiguring Bartik themeconfiguring Color schemeconfiguring Logo imageconfiguring
Goal Edit the settings of the default core Bartik theme to change the color scheme and to add a logo.
Prerequisite knowledge
Steps In the Manage administrative menu, navigate to Appearance (admin/appearance). Under Installed Themes, you will find Bartik listed as your default theme. Under Bartik (default theme), click Settings. Default theme, Bartik Under Color scheme, click inside each color build box and type the proper color codes you would like to add. For example, use the following colors: Area Color Header background top #7db84a (green) Header background bottom #2a3524 (dark green) Main background #ffffff (white) Sidebar background #f8bc65 (light orange) Sidebar borders #e96b3c (orange) Footer background #2a3524 (dark green) Title and slogan #ffffff (white) Text color #000000 (black) Link color #2a3524 (dark green) Note: You can also use the color wheel on the right to select colors of your choice. The web color codes will be added for you. Updated color specifications in the core Bartik theme Under Logo Image Settings, uncheck Use the default logo supplied by the theme. New logo in core Bartik theme settings Under Upload logo image, locate a logo file and upload it to your site. Note: You can also set a universal logo for all themes under Appearance > Settings (admin/appearance/settings). A custom logo for your theme will override the universal logo. Once you have selected the file you would like to upload, you will see its filename next to the Choose File button. In order to save your changes and see the updated colors and logo on your site, click Save configuration at the bottom of the page. Note: Under Color scheme, there is a Preview section that displays a sample of how your website will look with the new settings. core Bartik theme settings preview Click Return to site in the toolbar to verify that you have updated the core Bartik theme settings for your website. Final result of editing the core Bartik theme settings - colors and logo
Expand your understanding Attributions Written and edited by Ann Greazel, Amanda Luker at Advomatic, and Jack Haas.
Basic Page Management Source file: guide.txt Overview of page management concepts. Tasks on content items, in-place editing, and menus are covered.
Concept: Paths, Aliases, and URLs Source file: content-paths.txt Overview of paths, aliases, and URLs (with examples). Pathoverview Aliasoverview URL (Uniform Resource Locator)overview Uniform Resource Locator (URL)overview URL aliasoverview
What is a URL? URL is the abbreviation for "Uniform Resource Locator", which is the page’s address on the web. It is the "name" by which a browser identifies a page to display. In the example "Visit us at example.com.", example.com is the URL for the home page of your website. Users use URLs to locate content on the web.
What is a Path? A path is the unique, last part of the URL for a specific function or piece of content. For example, for a page whose full URL is http://example.com/node/7, the path is node/7. Here are some examples of paths you might find in your site: node/7 taxonomy/term/6 admin/content/comment user/login user/3
What is an Alias? The core software has a feature called "URL Alias" that allows you to provide a more understandable name to the content. So, if you have an "About Us" page with the path node/7, you can set up an alias so that your visitors will see it as http://www.example.com/AboutUs. The core Path module, which supports URL aliasing, provides this functionality.
Creating a Content Item Source file: content-create.txt How to create a content item for use as the home page. Content itemcreating Basic pagecreating Home pagecreating
Goal Create and publish a content item that will be used as the home page of the site.
Prerequisite knowledge
Site prerequisites The Basic page content type must exist. This is created on your site when you install with the core Standard installation profile.
Steps In the Manage administrative menu, navigate to Content > Add content > Basic page (node/add/page). The Create Basic page form appears. Click Edit summary. Fill in the fields as shown below. Field name Explanation Value Title Title of the page. Will also be used as a meta tag in the source code, URL alias, and as label of the content item in administration screens Home Summary Summary of the value of the body field. Can be used as teaser in overview pages Opening times and location of City Market. Body Full content of the page Welcome to City Market - your neighborhood farmers market! Open: Sundays, 9 AM to 2 PM, April to September Location: Parking lot of Trust Bank, 1st & Union, downtown URL path settings > URL alias Alternate relative path for the content /home By clicking the Source button in the rich text editor toolbar, you can see the HTML source code of the text that you are editing. Create a basic page Click Preview to ensure everything looks like expected. Click Back to content editing. Click Save and publish. The content is saved and can be found on the Content page. Follow the same steps to create an About page, with title "About", and a body telling about the history of the farmer’s market.
Expand your understanding
Additional resources Drupal.org community documentation page "About nodes" Attributions Written by Agnes Kiss and Boris Doesborg.
Editing a Content Item Source file: content-edit.txt How to edit a content item. Contentediting Contentfinding Editing content
Goal Update the hours on the Home page content item.
Prerequisite knowledge
Site prerequisites A content item for the Home page must exist. See .
Steps In the Manage administrative menu, navigate to Content (admin/content). If the content item you want to edit was updated or created recently, it should appear near the top of the content list on that page. If not, you can use the Type, Title, or other filters to locate the content item. Content administration page Click Edit in the row of the content item you want to edit (Home), to open the content editing form. Update the opening hours in the Body field. See for an explanation of the fields and a screenshot. Check Create new revision in the box on the right, if it is not already checked, and enter a Revision log message explaining what changes you are making (for example, you might enter "Updated opening hours"). This text will appear in the revision log for the page. Revision information section of the content edit page Click Save and keep published to save your changes. You will be redirected back to the Content administrative page, and there should be a message showing that the content item was updated. Updated content message
Expand your understanding As an alternative to the first two steps above, you can also reach the content edit form as follows: Starting from your site’s home page, use the site’s navigation menus to locate the page where the content you want to edit is displayed to visitors. Most themes will display an Edit link or tab near the top of that page to people with permission to edit the page; clicking the link will take you to the full content edit form. You could also use the in-place editor (refer to ) from this page. Attributions Written by Chris Dart and Jennifer Hodgdon.
Editing with the In-Place Editor Source file: content-in-place-edit.txt How to edit content with the in-place editor. Editing content Contentediting In-place editor Quick editor Full editor
Goal Use the in-place editor to add information to the About page without opening the full editor page.
Prerequisite knowledge
Site prerequisites The About page you want to edit must exist. See .
Steps Navigate to the About page to edit content with the in-place editor. If the page has not yet been added to a navigation menu, you can find and open it by following these steps: In the Manage administrative menu, navigate to Content (admin/content). If the content item you want to edit was updated or created recently, it should appear near the top of the content list on that page. If not, you can use Type, Title, or other filters to locate the content item. Find the About page and click it. Once the content you want to edit is being viewed in your browser, follow these steps to use the quick editor: Find the section of the page that displays the content you want to edit, and turn on quick editing mode using the Quick edit contextual link (see for instructions on how to access contextual links). You will see each editable field on this content item outlined in blue; also, a hovering dialog box will appear. Quick edit mode Click the Body text area to begin editing. The Body field supports a rich text editor. The editing toolbar will be displayed in a hovering dialog box. Add some information about City Market. A Save button will appear in the hovering dialog box, and the field outline will change color. Quick edit mode after editing If you are satisfied with your edits, click Save in the hovering dialog box. If not, click "x" to discard your edits, and confirm. Either way, quick editing mode will be turned off.
Expand your understanding Try using the full editor on the same content (see ) and note that there is much more information that can be edited that is not available in the quick editor. Attributions Written and edited by David Lee and Jennifer Hodgdon.
Setting Up Content Structure Source file: guide.txt Overview of content structure concepts. Tasks on content types, taxonomies, and reference fields are covered.
Adding a Content Type Source file: structure-content-type.txt How to add and configure a new content type. Content typeadding
Goal Add and configure a new content type Vendor.
Prerequisite knowledge
Site prerequisites You need to have a plan in place for your content structure. See .
Steps In the Manage administrative menu, navigate to Structure > Content types (admin/structure/types). The Content types page appears showing all the available types of content. Click Add content type. The Add content type page appears. Fill in the fields as shown below. Field name Explanation Example value Name Name of the content type Vendor Description Explain the use of the content type Information about a vendor Adding a Content type In the vertical tab Submission form settings, configure the form that is used for creating and editing content of this type. Fill in the fields as shown below. Field name Explanation Example value Title Label of the Title field that is shown when editing or creating content of this type. Vendor name Preview before submitting Option to choose whether you should preview the content before submitting. Optional Explanation or submission guidelines Instructions for creating or editing content. (Leave blank) Submission form settings In the vertical tab Publishing options, decide on default options for new content of this type. Fill in the fields as shown below. Field name Explanation Example value Published Make the content item published by default. Checked Promoted to front page In a default website, this setting can be used to show content on the homepage. Unchecked Sticky at the top of the list In a default website, this setting can be used to keep content on top of a list. Unchecked Create new revision Create a new revision each time the vendor is being edited. Checked Changing these settings does not affect the content items that have already been created. Publishing Options In the vertical tab Display settings, decide if the author and publication date will be visible in the content item. Fill in the fields as shown below. Field name Explanation Example value Display author and date information Display the author username and publication date on each vendor page. Unchecked Display settings In the vertical tab Menu settings, fill in the fields as shown below. Field name Explanation Example value Available menus Menus that this type of content can be added to. Vendors do not need to appear in menus, so uncheck all menu options. Unchecked Menu settings Click Save and manage fields to save the content type. The Manage fields page appears that allows you to add fields to the content type. See Confirmation Follow the same steps to create a content type for recipes. Example values for the fields in the forms, where they are different from the steps above: Field name Example value Name Recipe Description A recipe submitted by a vendor Submission form settings - Title Recipe name
Expand your understanding Install and configure the contributed Pathauto module so that content items get automatically generated URLs/path aliases. See for more on URLs within your site, for instructions on finding contributed modules, and for instructions on downloading and installing contributed modules. Attributions Written and edited by Sree Veturi, Boris Doesborg, and Jennifer Hodgdon.
Deleting a Content Type Source file: structure-content-type-delete.txt How to delete a content type that is not required for the site. Content typedeleting
Goal Delete the unneeded content type Article.
Prerequisite knowledge
Site prerequisites The Article content type must exist. It is created on your site when you install with the core Standard installation profile.
Steps In the Manage administrative menu, navigate to Structure > Content types (admin/structure/types). The Content types page appears. Click Delete in the Operations dropdown button for the Article content type. Article delete dropdown A confirmation page is displayed. Click Delete. Article delete confirmation page The Content types page appears with a confirmation message saying that the content type has been deleted: Article delete confirmation message Attributions Written and edited by Sree Veturi and Boris Doesborg.
Adding Basic Fields to a Content Type Source file: structure-fields.txt How to add fields to a content type. Content typeadding field to Fieldadding to content type Image fieldadding URL fieldadding
Goal Add a link field and an image field to the Vendor content type.
Prerequisite knowledge
Site prerequisites The Vendor content type must exist. See .
Steps Add the fields Vendor URL and Main image to the Vendor content type. In the Manage administrative menu, navigate to Structure > Content types (admin/structure/types). Then click Manage fields in the dropdown button for the Vendor content type. The Manage fields page appears. Click Add field. The Add field page appears. You can either create a new field for the content type or re-use an existing field. Fill in the fields as shown below. Field name Explanation Value Add a new field Field type Link Label Label that is visible in administration pages Vendor URL A machine name is automatically generated, based on the Label value. Click Edit if you want to override the default name. Add field page Click Save and continue. The page Vendor URL appears which lets you set the allowed number of values. Fill in the fields as shown below. Field name Explanation Value Allowed number of values The number of values that can be entered Limited, 1 Click Save field settings. The page Vendor URL settings for Basic page appears which allows you to configure the field. Fill in the fields as shown below. Field name Explanation Value Label Label that is visible in the content form Vendor URL Help text The instruction that is shown below the field (leave blank) Required field Whether the field is required or not Unchecked Allowed link type The kind of links that can be entered External links only Allow link text Whether a link text can be entered Disabled Field settings page for Vendor URL Click Save settings. The Vendor URL has been added to the content type. Continue creating the Main image field. Click Add field. The Add field page appears. Fill in the fields as shown below. Field name Explanation Value Add a new field Field type Image Label Label that is visible in administration pages Main image Click Save and continue. The page Main image appears. Fill in the fields as shown below. Field name Explanation Value Allowed number of values The number of values that can be entered Limited, 1 You can set a default image here. This will be used when you do not provide an image when creating a Vendor content item. Click Save field settings. The page Main image settings for Basic page appears. Fill in the fields as shown below. Field name Explanation Value Label Label that is visible in the content form Main image Help text The instruction that is shown below the field (leave blank) Required field Whether the field is required or not Checked Allowed file extensions The type of images that can be uploaded png, gif, jpg, jpeg File directory The directory where the files will be stored. By providing a file directory value, you ensure that all images uploaded via the Main image field will be located in the same directory. vendors Minimum image resolution The minimum resolution of the uploaded image 600 x 600 Maximum upload size The maximum file size of the uploaded image 5 MB Enable Alt field Whether an alternative text can be entered Checked Alt field required Whether an alternative text is required Checked Field settings page for Main Image Click Save settings. Main image has been added to the content type. Manage fields page Add a Main image field to the Recipe content type, using similar steps. Start by navigating to the Recipe content type’s Manage Fields page in step 1. Then skip to step 7 and follow the remaining steps, but reuse the existing Main image field you created for the Vendor content type rather than creating a new field. In subsequent steps, some of the configuration screens will not be available, because of the field reuse. Create two Vendor content items (see ) called "Happy Farm" and "Sweet Honey". Make sure that they include images and URLs.
Expand your understanding
Additional resources Drupal.org community documentation page "Add a field to a content type" Attributions Written by Sree Veturi and Boris Doesborg.
Concept: Reference Fields Source file: structure-reference-fields.txt Overview of reference fields and their commonly-used types. Reference fieldoverview Reference fieldcontent Reference fieldtaxonomy term Reference fielduser Fieldreference Fieldcontent reference Fieldtaxonomy term reference Fielduser reference Taxonomy term reference fieldoverview User reference fieldoverview Content reference fieldoverview
Prerequisite knowledge
What is a reference field? A reference field is a field that represents a relationship between an entity and one or more other entities, which may belong to the same or different entity type. The three most commonly-used reference fields are: Content reference A reference to a content item. For example, you might want to connect recipes to the vendors who submitted them. You would set up a content reference field called Submitted by referencing Vendor content items on the Recipe content type. Taxonomy term reference A reference to a taxonomy term. For example, you might want to connect recipes to their ingredients. You would set up a taxonomy term reference field called Ingredients on the Recipe content type. This reference field will point to the vocabulary Ingredients. User reference A reference to a user account. For example, you might want to connect recipes with their chefs. You would set up a user reference field called Chefs on the Recipe content type.
Concept: Taxonomy Source file: structure-taxonomy.txt Overview of taxonomy and how it can be used to categorize content in a website. Taxonomyoverview Term (taxonomy)overview Term (taxonomy)free tagging Term (taxonomy)fixed list Vocabularyoverview
Prerequisite knowledge
What is Taxonomy? Taxonomy is used to classify website content. One common example of taxonomy is the tags used to classify or categorize posts in a blog website; the farmers market website could use an ingredients taxonomy to classify recipes. Individual taxonomy items are known as terms (the blog tags or recipe ingredients in these examples); and a set of terms is known as a vocabulary (the set of all blog post tags, or the set of all recipe ingredients in these examples). Technically, taxonomy terms are an entity type and the entity subtypes are the vocabularies. Like other entities, taxonomy terms can have fields attached; for instance, you could set up an image field to contain an icon for each term. An individual vocabulary can organize its terms in a hierarchy, or it could be flat. For example, blog tags normally have a flat structure, while a recipe ingredients vocabulary could be hierarchical (for example, tomatoes could be a sub-term of vegetables, and under tomatoes, you could have green and red tomatoes). Taxonomy terms are normally attached as reference fields to other content entities, which is how you can use them to classify content. When you set up a taxonomy reference field, you can let users enter terms in two ways: Free tagging New terms can be created right on the content editing form. Fixed list of terms The list of terms is curated and managed outside the content editing form, and users can only choose from the existing list when editing content. Taxonomy reference fields can be added to any entity, such as user accounts, custom blocks, or regular content items. If you use them to classify regular content items, your site will automatically be set up with taxonomy listing pages for each term; each of these pages lists all of the content items that are classified with that term. For example, if you created several recipes that all had carrots as an ingredient, you might see something like this on the Carrots taxonomy listing page: Taxonomy listing page - Carrots
Setting Up a Taxonomy Source file: structure-taxonomy-setup.txt How to create a taxonomy vocabulary and add it as a field to a content type. Taxonomycreating Vocabularycreating Metadatacreating Term listcreating
Goal Create an Ingredients vocabulary and add it to the Recipe content type as a field that can contain an unlimited number of values and that allows adding new terms to the vocabulary.
Prerequisite knowledge
Site prerequisites The Recipe content type must exist. See .
Steps In the Manage administrative menu, navigate to Structure > Taxonomy (admin/structure/taxonomy). You will see the Tags vocabulary that was created with the core Standard installation profile. taxonomy list page Click Add vocabulary, and fill in the values below. Field name Explanation Example value Name The name of the vocabulary Ingredients Description A brief note about the vocabulary (Leave blank) taxonomy add Ingredients Click Save. You will be taken to the Ingredients page, which shows a list of all the terms in this vocabulary. Ingredients taxonomy term listing Click Add term. Enter "Butter" in the Name field. Click Save. Add term page You will receive a confirmation about the term you created. Add more terms. For example, "Eggs" and "Milk". In the Manage administrative menu, navigate to Structure > Content Types (admin/structure/types). Click Manage fields for your Recipe content type. Click Add field, and enter values from the table below. Click Save and continue. Field name Explanation Value Add a new field Select the field type Reference > Taxonomy term Label The title to give the field Ingredients Add Ingredients field to Content type Recipe On the following configuration screen, enter the values from the table below. Click Save field settings. Field name Explanation Value Type of item to reference The type of entity that is referenced by the field Taxonomy term Allowed number of values The number of values a user can enter Unlimited Field storage settings for Ingredients field On the following configuration screen, enter the values from the table below. Click Save settings. Field name Explanation Value Help text Help shown to users creating content Enter ingredients that site visitors might want to search for Reference type > Reference method Select the method used to choose allowed values Default Reference type > Available Vocabularies Select the vocabulary to choose allowed values from Ingredients Reference type > Create referenced entities if they don’t already exist Whether new ingredient terms can be created from the content editing form Checked reference type field settings Click Save settings. You will be taken back to the Manage Fields page. A message will be displayed saying that the configuration for Ingredients is complete. Manage fields page for Recipe content type Attributions Written and edited by Bob Snodgrass, and Jojy Alphonso at Red Crackle.
Adding a Reference Field Source file: structure-adding-reference.txt How to add a reference field that connects two content types. Reference fieldadding Fieldfor adding references Entity reference fieldadding Content reference fieldadding User reference fieldadding Taxonomy term reference fieldadding
Goal Add a reference field so that recipes can be linked to the vendor that has submitted it.
Prerequisite knowledge
Site prerequisites The Recipe and Vendor content types must exist. See .
Steps In the Manage administrative menu, navigate to Structure > Content types (admin/structure/types). Then click Manage fields in the dropdown button for the Recipe content type. The Manage fields page appears. Click Add field. The Add field page appears. Fill in the fields as shown below. Click Save and continue. Field name Explanation Value Add a new field Option to specify the field type Reference > Content Label The title you want to give the field Submitted by Adding a reference field to a content type The page Submitted by appears which lets you set the allowed number of values. Fill in the fields as shown below. Click Save field settings. Field name Explanation Value Type of item to reference Option to select the type of referenced item Content Allowed number of values Specify the count of values associated with the field Limited, 1 Storage configuration of a reference field The page Submitted by settings for Recipe appears which allows you to configure the field. Fill in the fields as shown below. Click Save settings. Field name Explanation Value Label Title shown for this field on the page Submitted by Help text Brief text aiding the person creating content Choose the vendor that submitted this recipe Required field Whether a value has to be provided or not Checked Reference method Option to select reference method Default Content types Specify the content type Vendor Sort by Sorting field Title Sort direction Sorting order Ascending Settings for a reference field The Submitted by field has been added to the content type. Manage fields page for the Recipe content type Attributions Written and edited by Boris Doesborg, and Jojy Alphonso at Red Crackle.
Concept: Forms and Widgets Source file: structure-widgets.txt Overview of forms and widgets. Content editing formoverview Widgetoverview Fieldoverview Formoverview
Prerequisite knowledge
What are forms and widgets? The content management system software that your site is running allows administrators to edit content and configure settings online, using various web forms. In particular, content editing forms are used to edit your site’s content, and they are configurable by administrators; settings configuration forms are provided by modules and cannot themselves be configured. The data in your site’s content is stored in one or more fields that are attached to the content type and/or sub-type. When you configure the content editing form for each content sub-type, you can: Select a widget for each field. A widget defines the method used to enter the data for the field. For example, a taxonomy term can be chosen using an autocomplete field, a select list, or a tags-style field that lets editors add new tags automatically. Configure widget settings. For example, you can choose the size of a plain-text entry field. Hide one or more fields from the editing form. Reorder the fields. In principle, you can also have multiple content editing forms available for each content sub-type. This feature is rarely used, however; the only exception in common use is for the user profile fields: you can use different forms for user registration and user editing. For example, you might have a limited set of fields shown when users first register on the site, and more fields shown later on when they edit their profiles.
Changing Content Entry Forms Source file: structure-form-editing.txt How to edit a content entry form. Contentediting entry form
Goal Change the Recipe form to use a different widget to enter terms in the Ingredients field.
Prerequisite knowledge
Site prerequisites The Recipe content type must exist, and it must have an Ingredients taxonomy term reference field. See and .
Steps In the Manage administrative menu, navigate to Content > Add content > Recipe (node/add/recipe) to look at the content entry form that is set up by default. Notice how you have to enter ingredients one by one, instead of having a more compact format. In the Manage administrative menu, navigate to Structure > Content types (admin/structure/types). Then click Manage form display on the dropdown button for the Recipe content type. The Manage form display page appears. For the Ingredients field, select Autocomplete (Tags style) in the Widget column. Manage the Recipe form Click Save. In the Manage administrative menu, navigate to Content > Add content > Recipe (node/add/recipe) to verify the changed behavior of the content form. The Ingredients field is now a single text field that accepts multiple values. Add a recipe Create two Recipe content items (see ), such as recipes for "Green Salad" and "Fresh Carrots". Make sure all the fields have values, including images, ingredients, and submitted by (set this to one of the Vendor content items you created in ).
Expand your understanding Change the main site Contact form by navigating in the Manage administrative menu to Structure > Contact forms. For instance, you may want to hide the Send yourself a copy or Language fields. Attributions Written by Boris Doesborg.
Concept: View Modes and Formatters Source file: structure-view-modes.txt Overview of view modes and field formatters. View modeoverview Entity view modeoverview Formatteroverview Field formatteroverview
Prerequisite knowledge
What is a View mode? How an entity (such as content, a user or a comment) is displayed, depends on the context in which it is shown. This context is known as a view mode. Examples of view modes are: a full page of the content with all the field values a teaser of the content with a thumbnail image and a Read more link a full user profile with a zoomable portrait photo a user avatar with username and a link to the profile Every view mode can be configured through the administration pages. To see the configuration options for the view modes of the Recipe content type, navigate in the Manage administrative menu to Structure > Content types (admin/structure/types) and click Manage display from the dropdown button. In each view mode, all fields can be hidden or displayed, and if they are displayed, you can choose and configure the field formatter.
What is a field formatter? A field formatter is a setting for displaying the field values. For example, long text fields can be displayed trimmed or full-length, and taxonomy term reference fields can be displayed in plain text or linked to the taxonomy term page. Consult the Manage display page to see the field formatters for the fields of the Recipe content type.
Additional resources Drupal.org community documentation page "View modes" Attributions Adapted by Boris Doesborg from "View modes", copyright 2000-2016 by the individual contributors to the Drupal Community Documentation.
Changing Content Display Source file: structure-content-display.txt How to make content items more presentable. Content displaychanging Content displaymanaging Contentdisplaying
Goal Make the content items more readable, accessible, and visibly attractive by reordering the fields, hiding labels, and tuning the output of the fields.
Prerequisite knowledge
Site prerequisites The Vendor content type must exist, it must have Main Image and Vendor URL fields, and your site must have at least one Vendor content item. See , , and .
Steps Find and view a Vendor content item you created in . Notice that there are several things that could be done to improve how the page looks: The Main Image and Vendor URL fields should not have labels. The order of the fields should be changed so that the image comes first. The image should be smaller. To fix the first two problems, and update some additional settings, in the Manage administrative menu, navigate to Structure > Content types (admin/structure/types). Then click Manage display in the dropdown button for the Vendor content type. Manage display Under the Label column, select Hidden for Main image. Do the same for Vendor URL. Selecting main image title as hidden Click the gear for the Vendor URL field. Clear the Trim link text length setting. Links will no longer have a trim length. Check the Open link in new window checkbox. Now, when the link is clicked, it will open in a new browser window. Click Update. Link trim length Drag the cross arrows next to the field items to reorder as Main image, Body, Vendor URL, and Links. Changing order of fields Click Save. Find the Vendor content item from step 1 again, and verify that the updates have been made. Repeat similar steps to manage the display of the Recipe content type fields.
Expand your understanding Make the main image smaller. See .
Additional resources Drupal.org community documentation page "Specify how fields are displayed" Drupal.org community documentation page "Rearrange the order of fields" Drupal.org community documentation page "View modes" Attributions Written by Ann Greazel and Boris Doesborg.
Concept: Image Styles Source file: structure-image-styles.txt Overview of image styles and how they are used to display a single image in several variations. Image styleoverview Styleimage Image effectoverview Effectimage
Prerequisite knowledge
What are image styles? Image styles allow you to upload a single image but display it in several ways; each display variation, or image style, is the result of applying one or more effects to the original image. As an example, you might upload a high-resolution image with a 4:3 aspect ratio, and display it scaled down, square cropped, or black-and-white (or any combination of these effects). The core software provides a way to do this efficiently: Configure an image style with the desired effects on the Image styles page (admin/config/media/image-styles). The effects will be applied the first time a particular image is requested in that style. The resulting image is saved. The next time that same style is requested, the saved image is retrieved without the need to recalculate the effects. The core software provides several effects that you can use to define styles; others may be provided by contributed modules. Visit the Image styles page via the Manage administrative menu, navigate to Configuration > Media > Image styles (admin/config/media/image-styles) to see the image styles that are defined by default.
Additional resources Drupal.org community documentation page "Working with images in Drupal 7 and 8" Attributions Adapted and edited by Boris Doesborg, and Jojy Alphonso at Red Crackle, from "Working with images in Drupal 7 and 8", copyright 2000-2016 by the individual contributors to the Drupal Community Documentation
Setting Up an Image Style Source file: structure-image-style-create.txt How to add an image style to reformat an image. Image stylecreating Styleimage Effectimage Imageresizing
Goal Add an image style and use it to display images on Vendor pages.
Prerequisite knowledge
Site prerequisites Vendor and Recipe content types must exist. See . Main image fields must exist for both content types. See . Content items must exist for both content types. See , , and .
Steps In the Manage administrative menu, navigate to Configuration > Media > Image styles (admin/config/media/image-styles). Click Add image style. Enter the name Extra medium (300x200) Click Create new style. The page Edit style Extra medium (300x200) appears. In the Effect table, select Scale and crop. Click Add. Fill in the fields as shown below. Field name Value Width 300 Height 200 Click Add effect. The image style is saved with the chosen effects. Add an image style In the Manage administrative menu, navigate to Structure > Content types (admin/structure/types). Click Manage display in the Operations dropdown for the Vendor content type. The Manage display page (admin/structure/types/manage/vendor/display) appears. Ensure that the secondary tab Default is selected. Click the cogwheel next to Main image for the configuration options. Fill in the fields as shown below. Field name Value Image style Extra medium (300x200) Link image to Nothing Change field formatter settings of image field Click Update. Click Save. The new image style will be used while displaying Vendor content. Open a Vendor content item and verify that it now shows up with the scaled-down image. See for information on how to locate an existing content item. Repeat steps 8-15 for the Recipe content type.
Additional resources Drupal.org community documentation page "Working with images in Drupal 7 and 8" Attributions Adapted and edited by Boris Doesborg, and Jojy Alphonso at Red Crackle from "Working with images in Drupal 7 and 8", copyright 2000-2016 by the individual contributors to the Drupal Community Documentation.
Concept: Responsive Image Styles Source file: structure-image-responsive.txt Overview of responsive image styles, which allow you to provide different images for different screen sizes. Responsive image styleoverview Image styleresponsive Breakpointoverview HTML5 picture tagand responsive images
Prerequisite knowledge
What are responsive image styles? The core Responsive Image module provides responsive image styles. This allows you to have images in your website that are specifically sized for different screen sizes. This is useful, for example, to make your site load faster on mobile devices because image sizes are optimized for smaller screens. A responsive image style is a mapping between images styles and breakpoints. Breakpoints are the points where a responsive design needs to change in order to respond to different screen sizes. Responsive image styles can only be used if the breakpoints are defined in the theme. When a responsive image style is defined, it can be used in the display settings for Image fields. This allows the site to display responsive images using the HTML5 picture tag.
Additional resources Drupal.org community documentation page "Responsive web design" Drupal.org community documentation page "Responsive images in Drupal 8" Drupal.org community documentation page "Working with breakpoints in Drupal 8" Attributions Adapted by Boris Doesborg from Responsive images in Drupal 8, copyright 2000-2016 by the individual contributors to the Drupal Community Documentation.
Concept: Text Formats and Editors Source file: structure-text-formats.txt Overview of text formats, filters, editors, and cross-site scripting. Text formatoverview User-entered contentfiltering Securitytext format Securitycross-site scripting Cross-site scripting (XSS)preventing (((XSS (Cross-site scripting),preventing))
What are text formats and filters? Text formats change how HTML tags and other text are processed and displayed on your site. Text formats are composed of a series of filters, each of which transforms text. When users create content, a text format is associated with the content, and the full, original text is stored in the database. The content is then passed through the filters in the text format before it becomes output on the site. The core Filter module provides text format functionality, and the core Standard installation profile sets up Basic HTML, Restricted HTML, and Full HTML text formats. Each text format has an associated permission, so that you can allow only trusted users to use permissive text formats. This restricts untrusted users to text formats like Basic HTML, which filters out dangerous HTML tags.
What are the editors associated with text formats? Each text format can be associated with an editor, such as a visual WSYIWYG (What You See Is What You Get) HTML editor. The core Text Editor module provides the ability to associate editors with text formats, and to configure the editors (such as adding and removing buttons from their toolbars). The core CKEditor module provides the industry-standard editor known as CKEditor, so that it can be used to edit HTML content on your site.
What is cross-site scripting? Cross-site scripting (XSS) is a security vulnerability typically found in websites. In a site that is not well protected, malicious users can enter script into web pages that are viewed by other users (for example, in a comment or in the body of a page). A cross-site scripting vulnerability may be used by attackers to login as another user. It is important to configure the text formats of your website to prevent such abuse.
Additional resources Drupal.org community documentation page "Filter module: text formats that filter user input" Wikipedia page "Cross-site scripting" Attributions Written and edited by Boris Doesborg and Jennifer Hodgdon.
Configuring Text Formats and Editors Source file: structure-text-format-config.txt How to make a change to a text format and its editor configuration. Text formatconfiguring Configuringtext format Editorconfiguring Ckeditor text editordefault assignment to text format WYSIWYG (What You See Is What You Get)configuring editor What You See Is What You Get (WYSIWYG)configuring editor ModuleFilter ModuleEditor ModuleCKEditor Filter moduleconfiguring Editor moduleconfiguring CKEditor moduleconfiguring
Goal Add a horizontal rule tag to the Basic HTML text format, and a corresponding button to its editor configuration.
Prerequisite knowledge
Site prerequisites The core Filter, Editor, and CKEditor modules must be installed. They are installed on your site when you install with the core Standard installation profile. The Basic HTML text format must exist. This is created on your site when you install with the core Standard installation profile.
Steps In the Manage administrative menu, navigate to Configuration > Content authoring > Text formats and editors (admin/config/content/formats). The Text formats and editors page appears. Click Configure for the Basic HTML text format. The Basic HTML page appears. Note that Ckeditor is selected in the Text editor field. This allows you to configure the editor’s toolbar. Drag the horizontal rule button from Available buttons to Tools in Active toolbar. You may need to click the Show group names link to see the Tools group name. Configuring the editor Note that you can change the Filter processing order. In the field Allowed HTML tags, add <hr> to what is already present. Configuring the HTML tags Click Save configuration. You will be taken back to the Text formats and editors page. A message will be displayed saying that the text format has been updated. Confirmation message for text format configuration Attributions Written by Boris Doesborg.
Managing User Accounts Source file: guide.txt Overview of user account concepts and details of common user account tasks.
Concept: Users, Roles, and Permissions Source file: user-concept.txt Overview of user accounts, permissions, and roles. Useroverview Roleoverview User roleoverview Permissionoverview Anonymous useroverview Authenticated useroverview Administrative user accountoverview
What are Users? Anyone who visits your website is a user, including you. There are three groups of users: Users who are not logged in, or anonymous users Users who are logged in, or authenticated users The administrative user account that was automatically created when you installed your site, or User 1. See .
What are Permissions? The ability to do actions on your site (including viewing content, editing content, and changing configuration) is governed by permissions. Each permission has a name (such as View published content) and covers one action or a small subset of actions. A user must be granted a permission in order to do the corresponding action on the site; permissions are defined by the modules that provide the actions.
What are Roles? Rather than assigning individual permissions directly to each user, permissions are grouped into roles. You can define one or more roles on your site, and then grant permissions to each role. The permissions granted to authenticated and anonymous users are contained in the Authenticated user and Anonymous user roles, and depending on the installation profile you used when you installed your site, there may also be an Administrator role that is automatically assigned all permissions on your site. Each user account on your site is automatically given the Authenticated user role, and may optionally be assigned one or more additional roles. When you assign a role to a user account, the user will have all the permissions of the role when logged in. It is a good practice to make several roles on your site. In the farmers market site example, you might want the following roles: A Vendor role that allows vendors to edit their own vendor listing page A Content editor role for editing the general farmers market pages A User manager role for managing the vendor accounts The Administrator role that was installed with your site, for expert users to manage the site configuration
Additional resources Drupal.org community documentation page "Users, roles and permissions" Drupal.org community documentation page "Managing Users" Drupal.org community documentation page "User Roles" Attributions Adapted by Mark LaCroix, Boris Doesborg, and Jennifer Hodgdon from "User Roles", copyright 2000-2016 by the individual contributors to the Drupal Community Documentation.
Concept: The User 1 Account Source file: user-admin-account.txt Overview of the User 1 account, also known as the root account or administrative account. Userroot Useruser one Useradministrative Securityuser one account
Prerequisite knowledge
What is the user 1 account? During the installation of your site, you created the first user account. Each user account internally has a numeric user ID, and since the ID of this user is one, it is commonly referred to as the user 1 account. This user account is special, because independent of what roles it is assigned, someone logged in as user 1 has permission to do all actions on the site, including viewing and editing all content, editing any user account, changing site configuration, installing and uninstalling modules, and running the update script. Because of this level of permission, some people refer to this account as the root user, similar to the "root" user account that has full administrative permissions in Linux and other operating systems. It is usually better to make separate accounts for each administrative user, giving them the Administrator role, rather than having all administrative users log in using the user 1 account. There are several reasons for this: Some actions and updates on the site are logged, and if everyone uses the same account, it is difficult to know who did them if you have questions. The Administrator role permissions can be modified to be safer than the full permissions of the user 1 account, so that people do not inadvertently change site features that shouldn’t be changed. People’s responsibilities on a site may change over time. With ordinary user accounts, this can be mirrored in permissions by assigning or unassigning roles to their user accounts. If they are all using the user 1 account, this is more difficult. On some sites, the author of content or comments is displayed or tracked, and if everyone uses the same account to create content, it is difficult to know who created the content. It is not possible to delete the user 1 account from the administrative user interface. It would be possible to do with a database query, but it could cause problems in your site and is not advisable.
Additional resources Drupal.org community documentation page "Accounts and roles" Attributions Written and edited by Mark LaCroix and Jennifer Hodgdon.
Creating a Role Source file: user-new-role.txt How to create a new role. User rolecreating Rolecreating Roleanonymous user Roleauthenticated user Roleadministrator
Goal Create a Vendor role to allow some - but not all - users to perform specific tasks.
Prerequisite knowledge
Steps In the Manage administrative menu, navigate to People > Roles (admin/people/roles). You will find default roles Anonymous user, Authenticated user, and Administrator already present. Roles page Click Add Role to add a custom role. Type Vendor in the Role name field. Click Save. adding vendor as a role You will see the message "Role Vendor has been added." displayed at the top of the page. vendor role added success message
Expand your understanding
Additional resources Drupal.org community documentation page "User Roles" Attributions Adapted and edited by Jack Probst, Boris Doesborg, and Joe Shindelar from "User Roles", copyright 2000-2016 by the individual contributors to the Drupal Community Documentation
Creating a User Account Source file: user-new-user.txt How to create a user account. Usercreating account
Goal Create Vendor user accounts for Sweet Honey and Happy Farm vendors.
Prerequisite knowledge
Site prerequisites The Vendor role must exist on your site. See .
Steps In the Manage administrative menu, navigate to People (admin/people). Click Add user. Form for creating a new user account Fill in the form fields. See the table below. Field name Explanation Example value Email address A valid email address for the vendor. All emails from the system will be sent to this address. The email address is not made public. honey@example.com Username A username for the vendor that they will use to sign in or author content items. Spaces are allowed; punctuation is not allowed except for periods, hyphens, apostrophes, and underscores. Sweet Honey Password A password the vendor will use to sign in to the site. You can see how safe the password is on the Password strength gauge. You also get tips on how to make it safer. (Make a secure password) Confirm password Type the same password to avoid any typing mistakes. (Repeat password) Status Set the status of the user account. Blocked users will not be able to sign in. Active Roles Set the role of the user account. Vendor Notify user of new account Whether or not to send a notification to the vendor’s email address. Checked Picture Click Browse and select a picture to upload. Pay attention to size restrictions. Photo of the vendor Contact settings Enable or disable the display of a contact form for the account. Checked Click Create new account. You will get a notification about the user account creation. New user account has been created Create a second Vendor account for Happy Farm by following the steps above.
Expand your understanding Create a user account for yourself. Attributions Written by Diána Lakatos at Pronovix.
Assigning Permissions to a Role Source file: user-permissions.txt How to assign a permission to a role. Permissionchanging Permissiongranting Permissiondenying Rolechanging permission Securityassigning permission
Goal Change the permissions for the Vendor role so that users can create, edit, and delete Recipe and Vendor content, format the content, and contact each other.
Prerequisite knowledge
Site prerequisites The Vendor role must exist on your site. See .
Steps In the Manage administrative menu, navigate to People > Roles (admin/people/roles). The Roles page appears. Click Edit permissions in the dropdown for the Vendor role. The Edit role page appears where you can see all the available actions for the website such as, for example, Post comments or Use advanced search. The available permissions depend on the modules that are installed in the site. Note: Some permissions may have security implications. Be cautious while assigning permissions to roles. Check the boxes for the following permissions, listed by module: Module Permission Contact Use users' personal contact forms Filter Use the Restricted HTML text format Node Recipe: Create new content Node Recipe: Edit own content Node Recipe: Delete own content Node Vendor: Edit own content Quick Edit Access in-place editing Granting users with the Vendor role the rights to create, delete and edit Recipes Click Save permissions. You will get a message saying your changes have been saved. Confirmation message after updating permissions
Expand your understanding Log in as one of the new users you created in . Verify whether you have the correct permissions.
Additional resources Drupal.org community documentation page "Managing Users" Attributions Adapted and edited by Boris Doesborg, Brian Emery, and Jojy Alphonso at Red Crackle, from "User Roles", copyright 2000-2016 by the individual contributors to the Drupal Community Documentation.
Changing a User’s Roles Source file: user-roles.txt How to change or add roles for a user. User rolechanging Rolechanging Permissionchanging role
Goal Change or add roles to a given user, either by editing a single-user or by applying a bulk operation.
Prerequisite knowledge
Site prerequisites The user account that you want to update, and the role you want it to have, must already exist. See , , and .
Steps
Updating the roles using single-user editing method In the Manage administrative menu, navigate to People (admin/people). Locate the user 1 account (named "admin") to assign it the Administrator role. If it is not immediately visible, use the Name or email contains filter, or other filters, to narrow down the list. Click Edit to update the user account. People page On the Edit page, scroll down to Roles section. Check the Administrator role for the user account. Roles section of user edit page Click Save to update the user account. You should be returned to the People page and see a message saying that the changes have been saved. Confirmation message
Updating the roles using bulk editing method If the users Happy Farm and Sweet Honey did not already have the Vendor role, here is how you would add it. In the Manage administrative menu, navigate to People (admin/people). Locate Vendor user accounts Sweet Honey and Happy Farm and check them. If they are not immediately visible, use the Name or email contains filter, or other filters, to narrow down the list. Select Add the Vendor role to the selected users from the With selection select list. People page with bulk operation set up Click Apply. You should see a message indicating that the desired changes were made. Confirmation message Attributions Written by Chris Dart and Jennifer Hodgdon
Assigning Authors to Content Source file: user-content.txt How to assign authorship of content items to a user account. Authorassigning Contentassigning author
Goal Assign Vendor content items Happy Farm and Sweet Honey to the corresponding Vendor user accounts, so they can edit their own Vendor profiles on the site.
Prerequisite knowledge
Site prerequisites The Vendor content type must exist, and your site must have at least two Vendor content items. See , , and . User accounts for at least two vendors must exist. See .
Steps In the Manage administrative menu, navigate to Content (admin/content). Find Vendor content item Happy Farm in the list. If it is not immediately visible, you can filter the list by Published status, Type (Vendor), Title or Language. Click Edit for the Vendor content item you would like to assign an author to. Locate the information block and click Authoring information. Assigning an author to the Vendor content item Start typing the Vendor’s user name Happy Farm in the Authored by field. The field lists matching user names. Select the Vendor’s user name from the list. Click Save and keep published. You will get a notification that the Vendor content item has been updated. Vendor content item has been updated Follow these steps again to assign Vendor content item Sweet Honey to the Vendor user account Sweet Honey. Attributions Written by Diána Lakatos at Pronovix.
Blocks Source file: guide.txt Overview of block concepts and details of common block tasks.
Concept: Blocks Source file: block-concept.txt Overview of blocks. Blockoverview
What is a block? Blocks are individual pieces of your site’s web page layout. They are placed inside the regions (see ) of your theme, and can be created, removed, and rearranged in the Block layout (admin/structure/block) administration page. Examples of blocks include the Who’s online listing, the main navigation menu, and the breadcrumb trail. The main page content is also a block. Some modules make new blocks available for placement on your site. For example, when the core Search module is installed and configured, it provides a block that contains a search form. You may also create and place your own custom blocks. Each block has its own configuration settings, which allow you to select which pages of your site will display the block. It is even possible to place multiple copies of a block, each with its own separate configuration and visibility rules.
Creating A Custom Block Source file: block-create-custom.txt How to create a custom block. Blockcreating Custom blockcreating
Goal Create a block showing the hours and location of the farmers market.
Prerequisite knowledge
Steps In the Manage administrative menu, navigate to Structure > Block layout > Custom block library (admin/structure/block/block-content). Click Add custom block. The Add custom block page appears. Fill in the fields as shown below. Field name Value Block description Hours and location block Body Open: Sundays, 9 AM to 2 PM, April to September<br />Location: Parking lot of Trust Bank, 1st & Union, downtown Anytown. Add a custom block Click Save. A message appears indicating the block has been saved.
Expand your understanding Edit the content of your custom block. In the Manage administrative menu, navigate to Structure > Block layout > Custom block library (admin/structure/block/block-content). Find your block in the list and click Edit to make changes. Place the block you created in the sidebar. See for details.
Additional resources Drupal.org community documentation page "Working with blocks (content in regions)" Attributions Adapted by Jacob Redding and Boris Doesborg from Working with blocks (content in regions, copyright 2000-2016 by the individual contributors to the Drupal Community Documentation.
Placing a Block in a Region Source file: block-place.txt How to place a block in a region. Blockplacing in a region Regionplacing a block in
Goal Place the Opening hours and location block in the website’s sidebar.
Prerequisite knowledge
Site prerequisites The core Bartik theme must be installed and set as default. See . The Opening hours and location block must exist. See .
Steps In the Manage administrative menu, navigate to Structure > Block layout (admin/structure/block). The Block layout page appears, listing the theme’s regions. Ensure that in the secondary tab the core Bartik theme is selected. Block placement is defined per theme. Locate the region Sidebar second in the list and click Place block next to it. The Place block window appears, listing all the blocks. Locate the block Opening hours and location and click Place block next to it. The Configure block window appears. Fill in the fields as shown below. Field name Value Title Hours and location Display title Checked Region Sidebar second You can also hide or display the block on specific pages. In the case of the Farmer’s market website you do not set any of these configuration options because you want to show the block everywhere. Block configuration page Click Save block. The Block layout page appears. You can drag blocks to change the order in which they will appear. Verify that the Opening hours and location block is listed in the Sidebar second region, and click Save blocks. The block has been placed on the sidebar of all pages that use the core Bartik theme. Page with a block placed on the Sidebar second region
Expand your understanding Remove the Powered by Drupal block from the Footer region by setting the region to - None -. Remove the Tools block from the Sidebar first region by setting the region to - None -. This block is only visible to logged-in users. Place the User login block in a region. Attributions Written and edited by Boris Doesborg and Jennifer Hodgdon.
Creating Listings with Views Source file: guide.txt Overview of view concepts and details of common view tasks.
Concept: Uses of Views Source file: views-concept.txt Overview of views and the data that can be displayed or output by them. Viewoverview Views moduleoverview
Prerequisite knowledge
What is a view? A view is a listing of content on a website. The core Views module handles the display of views, and the core Views UI module allows you to create and edit them in the administrative interface. When you define views, you are interested in taking data from your website and displaying it to the user.
What types of data can be displayed using views? You can create views to output practically any content entity that is stored in the system. For example, you can create the following lists for the farmers market site: Lists of vendors Lists of recipes Lists of the most recent content on the site Lists of users on the site
What are the ways data can be output using views? A listing created by a view can be in any of the following forms: Table with sortable fields Grid layouts Teasers or pictures that link to articles Blocks JSON output RSS feeds Calendars On-screen slideshows
Concept: The Parts of a View Source file: views-parts.txt Overview of the administrative parts of a view. Viewparts of Display part of viewoverview Format part of viewoverview Fields part of viewoverview Filter criteria part of viewoverview Sort criteria part of viewoverview Contextual filters part of viewoverview Relationships part of viewoverview Viewdisplay part Viewformat part Viewfields part Viewfilter criteria part Viewsort criteria part Viewcontextual filters part Viewrelationships part
Prerequisite knowledge
What are the parts of a view? When you are editing a view in the administrative interface, you will see the following parts (or sections), which allow you to specify what data to output, in what order, and in what format: Display Each view can have one or more displays, each of which produces one type of output. Options for display types include: Page Makes output at a particular URL, for the main page content at that URL. Block Makes output in a block, which can be placed on pages. Feed Makes an RSS or another type of feed. Attachment Makes output that you can attach to another display. Format Depending on the display type, you can choose to output your data in a table, grid, HTML list, or another format. Some formats also give you a second choice that lets you output either rendered entities or fields; other formats do not give you this choice (for example, if you use a table format, you must always use fields). Fields Depending on the format choice, you may be able to choose which content fields are output. For example, if you were making a view of recipe content items, in a block display you might show only the recipe names, while in a full page display you might also show an image field because you have more space. Filter criteria Filters limit the data to be output, based on criteria such as whether the content has been published or not, the type of content, or a field value. For instance, to make a view of recipe content items, you would need to filter to the Recipe content type, and to published recipes. Filters can also be exposed, which means that users will have a form where they can choose their own filter values. You might use this on a Recipe page to let users filter for recipes with certain ingredients. Sort criteria Defines the order to present the output, which can be based on any content field. Contextual filters Contextual filters are like regular filters, except that the values come from the context of the view display, such as the full URL of the page being displayed, the current date or time, or some other value that can be detected by the view calculation. Relationships Relationships allow you to expand what is displayed in your view, by relating the base content being displayed to other content entities. Relationships are created using fields on the base content that relate it to the other content; one example is that all regular content items have an author field, which references the user account of the person who authored the content. Once you have created a relationship, you can display fields from the referenced entity in the view.
Creating a Content List View Source file: views-create.txt How to create a content list view. Viewcreating Content list viewcreating Views modulecreating a view Listing contentusing Views module to Image modulecreating a view ModuleViews ModuleImage
Goal Create a page listing vendors that will be automatically updated whenever a vendor is added, deleted, or updated on the site.
Prerequisite knowledge
Site prerequisites The core Views and Views UI modules must be installed. These are installed for you when you install with the core Standard installation profile. The Vendor content type must exist, with URL and Main image fields. Your site must have a couple of Vendor content items. See , , and . The Medium (220x220) image style must be defined. This is created on your site when you install the core Image module (installed with the core Standard installation profile) but can be recreated if deleted. See .
Steps In the Manage administrative menu, navigate to Structure > Views > Add view (admin/structure/views/add). The Add view wizard appears. Fill in the fields as shown below. Field name Explanation Example value View name Name of the view that will be visible in the administration pages Vendors Show Type of information listed in the view Content Of Type Specify content type Vendor Sorted by List order Title Create a page Create a page that displays the view Checked Page title Title show above the view Vendors Path Address of the page vendors Display format Type of list Table Items to display Number of items visible on the page 10 Use a pager Split up the list in several pages if there are more items Checked Create a menu link Add the view page to the menu Checked Menu Menu in which to add the link Main navigation Link text Label of the link in the menu Vendors Add new view wizard Click Save and edit. The view configuration page appears. Click Add from the dropdown button in the Fields section. The Add fields pop-up appears. Enter the word "image" in the search field. Check Main image in the table. Click Apply. The Configure field: Content: Main Image pop-up appears. Fill in the fields as shown below. Field name Explanation Example value Create a label Add a label before the field value Unchecked Image style The format of the image Medium (220x220) Link image to Add a link to the content item Content Click Apply. The view configuration page appears. Click Add from the dropdown button in the Fields section. The Add fields pop-up appears. Enter the word "body" in the search field. Select Body in the table. Click Apply. The Configure field: Content: Body pop-up appears. Fill in the fields as shown below. Field name Explanation Example value Create a label Add a label before the field value Unchecked Formatter The presentation of the field value Summary or trimmed Trimmed limit: The number of maximum characters shown 120 Click Apply. The view configuration page appears. Click Content: Title (Title) in the Fields list. The Configure field: Content: Title pop-up appears. Uncheck Create a label. This will remove the label that was created by the wizard. Click Apply. The view configuration page appears. Click Rearrange from the dropdown button in the Fields section. The Rearrange fields pop-up appears. Drag the fields into the right order: Image, Title. Body. Click Apply. The view configuration page appears. Optionally, click Update preview for a preview. Click Save. Vendors view configuration page Navigate to the homepage and click Vendors from the main navigation to see the result. Vendors view output
Expand your understanding The link to the view in the main navigation will probably not be in the right place. Change the order of the menu items in the main navigation. See . Attributions Written/edited by Boris Doesborg and Jennifer Hodgdon.
Duplicating a View Source file: views-duplicate.txt How to create a new page by duplicating a view. Viewduplicating Views moduleduplicating a view ModuleViews
Goal Create a page listing recipes by duplicating the existing Vendors view. Modify the page so that the recipes are displayed in a grid and can by filtered by ingredients.
Prerequisite knowledge
Site prerequisites The Vendor and Recipe content types must exist; both must have Main image fields, and the Recipe content type must have an Ingredients field. Your site must also have a couple of Recipe content items. See , , , , and . The Vendors view must exist. See .
Steps In the Manage administrative menu, navigate to Structure > Views (admin/structure/views). Find the view "Vendors" and click Duplicate in its dropdown button. Duplicate existing view Name the duplicate "Recipes" and click Duplicate. The view configuration page appears. Change the title of the view page to "Recipes" by clicking Vendors in the Title section. The Page: The title of this view pop-up appears. Type in "Recipes". Click Apply. Change view title Change from a table to a grid format by clicking Table in the Format section. The Page: How should this view be styled pop-up appears. Check Grid and click Apply. The Page: Style options pop-up appears. Retain the default values and click Apply. Retain only the title and image fields for the Recipes view by clicking Content: Body in the Fields section. Click Remove in the pop-up that appears. Change the content type filter to use the Recipe content type by clicking Content: Type (=Vendor) in the Filter criteria section. In the Configure filter criterion: Content: Type pop-up, check Recipe and uncheck Vendor. Click Apply. Add a further filter that is exposed to visitors by clicking Add in the Filter criteria section. Search for "ingredients" and check "Ingredients (field_ingredients)". Click Add and configure filter criteria. The appearing pop-up offers extra settings on vocabulary and selection type. Click Apply and continue. The next pop-up allows you to expose this filter to visitors. Fill in the fields as shown below. Field name Explanation Example value Expose this filter to visitors, to allow them to change it Allow visitors to filter and search Checked Required field Whether a value has to be provided or not Unchecked Label Label shown for this filter on the view page Find recipes using… Expose filter Change the Path label field to "Recipes" by clicking "/vendors" in the Page settings section. In the pop-up that appears, enter the path "recipes" and click Apply. Note that when editing a view, you enter paths without the leading "/", unlike on other administrative pages (such as when providing a path to a content item page). Change the menu link title by clicking "Normal: Vendors" in the Page settings section. In the pop-up that appears, change the title to "Recipes" and click Apply. In order to use Ajax (see Ajax entry in the Glossary) to make filtering and paging faster for users, click Advanced to expand the section for more options. In the Other section, change Use Ajax: No to "Yes" by clicking No and checking Use Ajax in the pop-up that appears. Click Apply. Click Save to save the view. Go back to the home page and click Recipes in the navigation to view the new Recipes page. Recipes view
Expand your understanding The link to the view in the main navigation will probably not be in the right place. Change the order of the menu items in the main navigation. See .
Adding a Block Display to a View Source file: views-block.txt How to add a block display to a view. Viewadding block display to Blockcreating from a view Views moduleadding to a view ModuleViews
Goal Add a block display to the Recipes view to display the most recent recipes in a sidebar, and change its configuration without changing the existing Recipes page view.
Prerequisite knowledge
Site prerequisites The Recipe content type must exist, it must have a Main image field, and your site must have a couple of Recipe content items. See , , , and . The Thumbnail (100x100) image style must be defined. This is created on your site when you install the core Image module (installed with the core Standard installation profile) but can be recreated if deleted. See . The Recipes view must exist. See and .
Steps In the Manage administrative menu, navigate to Structure > Views (admin/structure/views). Find the view "Recipes" and click Edit from its dropdown button. Alternatively, navigate to the Recipes page in the main site navigation, and click the Edit view contextual link in the main area of the page. See for information about contextual links. Create a new block display by clicking Add in the Displays section. Click Block from the dropdown button. The new display is created, and the focus is automatically switched to its configuration. Add block display Change the title of this display by clicking Block next to Display name. The Page: The name and the description of this display pop-up appears. Change the Administrative name to "Recent recipes". Click Apply. Change the title of the view by clicking Title: Recipes in the Title section. In the pop-up that appears, select For This block (override) from the For dropdown button. Change the title to "New Recipes" and click Apply (this display). Title only for this block Change the view’s style by clicking Format: Grid in the Format section. In the pop-up that appears, select For This block (override) from the For dropdown button. Select Unformatted list and Click Apply (this display). You can further configure the style options in the next pop-up that appears. Configure the image field by clicking Content: Main image in the Fields section. In the pop-up that appears, select For This block (override) from the For dropdown button. Select Image style Thumbnail (100x100). Click Apply (this display). Image to thumbnail Remove ingredients as a filter by clicking Content: Ingredients (exposed) in the Filter criteria section. In the pop-up that appears, select For This block (override) from the For dropdown button. Click Remove at the bottom. Configure how you want the content to be sorted in the view by clicking Add in the Sort criteria section. In the pop-up that appears, select For This block (override) from the For dropdown button. Check the field Authored on (from Content category), and then Add and configure sort criteria. In the appearing configuration pop-up, select Sort descending to have the most recent recipes appear first. Click Apply. Specify the number of items to be displayed by clicking Use pager: Mini in the Pager section. In the pop-up that appears, select For This block (override) from the For dropdown button. Under Pager, select Display a specified number of items. Click Apply (this display). In the Page: Pager options pop-up, provide "5" as the value for Items to display. Click Save. You will either see the view editing page again, or the Recipes page, depending on what you did in step 1. You should also see a message saying that the view has been saved. Summary page after configuration Place the "Recipes: Recent Recipes" block in the Sidebar second region. See . Navigate to the site’s home page to see the block. New Recipes block on homepage Attributions Written and edited by Laura Vass at Pronovix, Jennifer Hodgdon, and Jojy Alphonso at Red Crackle.
Making Your Site Multilingual Source file: guide.txt Overview of multilingual site concepts and details of tasks needed to make a site multilingual.
Concept: User Interface, Configuration, and Content translation Source file: language-concept.txt Overview of translation on a site. User interfacetranslating Configurationtranslating Contenttranslating Translatingoverview ModuleLanguage ModuleContent Translation ModuleConfiguration Translation ModuleInterface Translation Content Translation moduleoverview Configuration Translation moduleoverview Interface Translation moduleoverview Language moduleoverview
Prerequisite knowledge
What can be translated on your site? The base language for the software that your site runs (core software, modules, and theme) is English. However, you can create either a site that displays in a different language or a multi-lingual site; if you do so, all relevant text, images, and file attachments should be shown in the appropriate language for each site visitor. You need to have the core Language module installed in order to use a language other than English on the site. There are three types of information that you can translate, each with its own method for translating: User interface text Built-in text present in the core software, modules, and themes. This can be translated from the base English language of the software into the language(s) of your site. Typically, rather than needing to translate this text yourself, you can download translations. You need to have the core Interface Translation module installed in order to translate this text. Configuration text Text whose structure and initial values are defined by the core software, modules, and theme, but that you can edit. Examples include the labels for fields in your content types, header text in views, your site name, and the content of automatic email messages that your site sends out. After creating configuration text in the default language of your site, you can translate it into other languages. You need to have the core Configuration Translation module installed in order to translate this text. Content text and files If your site is multilingual, you can configure the content fields on your site to be translatable. After creating content in one language, you can translate it into other languages. Fields can contain textual information or uploaded files, and for each field on each content type, you can configure it to be translatable or non-translatable. You need to have the core Content Translation module installed in order to translate this text.
Adding a Language Source file: language-add.txt How to add a language, install the necessary modules, and turn on the Language switcher block. Languageadding Multilingual modulesinstalling Multilingual modulesenabling Language moduleinstalling Content Translation moduleinstalling Configuration Translation moduleinstalling Interface Translation moduleinstalling ModuleLanguage ModuleContent Translation ModuleConfiguration Translation ModuleInterface Translation
Goal Add one or more languages to your site and define which one is used by default.
Prerequisite knowledge
Steps Install the four core multilingual modules (Language, Interface Translation, Content Translation, and Configuration Translation), by following the steps in . In the Manage administrative menu, navigate to Configuration > Regional and Language > Languages (admin/config/regional/language). Click Add language. Select Spanish (or your preferred language) from the Language name select list. Click Save configuration. After waiting for translations to finish downloading, you will be returned to the Languages page, with a confirmation message and the new language shown. List of available languages in the website Follow the steps in to place the Language switcher block in the Sidebar second region. This will enable site visitors to switch between languages, once the site has been translated.
Expand your understanding
Additional resources Drupal.org page "Resource Guide: Configuring a Multilingual Site" Attributions Written and edited by Leila Tite, Jennifer Hodgdon, and Boris Doesborg.
Configuring Content Translation Source file: language-content-config.txt How to configure content items to make them translatable. Contenttranslation Configuringcontent translation
Goal Make Custom block, Custom menu link, and Content entity types translatable. Select specific subtypes and set which fields of these can be translated.
Prerequisite knowledge
Site prerequisites The core Content Translation module must be installed, and your site must have at least two languages. See .
Steps In the Manage administrative menu, navigate to Configuration > Regional and Language > Content Language and Translation (admin/config/regional/content-language). Under Custom language settings, check Content, Custom block and Custom menu link to make these entity types translatable. Custom language settings checklist Configuration options appear for Content, Custom block and Custom menu link. Choose the subtypes you want to translate for each entity type. Check Basic page for Content, Basic block for Custom block and Custom menu link for Custom menu link. Verify the settings for the entity types as shown below: Field name Explanation Example value Default language The default language for the entity subtype Site’s default language (English) Show language selector on create and edit pages Whether or not the language selector should be shown while editing and creating content Checked Default language and translatability for content types Choose the fields that should be translatable for Basic page as shown in the table below. If a field is not translation-dependent, leave it unchecked. Enabling translation for fields that are numbers or dates has use for accountability or implementing workflows. Field name Explanation Example value Title The title of the content Checked Authored by The author Unchecked Publishing status Whether the content has been published or not Checked Authored on Date of publishing Unchecked Changed Date of last update Unchecked Promoted to front page Whether the content will be included in some content views Unchecked Sticky at top of lists Whether the content will be displayed first in some content views Unchecked URL alias Nicer URL for the content Checked Body The main content of the page Checked Translatable content entity subtypes' fields checklist Similarly, check the appropriate boxes for translatable fields belonging to Basic block and Custom menu link. Click Save configuration.
Expand your understanding
Additional resources Blog post "Multilingual Drupal 8 tidbits, part 5" Blog post "Multilingual Drupal 8 tidbits, part 17" Attributions Written and edited by Laura Vass at Pronovix, Jojy Alphonso at Red Crackle, and Jennifer Hodgdon.
Translating Content Source file: language-content-translate.txt How to translate a page into another language. Contenttranslating Translatingcontent
Goal Translate the home page to Spanish.
Prerequisite knowledge
Site prerequisites The Home content item must exist. See . The core Content Translation module must be installed, and your site must have at least two languages. See . The Basic page content type must be configured to be translatable. See .
Steps In the Manage administrative menu, navigate to Content (admin/content). Locate the home page. You can search for it by entering "Home" in the title field. Select Translate from the dropdown button in the row of the Home content item. The page Translations of Home appears. Click Add in the row Spanish. Adding a content translation Note that the user interface has switched to Spanish. To switch it back to English, remove the first instance of es in the browser’s URL. For example, if your URL looks like example.com/es/node/5/translations/add/en/es, remove the es that comes immediately after example.com. Fill in the fields as shown below. You will have to click and expand URL path settings on the right to provide the value for URL alias. Field name Explanation Value Title Translated title of the page Página principal Body Translated body of the page Bienvenido al mercado de la ciudad - ¡el mercado de agricultores de tu barrio! Horario: Domingos de 9:00 a 14:00. Desde Abril a Septiembre Lugar: parking del Banco Trust número 1. En el centro de la ciudad URL path settings > URL alias Translated address of the webpage pagina-principal Click Save and keep published (this translation). Go to your site’s home page to view the newly translated page.
Expand your understanding Follow the steps above to translate more content on your site. Attributions Written by Boris Doesborg.
Translating Configuration Source file: language-config-translate.txt How to translate field labels in a view, and other configuration. Configurationtranslating Viewtranslating Labeltranslating Translatingconfiguration Translatingview Translatinglabel
Goal Translate the labels on the Recipes view page into Spanish.
Prerequisite knowledge
Site prerequisites The core Configuration Translation module must be installed, and your site must have at least two languages. See . The Recipes view must exist. See and .
Steps In the Manage administrative menu, navigate to Structure > Views (admin/structure/views). Locate the Recipes view and click Translate from the dropdown button. Click Add in the row Spanish. The page Add Spanish translation for Recipes view appears. Find Displays > Master display settings > Recipes default display options. Translate the Display title from "Recipes" to "Recetas". Find Displays > Master display settings > Recipes default display options > Exposed form > Reset options. Translate Submit button text (Apply) to "Applicar". The other buttons and labels in this section do not appear on the Recipes page or block, and do not need to be translated. Translate the Recipes view Find Displays > Master display settings > Recipes default display options > Filters > (Empty) taxonomy term ID > Find recipes using… Expose. In the Label field, enter "Encontrar rectas usando…". Click Save translation. Navigate to the Recipes page and switch to Spanish using the Language switcher block. Verify that the labels have been translated.
Expand your understanding Translate the block display title in the Recent recipes display settings section of the Recipes view. Translate the page title in the Vendors view. Translate other configuration, such as the site name and the contact form: To translate the site name, navigate in the Manage administrative menu to Configuration > System > Site information > Translate system information (admin/config/system/site-information/translate). To translate the contact form, navigate in the Manage administrative menu to Structure > Contact forms (admin/structure/contact). Click Translate from the dropdown button in the Website feedback row. Translate content. See . Attributions Written and edited by Boris Doesborg and Jennifer Hodgdon.
Extending and Customizing Your Site Source file: guide.txt Overview of site customization and development. Tasks on downloading modules and themes are covered.
Finding Modules Source file: extend-module-find.txt How to search and evaluate modules on Drupal.org. Modulefinding Moduleevaluating Contributed modulefinding Contributed moduleevaluating Drupal.org websitefinding and evaluating modules on
Goal Find and evaluate modules on Drupal.org.
Prerequisite knowledge
Steps Go to Drupal.org, and navigate to Download & Extend > Modules (https://www.drupal.org/project/project_module). Filter your search using the categories on the module search page. Fill in the fields as shown below. Field name Explanation Example value Maintenance status How actively should the module be maintained? Actively maintained Development status What kind of development should the module undergo? Any Module categories The module’s topic area. Administration Core compatibility The version of the core software the module is compatible with. 8.x Status Project status: Sandbox projects are experimental projects. Full projects have already gone through an approval process, but they can still be in development. Full projects Search Modules Search for Admin Toolbar, a module that will be covered in detail later. Alternatively, you can also leave the field blank if you are not sure which module to search for. Admin Toolbar Sort by Order your search results by criteria like Most installed (popular modules that many sites use) or Last release (date of latest version released). Most installed Filters on the module search page on Drupal.org Click Search. Search results will appear. Module search results page on Drupal.org To further evaluate a module, click its title in the list of search results to visit its project page. Some aspects to pay attention to when evaluating modules: Project description: The description of the module on its project page should be clear and useful. You should get an idea of its features and requirements. Maintenance status: If a module is Actively maintained, you can be sure that there will be security updates, bug fixes and feature improvements provided on a regular basis. However, if the module is unmaintained or abandoned, you shouldn’t use it. Development status: Under active development means you can expect new features to be added to the project, but some aspects (for example, API) may still change. Maintenance fixes only means that the project is considered feature complete. Reported installs, downloads: You can see how many people have downloaded and how many sites use the module. If it’s only used by a few sites, it might be a unique solution that not many people need, or it might be a warning sign that you shouldn’t use it either. Maintainers: When was the last commit (the last time someone updated something on the module) or last release (new version)? If the project has few open issues, a long time since commits/releases might be appropriate, but if it has a lot of open issues and there are no commits/releases, that would be a clue that it might be abandoned. Issues: See if there are any open issues, potential problems with the module. Check the Statistics to see how regularly issues are responded to. Resources: Check if the module has documentation or a README file, that can help you install, configure, explore, and test it. Information on the project page to look for when evaluating a module
Expand your understanding Attributions Written by Diána Lakatos at Pronovix.
Enabling and Disabling Maintenance Mode Source file: extend-maintenance.txt How to enable maintenance mode to set up a "Site under maintenance" message, and how to disable it. Maintenance modeoverview Maintenance modeenabling Maintenance modedisabling
Goal Put your site in maintenance mode to allow users with the right permissions to use the site while users without this permission are presented with a message that the site is under maintenance.
Prerequisite knowledge
Steps
Enabling maintenance mode In the Manage administrative menu, navigate to Configuration > Development > Maintenance mode (admin/config/development/maintenance). The Maintenance mode page appears. Fill in the fields as shown below. Field name Explanation Value Put site into maintenance mode Enable the maintenance mode Checked Message to display when in maintenance mode The information that is shown to website visitors when the mode is enabled. Variables such as @site can be used in the message @site is currently under maintenance but should be back shortly. Thank you for your patience. Click Save configuration. Verify that the site is in maintenance mode by accessing it from another browser where you aren’t logged in. If you are not able to verify, try clearing the cache. See . Maintenance mode enabled
Disabling maintenance mode In the Manage administrative menu, navigate to Configuration > Development > Maintenance mode (admin/config/development/maintenance). The Maintenance mode page appears. Fill in the fields as shown below. Field name Explanation Value Put site into maintenance mode Disable the maintenance mode Unchecked Message to display when in maintenance mode No message required while disabling. You can leave the field blank. Click Save configuration. Verify that the site is no longer in maintenance mode by accessing it from another browser where you aren’t logged in. If you are not able to verify, try clearing the cache. See . Maintenance mode disabled
Expand your understanding Attributions Written and edited by Boris Doesborg, and Jojy Alphonso at Red Crackle.
Downloading and Installing a Module from <emphasis>Drupal.org</emphasis> Source file: extend-module-install.txt How to download and install a module from Drupal.org (using the user interface) or by using Drush. Moduledownloading Moduleinstalling Moduleenabling Modulecontributed Modulecustom Downloadingmodule Installingmodule Enablingmodule Contributed moduledownloading Contributed moduleinstalling Functionalityextending Drush toolusing to download and install module Admin Toolbar moduledownloading Admin Toolbar moduleinstalling ModuleAdmin Toolbar Update Manager moduleusing to install module ModuleUpdate Manager Drupal.org websitedownloading and installing module from
Goal Download and install the contributed Admin Toolbar module, which allows you to easily browse through the administration section of the website.
Prerequisite knowledge
Site prerequisites If you want to install modules via the website, the core Update Manager module must be installed. See for instructions on installing modules. If you want to use Drush, Drush must be installed. See .
Steps You can use the administrative interface or Drush to install a contributed module. If you are installing a custom module rather than a contributed module, or if the steps below do not work to download and unpack the module files, follow the steps in , and then continue here with step 7 in the instructions for the administrative interface below.
Using the administrative interface On the Admin toolbar project page on drupal.org (https://www.drupal.org/project/admin_toolbar), scroll to the Downloads section at the bottom of the page. Copy the address of the tar.gz link. Depending on your device and browser, you might do this by right clicking and selecting Copy link address. Finding a module URL In the Manage administrative menu, navigate to Extend (admin/modules). The Extend page appears. Click Install new module. The Install new module page appears. Installing a module from a URL In the field Install from a URL, paste the copied download link. This value could look like this: https://ftp.drupal.org/files/projects/admin_toolbar-8.x-1.14.tar.gz Click Install to upload and unpack the new module on the server. The files are being downloaded to the modules directory. Click Enable newly added modules to return to the Extend page. If you used the manual uploading procedure, start with this step, and reach the Extend page by using the Manage administrative menu and navigating to Extend (admin/modules). Locate and check Admin toolbar. Click Install to turn on the new module.
Using Drush Find the project name for the module you want to install, which is the last segment of the module’s project page URL. For example, if the project URL is https://www.drupal.org/project/admin_toolbar, the project name is "admin_toolbar". Run the following Drush commands, giving the project name (for example, admin_toolbar) as a parameter: drush dl admin_toolbar drush en admin_toolbar Follow the instructions on the screen.
Expand your understanding Verify that the contributed Admin Toolbar module is working by browsing through the menu in the administration section. Install and configure the contributed Pathauto module so that content pages in your site get nice URLs by default. See for more on URLs.
Additional resources Drupal.org community documentation page "Contributed modules" "Download and Extend" page on Drupal.org Admin Toolbar module on Drupal.org Attributions Written and edited by Boris Doesborg and Jennifer Hodgdon.
Finding Themes Source file: extend-theme-find.txt How to use filters to search themes and evaluate them. Themefinding Themeevaluating Contributed themefinding Contributed themeevaluating Drupal.org websitefinding and evaluating themes on
Goal Find and evaluate themes on Drupal.org.
Prerequisite knowledge
Steps Go to https://www.drupal.org, and navigate to Download & Extend > Themes (https://www.drupal.org/project/project_theme). Filter your search using the categories on the theme search page. For example, you might use these filters: Field name Explanation Example value Maintenance status How actively is the theme maintained? If a theme is actively maintained, you can expect bug fixes and improvements on a regular basis. Actively maintained Development status What kind of development is the theme undergoing? If you select Under active development, you can expect new features to be added, and some aspects may still change. If you select Maintenance fixes only, it means that the theme is considered complete. Any Core compatibility The Drupal version the theme is compatible with. 8.x Status Sandbox projects are experimental projects. Full projects have already gone through an approval process, but they can still be in development. Full projects Search Themes Search by search term in the theme’s description. - Sort by Order your search results by criteria like Most installed (popular themes that many sites use) or Last release (date of latest version released). Most installed Filters on the theme search page on Drupal.org Click Search. Search results will appear. The search results page on Drupal.org To further evaluate a theme, click its title in the list of search results to visit its project page. Some aspects to pay attention to while evaluating themes: Introduction: The description of the theme on its project page should be clear and useful. A screenshot of the theme helps your evaluation as well. Releases: The theme should be available for your version of the core software. Pay attention to the color-coding: Themes marked green are recommended to be used on live sites, the ones marked yellow should be carefully evaluated before use, and the ones marked red are only recommended for testing. Project information: Check the theme’s maintenance and development status, and how frequently it’s downloaded and installed. Issues: See if there are any open issues or potential problems with the theme. Resources: Check if the theme has documentation.
Expand your understanding Attributions Written by Diána Lakatos.
Downloading and Installing a Theme from <emphasis>Drupal.org</emphasis> Source file: extend-theme-install.txt How to download and install a theme from Drupal.org or by using Drush. Themedownloading Themeinstalling Themeenabling Themecontributed Themecustom Contributed themedownloading Contributed themeinstalling Contributed themeenabling Custom themeinstalling Custom themeenabling Downloadingtheme Installingtheme Enablingtheme Update Manager moduleusing to install theme ModuleUpdate Manager Drush toolusing to download and install theme Drupal.org websitedownloading and installing theme from
Goal Download and install a theme from Drupal.org.
Prerequisite knowledge
Site prerequisites If you want to install via the website, the core Update Manager module must be installed. See for instructions on installing modules. If you want to use Drush, Drush must be installed. See .
Steps You can use the administrative interface or Drush to install a contributed theme. If you are installing a custom theme rather than a contributed theme, or if the steps below do not work to download and unpack the theme files, follow the steps in , and then continue here with the administrative interface in step 7.
Using the administrative interface On the theme’s project page on drupal.org (for example, https://www.drupal.org/project/mayo), scroll to the Downloads section at the bottom of the page. Right-click tar.gz to copy the address. Finding the URL for a theme In the Manage administrative menu, navigate to Appearance (admin/appearance). The Appearance page appears. Click Install new theme. The Install new theme page appears. Installing a theme In the field Install from a URL, paste the copied download link. This value could look like https://ftp.drupal.org/files/projects/mayo-8.x-1.3.tar.gz. Click Install to upload and unpack the new theme on the server. The files are being downloaded to the themes directory. Click Install newly added themes to return to the Appearance page. If you used the manual uploading procedure, start with this step, and reach the Appearance page by using the Manage administrative menu and navigating to Appearance (admin/appearance). Locate the new theme under Uninstalled themes and click Install and set as default to use it. All non-administrative pages on the site will now use this new theme. Uninstalled themes on Appearance page
Using Drush Find the project name for the theme you want to install, which is the last segment of the theme’s project page URL. For example, if the project URL is https://www.drupal.org/project/mayo, the project name is mayo. Run the following Drush commands, giving the project name (for example, mayo) as a parameter: drush dl mayo drush en mayo drush config-set system.theme default mayo Follow the instructions on the screen.
Expand your understanding In the Manage administrative menu, navigate to Appearance (admin/appearance) and uninstall any themes that you are not using. Attributions Written and edited by Joe Shindelar at Drupalize.Me, and Boris Doesborgh.
Manually Downloading Module or Theme Files Source file: extend-manual-install.txt How to manually download and upload a module or theme. Moduledownloading Contributed moduledownloading Themedownloading Contributed themedownloading Downloadingmodule or theme files manually Manually downloading module or theme filesoverview
Goal Manually download module or theme files and upload them to your site, if the website or Drush methods for installing or updating a module or theme do not work, or if you are placing a custom-written module or theme.
Prerequisite knowledge
Site prerequisites You need to be facing any of the following to perform the manual download described in this topic: File permission issues FTP permission issues You created a custom module/theme or received its files from someone You could not successfully complete the instructions in , , , or Skip this topic if none of the above applies to you.
Steps If you are installing a module or theme from Drupal.org, follow the downloading and unpacking instructions, and then the uploading instructions. If you created the module or theme, skip the downloading and unpacking steps.
Downloading and unpacking the files Open the module or theme project page on drupal.org; for example, the Admin toolbar page (https://www.drupal.org/project/admin_toolbar). Scroll to the Downloads section near the bottom of the page. Downloading module files Click tar.gz or zip to download the file to your computer. Extract the files into a directory.
Uploading the files to your site If you are adding a new module or theme, create subdirectories in your top-level modules and themes directories (if they don’t already exist). Typically, people make a contrib subdirectory for contributed modules and themes that are downloaded from Drupal.org, and a custom subdirectory for modules and themes that they created. Your modules directory might look like this: Suggested directory structure for modules If you are replacing an existing module or theme with an updated version, put the site into maintenance mode. See . If you are replacing an existing module or theme with an updated version, find and delete all the existing files and directories for the existing module or theme. Modules are normally located in directories under the top-level modules directory, and themes are normally located in directories under the top-level themes directory. Copy the extracted directory to either the same location as the one you deleted (if replacing an existing module or theme) or the appropriate subdirectory of modules or themes (if adding a new module or theme). Refer to , , , or to complete the installation or update of the module or theme. Start at the step after the automatic download has been completed.
Expand your understanding If you work with multiple environments (for example, a local development site and a production site) you will have to repeat the steps on each environment, or re-clone the environment. See . If you added a new theme, navigate in the Manage administrative menu to Appearance (admin/appearance) and uninstall the old theme.
Additional resources Drupal.org community documentation page "Updating modules" Drupal.org community documentation page "Installing contributed modules (Drupal 8)" Drupal.org community documentation page "Installing themes" Attributions Written by Boris Doesborg and Jennifer Hodgdon.
Concept: Development Sites Source file: install-dev-sites.txt Overview of development sites with an example deployment workflow for site building. Development siteoverview Deployment workflowoverview Staging siteoverview Installingdevelopment site Installingstaging site
What are Development Sites? Development Sites are different copies of the same site used for developing, updating, and testing a site without risking the integrity of the live site. An example deployment workflow for site building will usually include the sites mentioned below: Local environment The development process starts with developers working on new features, bug fixes, theming, and configuration in their local environment. Development site Developers push the changes they’ve been working on to the development site. For a team of more than one developer, version control is usually used. Git is a version control system that tracks your files for any changes. You can then commit those changes to a repository. Using Git allows team members to work on the same site without overriding each other’s work. It also makes it possible to easily roll back to previous stages of the development. Staging site The staging site can be used for testing, or presenting the changes to the client for approval. QA (Quality Assurance) and UAT (User Acceptance Testing) are most often carried out on the staging site. It is recommended to have live content on both the development and staging sites, so that you can test how the new features will work with the existing content. Production site The live site on the web available to visitors. It contains new features that have been proven safe to go live. Based on the project’s size, scope, requirements, or stakeholders, stages from the above workflow can be removed, or additional stages can be added. For example, a testing site before staging can be added to separate testing and user acceptance processes.
Additional resources Drupal.org community documentation page "Introduction to Git" Attributions Written and edited by Diána Lakatos, and Jojy Alphonso at Red Crackle.
Making a Development Site Source file: install-dev-making.txt How to make a copy of a live site for development purposes. Development sitemaking Staging sitemaking
Goal Make a copy of a site that you can use to develop new features and test updates on.
Prerequisite knowledge
Site prerequisites You have a live, developed site that you would like to make a copy of for development purposes. If you want to use Drush for some of the steps in this task, Drush must be installed. See .
Steps Follow the steps in , so that you have hosting set up for your development site, you know where the web root is for your development site, and you have an empty database and database user for your development site to use. Make a database dump file from your live site’s database. Try one of the following methods: If you are using MySQL as your database, and your live site’s server has phpMyAdmin installed (it is available from many hosting control panels), use the Export tab in phpMyAdmin to export in SQL format. Using gzip compression on the output file is suggested, to reduce the file size. If you are using MySQL and have access to the command line, use this command (substituting in your site’s database name, user name, and password): mysqldump -u USERNAME -p'PASSWORD' DATABASENAME > BACKUPFILE.sql If you prefer to use Drush, use this command: drush sql-dump > BACKUPFILE.sql Use the contributed Backup and Migrate module from within your live site. See for instructions on installing contributed modules. You now have a database dump stored in the file BACKUPFILE.sql. For security reasons, avoid storing this file on your hosting server anywhere under the Drupal site root. This will prevent others from getting a copy of your database. Copy all of the files from the web root of your live site to the web root of your development site. Edit the sites/default/settings.php file under your development site’s top-level directory in a plain-text editor. Find the lines near the end that contain the database name, database username, and database password, and update them to the information about the development site database you set up. The lines look something like this (before editing): $databases['default']['default'] = array ( 'database' => 'live_site_database_name', 'username' => 'live_site_database_username', 'password' => 'live_site_database_password', Check whether your settings.php file has the following setting; if yes, then you will need to edit this to point to your development site URL instead of your production site URL: $settings['trusted_host_patterns'] Import the database dump file you created, into the development site’s database. Try one of the following methods: If you are using MySQL as your database, and your live site’s server has PHPMyAdmin installed (it is available from many hosting control panels), use the Import tab in PHPMyAdmin. You may find that you have to restart the import a few times, if your database was large. If you are using MySQL and have access to the command line, use this command (substituting in your site’s database name, user name, and password; if you made a gzip-compressed backup file, you will also need to uncompress it first): mysql -u USERNAME -pPASSWORD DATABASE_NAME < BACKUPFILE.sql If you prefer to use Drush, use this command: drush sql-query --file=BACKUPFILE.sql If your development and live sites need to have different configuration, then you have to use configuration overrides in the settings.php file. The $config variable will help you maintain override values separately from the standard configuration data. For instance, you might want the site name to be "Anytown Farmers Market" on the production site, but "Development Site for Anytown Farmers Market" on the development site. To do that, you could have the production value in the site configuration (in the database), and on the development site, in the settings.php file, you would need to have: $config['system.site']['name'] = "Development Site for Anytown Farmers Market";
Expand your understanding Verify that the development site is working correctly. Log in to the development site as an administrator, and clear the cache. See .
Additional resources Drupal.org community documentation page "Backing up a site" Drupal.org community documentation page "Create a Test Site" Attributions Written and edited by Jennifer Hodgdon, Joe Shindelar at Drupalize.Me, and Jojy Alphonso at Red Crackle.
Deploying New Site Features Source file: extend-deploy.txt How to copy a view created in a local development site to a production site. Featuredeploying Configurationdeploying Featurecopying Configurationcopying
Goal Copy a view that you have created in a local development site to the production site.
Prerequisite knowledge
Site prerequisites The core Configuration Manager module must be installed in both the development and production sites. See for instructions on installing core modules. The Vendor content type must exist in both the development and production sites, with the same fields. See . The Vendors view must exist in the development site but not the production site. See .
Steps Open the local development site. In the Manage administrative menu, navigate to Configuration > Development > Configuration synchronization > Export > Single item (admin/config/development/configuration/single/export). The Single export page appears. Select View from the Configuration type list. Select Vendors from the Configuration name list. The configuration appears in the textarea. Copy the configuration from the textarea. Export a single item Open the production site. In the Manage administrative menu, navigate to Configuration > Development > Configuration synchronization Import > Single (admin/config/development/configuration). The Import page appears. Select View from the Configuration type list. Paste the configuration in the textarea. Click Import. The confirmation page appears. Click Confirm. Verify that the new view is being created by navigating in the Manage administrative menu to Structure > Views.
Expand your understanding The steps in this topic show how to export and import a single configuration item. However, often if you develop functionality on a development website and want to transfer it to your production site, you will need to transfer multiple configuration items. For instance, if you developed a new content type with fields, you would need to transfer several configuration items for each field, one for the content type itself, and possibly multiple view mode and form mode items, and they would have to be transferred in the right order. Getting this right can be both tedious and difficult. As an alternative, you can export and import the complete configuration of the site. For this, you would need a local development site that is a clone of the production site (see ), and then you can follow the steps in to synchronize configuration between development and production sites. Another alternative is to use the contributed Features module, which allows exporting and importing bundled functionality (for example, all the configuration for a photo gallery).
Synchronizing Configuration Versions Source file: extend-config-versions.txt How to synchronize the configuration between a development and live site using the core Configuration Manager module. Configurationsynchronizing between development and live site Development sitesynchronizing with live site Live sitesynchronizing with development site Configuration Manager moduleusing to synchronize the configuration between a development and live site ModuleConfiguration Manager
Goal Synchronize the configuration between a development and live site.
Prerequisite knowledge
Site prerequisites You must have a development copy of your production site. See . The core Configuration Manager module must be installed on both the development and production sites. See for instructions on how to install core modules. You must have changed configuration on either the production or development site (the source site), and want to synchronize the changes to the other site (the destination site). As an example, you can develop a new content type, fields, and views on your development site, and when it is all working correctly, deploy the changes to the live site. All configuration that should not be synchronized between the source and destination sites must be stored in configuration overrides in the settings.php file rather than in the database. See .
Steps In the source site, in the Manage administrative menu, navigate to Configuration > Development > Configuration synchronization > Export (admin/config/development/configuration/full/export). Click Export. Your site will generate an archive of the full site configuration. Save the file on your local computer. In the destination site, in the Manage administrative menu, navigate to Configuration > Development > Configuration synchronization > Import (admin/config/development/configuration/full/import). Browse to find the downloaded configuration archive, and click Upload. Your configuration archive will be uploaded to the destination site, and you will be redirected to the configuration Synchronize page (admin/config/development/configuration) with a message saying your files were uploaded. Verify that the differences shown on the page are what you expect. You may see configuration items that have been added, deleted, or changed; for changed items, you can click View differences to see what the changes are. When you are satisfied, click Import all to import the configuration changes.
Expand your understanding If the changes you have made involve only one configuration item (such as one view), you can use the single configuration export/import feature to deploy the change between sites. See . After the step where you export the full configuration from the source site, you might also want to unpack the archive and commit it to a version control system, such as Git, to track changes in your site configuration. See . Attributions Written by Jennifer Hodgdon.
Preventing and Fixing Problems Source file: guide.txt Overview of cache, data backup, and log concepts. Task on clearing the cache is covered.
Concept: Cache Source file: prevent-cache.txt Overview of the cache and the site data that can be cached. Cacheoverview Page cacheoverview ModuleInternal Page Cache ModuleDynamic Page Cache Internal Page Cache moduleoverview Dynamic Page Cache moduleoverview
Prerequisite knowledge
What is the page cache? The software that runs your site, on each page request, must perform calculations and retrieve data from the database, in order to compose the page that is sent to the web browser or other application that is accessing the site. These calculations take time, which can mean that your page load time is longer than would be desirable. There are several ways that page load time can be sped up, including installing software on the server. The system includes the core Internal Page Cache and Dynamic Page Cache modules, which do not require any additional server software; they use a database cache mechanism to speed up your site. The way these modules work is that during page calculations, intermediate results and the final page output are stored in a special database area (known as the cache). Then the next time a compatible request is made, intermediate or final results, as appropriate, can be retrieved and used rather than redoing the entire calculation. In addition, when content or data that affects a particular calculation is updated, the affected cached data is removed from the cache, forcing that part of the calculation to be redone the next time it is needed. These caching modules normally work reasonably well, and offer at least some speed-up for most sites. However, sometimes the page cache can have problems, such as: Corrupted data in the cache, leading to garbled or incorrect page output Old data remaining in the cache too long, leading to outdated page output Insufficient caching, leading to slow page loads
What other data is cached? Independent of whether the two page cache modules are installed on your site, the software that your site runs will still cache the output of many internal calculations. The core systems that cache data include: The theme system caches information in the database cache about which template files are used to render various types of data. If you are developing a new theme and add a new template file, you’ll need to clear this cache to have your theme file recognized. CSS and JavaScript files can optionally be optimized and compressed (depending on your site settings). If so, the compressed versions are stored in the file system so that they don’t have to be re-optimized too often. If you are developing a module or theme, you may need to either turn off or clear this file cache to have changes to CSS or JavaScript files be recognized. The system locates certain low-level PHP functions and classes, such as hook implementations and plugin classes, from your installed modules and stores information about which module has which functionality. If you are developing a new module or adding features to an existing module, you may need to clear this cache to have your new features be recognized.
Additional resources Learn about additional caching and performance optimization methods in the Drupal.org community documentation page "Caching to improve performance". Attributions Written by Jennifer Hodgdon.
Clearing the Cache Source file: prevent-cache-clear.txt How to clear the cache using Drush or the user interface. Cacheclearing Cacherebuilding
Goal Clear or rebuild your site’s internal caches to ensure they are up-to-date with the most recent data, using the user interface or Drush.
Prerequisite knowledge
Site prerequisites If you want to use Drush to clear the cache, Drush must be installed. See .
Steps You can use the administrative interface or Drush to clear the cache.
Using the administrative interface In the Manage administrative menu, navigate to Configuration > Development > Performance (admin/config/development/performance). Click Clear all caches. A message saying the cache has been cleared appears at the top of the page.
Using Drush You can use one of two commands: Use the command drush cache-rebuild to clear and rebuild all cached data for a site. After running this command, you will see the output message "Cache rebuild complete." Use the command drush cc to see a list of individual caches and then choose the specific cache you would like to clear. Running this command should produce output like the following: > drush cc Enter a number to choose which cache to clear. [0] : Cancel [1] : drush [2] : theme-registry [3] : menu [4] : css-js [5] : block [6] : module-list [7] : theme-list [8] : render [9] : views Choose a cache to clear by entering the number associated with that cache. Press "Enter" to continue.
Additional resources Drupal.org community documentation page "Clearing or rebuilding Drupal’s cache" Attributions Adapted and edited by Joe Shindelar and Jack Haas from "Clearing or rebuilding Drupal’s cache", copyright 2000-2016 by the individual contributors to the Drupal Community Documentation.
Concept: Data Backups Source file: prevent-backups.txt Overview of data backups and what should be backed up on a site. Backupoverview Contentbacking up Filebacking up Databasebacking up
Prerequisite knowledge
What is a site backup? If something happens to the computer (or computers) that your site and its database are running on, or if you lose access to this computer, you could lose some or all of your site’s data. You could also lose data if your site is hacked, or if someone with administrative privileges on your site deletes or alters data mistakenly from the administrative interface. In order to prevent scenarios like this from being permanent, expensive data losses, it is important to make regular backups of your site’s data, and to store them in a location that is separate from the computer where your site is running. The frequency with which you should make data backups, and how many backups you should keep, depends on how frequently your site is changing. If you have a very large amount of content on your site that is being added to or updated many times per day, you would want to make more frequent backups than you would for a site that changes rarely. Also consider that some time could pass between when a data problem occurs and when you notice that it is a problem, so storing a sequence of backups (so that you can go back to the last known good data and retrieve that), rather than overwriting a single backup repeatedly, is a good practice. Another consideration is that whatever format you store your backups in, it is a good idea to verify that you can actually retrieve lost data from your backups. You might want to test several possible data loss scenarios, and make sure that your data can be restored to the site in all cases. In order to make a complete backup of your site, you will need to make copies of the following: The data in the sites directory, including the sites/default/settings.php file. The data in your site’s database. A few tables can be truncated, such as those storing the temporary data cache and user login session information, but it is always safe to back up the entire database. Uploaded files, such as images and other attachments. The location of these files is configurable; the standard location is the sites/default/files directory under your site root. In the Manage administrative menu, navigate to Configuration > Media > File system (admin/config/media/file-system) to check the file upload locations; to change them, you’ll need to edit your settings.php file. Modules, themes and any other software files you have customized. You can find customized modules and themes in the modules and themes directories respectively. Some people prefer to back up all software files, including core files and contributed modules and themes (which you could recover by downloading them again from the source), rather than trying to pick out specific files that definitely need to be backed up. You can perform a test to confirm whether your backup has been done right by making a development copy of the site (see ).
Additional resources Drupal.org community documentation page "Backing up a site" The contributed Backup and Migrate module, which can be used to set up automatic backups of the database and uploaded files. Attributions Written by Jennifer Hodgdon.
Concept: Log Source file: prevent-log.txt Overview of logs and where to find recent log messages. Logoverview ReportRecent log messages Errorlog report Troubleshootinglog report Performancelog report
What is a Log? Your site captures system events in a log to be reviewed by an authorized individual at a later time. The log is a list of recorded events containing usage data, performance data, errors, warnings, and operational information. It is vital to check the log on a regular basis as it is often the only way to tell what is going on. You can find your site’s recent log messages in the Manage administrative menu by navigating to Reports > Recent log messages (admin/reports/dblog). Recent log messages of a basic site Attributions Adapted by Diána Lakatos from "Reports" copyright 2000-2016 by the individual contributors to the Drupal Community Documentation
Concept: Status Report Source file: prevent-status.txt Overview of the status report and where to find it on a site. Status reportoverview Securitystatus report PHP versionstatus report Software versionstatus report Update statusstatus report Updatestatus report Site informationstatus report Server informationstatus report Performancestatus report Troubleshootingstatus report
What is a Status Report? The status report is a short overview of your site’s parameters as well as any problems detected with your installation. It may be useful to copy and paste this information into support requests filed on Drupal.org’s support forums and project issue queues or when asking for help on other channels. You can find the status report in the Manage administrative menu by navigating to Reports > Status report (admin/reports/status). Status report of a basic site
Security and Maintenance Source file: guide.txt Overview of security and maintenance concepts. Tasks on updating the core software, modules, and themes are covered.
Concept: Cron Source file: security-cron-concept.txt Overview of cron and how it is different from Unix cron. Cron taskoverview Automated Cron moduleoverview
What are cron tasks? To ensure that your site and its modules continue to function well, a group of administrative operations should be run periodically. These operations are called cron tasks. Examples of cron tasks are: checking for module and theme updates, indexing content for search, or cleaning up temporary files.
What is the relationship between the site’s cron tasks and Unix cron? Linux/Unix-based operating systems have a cron scheduler that can be used to run periodic tasks. You can use the server’s cron scheduler to schedule runs of the site’s cron tasks. Alternatively, you can use the core Automated Cron module to run tasks. You can check the site’s cron tasks' status in the status report.
Additional resources Drupal.org community documentation page "Setting up cron" Attributions Written and edited by Diána Lakatos at Pronovix, Dave Hansen-Lange at Advomatic, and Boris Doesborg.
Configuring Cron Maintenance Tasks Source file: security-cron.txt How to run cron maintenance tasks using the core Automated Cron module, or by running them from outside the site. Automated Cron moduleconfiguring Cron taskconfiguring
Goal Check whether cron maintenance tasks are run regularly, and if not, either install the core Automated Cron module or run cron maintenance tasks from outside the website.
Prerequisite knowledge
Steps Review the Status report (see ) to see when cron maintenance tasks were last run. If you installed the website using the core Standard installation profile (or similar), then cron maintenance tasks might already be running via the core Automated Cron module. By default, these tasks are run about every three hours. Choose whether to run cron maintenance tasks using the core Automated Cron module, or by other means. The core Automated Cron module might not be suitable for some websites because: Each time someone accesses a page on the site, the module checks how long it has been since cron maintenance tasks have last run, and then runs them if necessary. If no one visits the website for a long time, cron maintenance tasks will not be run. Cron maintenance tasks are run after the page has been generated. This means there is less time for the tasks to be run before various server timeouts are reached (for example, PHP execution timeout). If this happens, the logs (see ) will show error messages that cron is unable to complete. There is a small scalability cost associated with the core Automated Cron module. This is because one of the web server’s processes is occupied (and can’t serve other web pages) until the cron maintenance tasks are complete. If you want to use the core Automated Cron module, first make sure it is installed (it is installed with the core Standard install profile; see if it is not installed). Next, configure the module to control how frequently cron maintenance tasks are run. In the Manage administrative menu, navigate to Configuration > System > Cron (admin/config/system/cron). Choose the desired interval in the Cron settings section, and click Save configuration. Configure the core Automated Cron module If you want to run cron maintenance tasks from outside the website, uninstall the core Automated Cron module (see ). Next, find the cron URL. This URL is shown in the Status report (see ), and in the Cron administration page (see previous step). The URL looks like this: http://www.example.com/cron/0MgWtfB33FYbbQ5UAC3L0LL3RC0PT3RNUBZILLA0Nf1Re Whenever this URL is visited, cron maintenance tasks will run. Set up one of the following schedulers to access this URL regularly: The Cron daemon (Linux, OS X, Solaris, BSD) Scheduled Tasks (Windows) A cron SASS provider (software as a service) A cron manager provided by your web hosting provider (see the documentation provided by your provider)
Additional resources Drush page "Running Drupal cron tasks from Drush" Drupal.org community documentation page "Setting up cron" Attributions Written and edited by Dave Hansen-Lange at Advomatic, Boris Doesborg, and Jennifer Hodgdon.
Concept: Security and Regular Updates Source file: security-concept.txt Overview of security updates, how bugs are handled, and non-security updates. Securityoverview Updateoverview Bugreporting Security bugreporting Security teamoverview
Prerequisite knowledge
What are security updates? Any software occasionally has bugs, and sometimes these bugs have security implications. When security bugs are fixed in the core software, modules, or themes that your site uses, they are released in a security update. You will need to apply security updates in order to keep your site secure. See to learn how to be notified of security updates by email, and , , and to learn how to make updates.
What is the security team? The Drupal open-source project has a team of volunteers who track security-related bugs and release security updates. They also help other developers fix bugs, and maintain information for users on how to keep their websites secure. You can learn more about the security team and their practices and processes at the Drupal.org Security Team page.
How are security bugs reported? It is important that security problems be kept confidential until they are fixed, so that sites are less likely to be compromised before they can be secured. If you find a potential security problem in any of the software you downloaded from the Drupal.org website, follow the procedures on the Drupal.org Security Team page to report it.
What are regular (non-security) updates? The core software, modules, and themes also periodically have regular updates to add new features and fix bugs. These updates are less critical than security updates. As a general best practice, updates should be applied as long as they do not cause problems with your site. Testing on a development copy of your site is always a good idea before applying updates on a live site. This is because some updates may include changes that are not compatible with the modules or themes on your site, or that will break a particular functionality on your site.
Additional resources Drupal.org community documentation page "Securing your site" "Security advisories" on Drupal.org Drupal.org Security team Attributions Written and edited by Boris Doesborg and Jennifer Hodgdon.
Keeping Track of Updates Source file: security-announce.txt How to secure a site by staying informed about the latest security updates. Updatekeeping track of Security updatekeeping track of Update Manager moduleoverview Security announcementsubscribing to by email Security announcementsubscribing to on Twitter
Goal Keep your site safe and up-to-date by keeping up with the latest security updates.
Prerequisite knowledge
Steps There are a few different ways to receive notifications of security releases: In the Manage administrative menu, navigate to Reports > Available updates > Settings. Enter the email addresses to be notified when updates are available. You can also specify whether you want daily or weekly updates. Click Save configuration. Subscribe to the security announcements email list. To subscribe, log in to Drupal.org, go to your user profile page and subscribe to the security newsletter on the Edit > My newsletters tab. Follow @drupalsecurity on Twitter. Subscribe to RSS feeds for core security updates, contributed project updates and public service announcements.
Additional resources "Security advisories" on Drupal.org Drupal.org Security Team @drupalsecurity on Twitter Attributions Written by Sarah German at Advomatic.
Updating the Core Software Source file: security-update-core.txt How to update the core software using the administrative interface or Drush. Core softwareupdating Drush toolusing to update the core software Administrative interfaceusing to update the core software
Goal Update the core software, either through the administrative interface or by using Drush.
Site prerequisites If you want to use Drush, Drush must be installed. See . If your site is live, you should test this process in a development environment before running it on your production site. See .
Steps Make a complete backup of your site. Refer to . Open settings.php (/sites/default/settings.php) in any plain text editor. Find the line with the $settings[update_free_access] variable. By default, it is set to "FALSE" due to security reasons. Change the setting to "TRUE": $settings['update_free_access'] = TRUE; Disable any caching technique (memcache, varnish, and so on) your application might be using. Put your site in maintenance mode. See . Download the latest version of Drupal 8.x core manually from Drupal.org Drupal Core Downloads and extract it to a backup or temporary directory on your server (should be outside the directory where the site is hosted). You can also use Drush by navigating to the backup or temporary directory on the server and entering this command: drush dl drupal Delete the core and vendor directories, and all files that are not in a subdirectory, including .htaccess, composer.json, and autoload.php. Don’t delete custom and customized files because you may end up losing the custom functionality stored in them. Upload the core and vendor directories and the non-custom/non-customized files that you may have deleted during the preceding step from the newly downloaded code base (in our case, drupal-8.0.0-beta14) to your site directory (version 8.0.0-beta13). Run the update.php script using either of the following: Visit http://www.example.com/update.php in your browser (where www.example.com is your site’s name). Click Continue in the first screen to run the updates and successfully complete the script. Run the following Drush command: ---- drush updb ---- If you get any error or warning, re-run the update.php script again till all the updates have been completed successfully. Open settings.php (/sites/default/settings.php) in a text editor. Find the line with the $settings[update_free_access] variable and update it to "FALSE": $settings['update_free_access'] = FALSE; Click Administration pages to return to the administration section of your site. Take your site out of maintenance mode. See . Clear the cache. See . Re-enable any caching technique you disabled at Step 3. You should have the updated version running. You can verify the current version of your software by checking the Status report (see ).
Expand your understanding
Additional resources "Drupal Core Downloads" page on Drupal.org "Registry Rebuild" page on Drupal.org The file /core/UPDATE.txt within your installation. Attributions Written and edited by Surendra Mohan, Boris Doesborgh, and Jojy Alphonso at Red Crackle.
Updating a Module Source file: security-update-module.txt How to update a contributed module by using the administrative interface and running the Database updates script, or by using Drush. Moduleupdating Security updateapplying Contributed moduleupdating Drush toolusing to update module
Goal Update a contributed module and run the Database updates script.
Prerequisite knowledge
Site prerequisites A contributed module has been installed and there is an update available for it. See and . If your site is live, you should test this process in a development environment before running it on your production site. See . You have created a full-site backup. See . If you want to use the user interface, the core Update Manager module must be installed. See for instructions on installing core modules. If you want to use Drush, Drush must be installed. See .
Steps Before you start, check for module-specific update instructions. This is typically necessary while updating modules that involve the usage of third-party libraries. Read and understand all module-specific requirements before proceeding with the updates. To find instructions, check the module’s project page Read Documentation link. To view further instructions, download the tar.gz or .zip file from the project page to your local computer. Unzip the file and look for README.txt, INSTALL.txt, and UPGRADE.txt that come with the module’s installation file. Also, review the release notes on the project page by clicking the version number you’re downloading. Release notes link You can use the administrative interface or Drush to update a contributed module. If you are updating a custom module rather than a contributed module, or if the steps below do not work to obtain the new module files, follow the steps in . You can then continue here with step 6 in the instructions for the administrative interface below.
Using the administrative interface Put your site in maintenance mode. See . In the Manage administrative menu, navigate to Reports > Available updates > Update (admin/reports/updates/update). Find and check the module in the list. Click Download these updates for the module. Available updates Click Continue. Click Run database updates. If you obtained the new module files manually, start with this step, and reach the database updates page by typing the URL example.com/update.php in your browser. Click Continue and apply all updates. The database update scripts will be executed. Click Administration pages to return to the administration section of your site. Take your site out of maintenance mode. See . Clear the cache (refer to ).
Using Drush Find the project name for the module you wish to update. It is the last segment of the module’s project page URL. For example, if the project URL is https://www.drupal.org/project/admin_toolbar, the project name is "admin_toolbar". Run the following Drush command, giving the project name (for example, admin_toolbar) as a parameter (if you have more than one module to update, add the additional module project names to the end of the command, separated by spaces): drush up admin_toolbar Follow the instructions on the screen.
Expand your understanding Review the site log (refer to ) once the updates are complete to check for errors.
Additional resources Drupal.org community documentation page "Updating modules" Attributions Adapted by Boris Doesborgh, and Sarah German at Advomatic, from "Updating modules", copyright 2000-2016 by the individual contributors to the Drupal Community Documentation.
Updating a Theme Source file: security-update-theme.txt How to update a contributed theme by using the administrative interface and running the Database Updates script, or by using Drush. Themeupdating Security updateapplying Contributed themeupdating Drush toolusing to update theme
Goal Update a contributed theme on your site and run the Database Updates script.
Prerequisite knowledge
Site prerequisites A contributed theme has been installed and there is an update available for it. See and . If your site is live, you should test this process in a development environment before running it on your production site. See . You have created a full site backup. See . If you want to use the user interface, the core Update Manager module must be installed. See for instructions on installing core modules. If you want to use Drush, Drush must be installed. See .
Steps You can use the administrative interface or Drush to update a contributed theme. If you are updating a custom theme rather than a contributed theme, or if the steps below do not work to obtain the new theme files, follow the steps in , and then continue with step 6 in the instructions for administrative interface below.
Using the administrative interface Put your site in maintenance mode. See . In the Manage administrative menu, navigate to Reports > Available updates > Update (admin/reports/updates/update). Find and check the theme in the list. Click Download these updates for the theme. Available updates Click Continue. Click Run database updates. If you obtained the new theme files manually, start with this step, and reach the database updates page by typing the URL example.com/update.php in your browser. Click Continue to run the updates. The database update scripts will be executed. Click Administration pages to return to the administration section of your site. Take your site out of maintenance mode. See . Clear the Drupal cache (refer to ).
Using Drush Find the project name for the theme you wish to update, which is the last segment of the theme’s project page URL. For example, if the project URL is https://www.drupal.org/project/mayo, the project name is "mayo". Run the following Drush command, giving the project name (for example, mayo) as a parameter: drush up mayo Follow the instructions on the screen.
Expand your understanding Review the site log, see , once the updates are complete to check for errors. Attributions Written by Boris Doesborg.
Final Thoughts Source file: guide.txt Overview of the Drupal community and how to connect with other users.
Connecting with the Community Source file: thoughts-connecting.txt How to connect and get involved in the open-source community. Communityconnecting with Drupal projectconnecting with EventDrupal Interest groupfinding User groupfinding Groupfinding Drupal user groupfinding IRC (Internet Relay Chat)using to chat online Internet Relay Chat (IRC)using to chat online Chatting online Contributing to the project Bugreporting
Prerequisite knowledge
How can you connect with the community? The Drupal project has a world-wide community of developers and users. One of the best ways to improve your knowledge of the platform is to connect with others that are using it, and get involved in the open-source community. There are many ways that you can get started: Attend an event There are both regional and international Drupal events held around the world. See the "DrupalCon" page on Drupal.org to find international events, and the "Event Calendar" on groups.drupal.org or drupical.com to find regional events. Join a local group There are Drupal user groups all around the world. Many of them have regular meetings, which you can attend to learn more about Drupal and connect to other Drupal users. Find local user groups on groups.drupal.org. Participate in a topical or language group There are also interest groups for a wide range of topics, which have on-line discussion forums. Find topical groups on groups.drupal.org. Many languages have their own websites too; you can find them on the "Language-specific communities" page on Drupal.org. Chat online The Drupal project uses IRC for on-line chatting. There are regional, topical, and general-purpose chat groups available. Find out more on the "IRC" page on Drupal.org. Report a problem See below. Contribute You can contribute your time and expertise to the community in many ways, such as: Developing modules or themes. See the "Contribute to Development" page on Drupal.org, or improving them (using the issue queues for existing projects). Translating the user interface. See localize.drupal.org. Writing documentation. See "Contribute to Documentation" on Drupal.org. Answer Support questions. See .
How can you report a problem or suggest a feature? Each project within the community (such as the Drupal Core project for the base software, and projects for each contributed theme and module) uses issues to keep track of software bugs and plans for new features. You can participate by creating a bug report when you find a problem, creating a feature request, or commenting on existing issues. Search before creating an issue, to make sure that the problem or feature has not already been reported or requested. See the Drupal.org page "Use the issue queue" and the Drupal.org page "Reporting a problem" for more information. If you find a problem that you believe is related to security, such as a cross-site scripting vulnerability, do not report it in the standard issue queue. Instead, report it to the security team. See the Drupal.org page "How to report a security issue" for details.
Additional resources "Code of Conduct" on Drupal.org "Event Calendar" on groups.drupal.org or drupical.com "Where is the Drupal Community?" page on Drupal.org groups.drupal.org "IRC" page on Drupal.org "Ways to get involved" page on Drupal.org Drupal.org page "Why get involved?" Drupal.org page "Contributor tasks" Drupal.org page "Use the issue queue" Drupal.org page "Reporting a problem" Drupal.org page "How to report a security issue" Attributions Written by Jennifer Hodgdon, and Joe Shindelar at Drupalize.Me.
Getting Support Source file: thoughts-support.txt How to find support for issues faced while developing a site. Supportfinding Forumuser support IRC (Internet Relay Chat)using to chat online Internet Relay Chat (IRC)using to chat online Chatting online
Prerequisite knowledge
Where can you find support? The Drupal project is open-source, so if you have questions about or problems with the software, your options for finding answers and fixes are somewhat different from what they would be for commercial software. There are several options for free support provided by community volunteers. First, some IRC channels, local groups, and language communities encourage support questions, through on-line chat, in-person meetings, or websites (find out more about these on ). Second, some (but not all) contributed module, distribution, and theme projects encourage you to post support requests in issues. Generally, projects that have a very large number of users do not allow support requests in their issues (Drupal Core is in that category), while projects with a smaller number of users welcome the occasional support question. Be respectful of developer time and read the documentation for the project before posting a question in an issue. On the other hand, all projects encourage you to use issues to report problems and bugs; see to learn more about that. In addition to those resources, the following sites provide free forums where volunteers answer support questions about Drupal: The Drupal.org Forums "Drupal Answers" on StackExchange If you prefer to pay for support (presumably in exchange for more extensive service or better availability), you can find service providers in the "Drupal Marketplace" on Drupal.org.
Additional resources "Support" page on Drupal.org "Drupal Marketplace" on Drupal.org The Drupal.org Forums "Drupal Answers" on StackExchange Attributions Written by Jennifer Hodgdon.
Learning More Source file: thoughts-learn-more.txt Where to find additional material to gain advanced site-building skills. Learning resourcelink to Trainingresource Drupal trainingresources for Documentationabout Drupal Resourcedocumentation and training Documentationavailable on drupal.org Documentationcontributed by the Drupal Community Documentationabout the Drupal API Documentationfor programmers DocumentationDrupal Planet blog posts TrainingTraining Marketplace TrainingGlobal Training Days
Prerequisite knowledge
Where can you go to learn more? The following resources should prove useful to you, as you continue to advance your skills: "Drupal Community Documentation" section on Drupal.org Wiki-like documentation contributed by the Drupal community, ranging from basic to advanced, about all aspects of Drupal (site building and administration, theming, development, and contributed modules). api.drupal.org Reference documentation for programmers about the Drupal API. "Drupal Planet" page on Drupal.org An aggregation of blog posts about Drupal from around the web, posted by blogging members of the Drupal community who have applied for inclusion. Topics range from programming to site building to Drupal news. Groups, events, and meetups See for more about topical, regional, and language groups, as well as local, regional, and international events. "Training Marketplace" page on Drupal.org The Marketplace lists paid training providers. For free training, check whether events include training sessions; there are also free or very low-cost training events listed on the "Global Training Days" page on Drupal.org. Support sites See to locate support forums; searching them can be useful for learning about specific topics. Attributions Written by Jennifer Hodgdon, and Joe Shindelar at Drupalize.Me.
Glossary Source file: glossary.txt Glossary Terminology (Glossary) Ajaxdefinition Ajax A web technology used to exchange data with a server to dynamically update parts of a web page (for example, forms) without needing entire page reloads. Aliasdefinition Alias A user-friendly name to replace the internal path that the system assigns to a URL on the site. For example, you might assign an alias of about to the About page on your site, to replace the internal path node/5. This would give the page a URL of http://example.com/about instead of http://example.com/node/5. See for more information. Anonymousdefinition Anonymous A person interacting with the site (user) who is not logged in. See for more information. Blockdefinition Block A chunk of content (text, images, links, etc.) that can be displayed on a page of a site. Blocks are displayed in regions. See for more information. Breakpointdefinition Breakpoint Breakpoints are used to separate the height or width of browser screens, printers, and other media output types into steps. A responsive site adjusts its presentation at these breakpoints. See for more information. Bundledefinition Bundle Synonym for Entity subtype. Cachedefinition Cache The site’s internal cache stores the output of time-consuming calculations, such as computing output for an HTML page request, and then retrieves them instead of recalculating the next time they are needed. External caching systems can also be used on the web server to speed up a site’s response. See for more information on the internal cache. CMS (Content Management System)definition Content Management System (CMS)definition CMS Acronym for Content Management System. Configurationdefinition Configuration Information about your site that is not content, and is meant to be more permanent than state information, such as the name of your site, the content types and views you have defined, etc. See for more information. Contentdefinition Content Information meant to be displayed on your site, such as text, images, downloads, etc. See also Configuration and State. See for more information. Content itemdefinition Content item An item of content that is typically meant to be displayed as the main content of a page on your site. This is an entity type. See for more information. Content Management System (CMS)definition Content Management System (CMS) A collection of tools designed to allow the creation, modification, organization, search, retrieval and removal of information on a website. See for more information. Content typedefinition Content type An entity subtype for the content item entity type. Each content type is used for some particular purpose on the site, and each has its own fields. For example, a site for a farmers market might have a content type for simple pages, and another for a vendor listing page. See for more information. Contextual linkdefinition Contextual link A link to an administrative page for editing or configuring a feature of the site, shown in the context where that feature is displayed. Example: a link to configure a menu that is shown when you hover your mouse over the menu. See for more information. Contributeddefinition Contributed moduledefinition Contributed themedefinition Contributed Modules, themes, and distributions that are not part of the Drupal core download, and that can be downloaded separately from the Drupal.org website. Cron taskdefinition Cron command schedulerdefinition Cron On some operating systems, cron is a command scheduler application that executes commands or scripts periodically. Your site defines periodic tasks, also known as cron tasks, that need to be triggered either by an operating system cron scheduler, or internally. See for more information. Distributiondefinition Distribution A single download that provides a shortcut for setting up a specific type of site, such as a website for a club or for e-commerce. A distribution contains Drupal core, along with contributed modules and/or themes; many distributions also pre-configure the site or even create sample content upon installation. See for more information. Drupal coredefinition Drupal core The files, themes, profiles, and modules included with the standard project software download. See for more information. Entitydefinition Entity An item of either content or configuration data, although in common usage, the term often refers to content entities. Examples include content items, custom blocks, taxonomy terms, and definitions of content types; the first three are content entities, and the last is a configuration entity. See also Entity type, Entity subtype, and Field. See for more information. Entity subtypedefinition Entity subtype Within a content entity type, a grouping of entities that share the same fields. For example, within the content item entity type, a farmers market site might have subtypes (known as content types) for static pages and vendor pages, each with its own group of fields. You may also see the term bundle used (especially in programmer documentation) as a synonym of entity subtype. See for more information. Entity typedefinition Entity type The overall type of an entity; in common usage, it is only applied to a content entity. Examples include content items, taxonomy terms, and custom blocks. See for more information. Fielddefinition Field Data of a certain type that is attached to a content entity. For instance, on a farmers market site’s vendor content type, you might have fields for an image, the vendor description, and a taxonomy term. See for more information. Formatterdefinition Field formatterdefinition Field formatter Configuration that defines how the data in a field is displayed. For example, a text field could be displayed with a prefix and/or suffix, and it could have its HTML tags stripped out or limited. See also View mode and Field widget. See for more information. Widgetdefinition Field widgetdefinition Field widget Configuration that defines how someone can enter or edit data for a field on a data entry form. For example, a text field could use a single-line or multi-line entry box, and there could be a setting for the size of the box. See also Field formatter. See for more information. Formatter See Field formatter. FOSS (Free and Open Source Software)definition Free and Open Source Software (FOSS)definition FOSS Acronym for Free and Open Source Software, meaning software that is developed by a community of people and released under a non-commercial license. See also GPL. See for more information. GPL (General Public License or GNU General Public License)definition GNU General Public Licensedefinition GPL Acronym for the GNU General Public License, a non-commercial software license. All software downloaded from the Drupal.org website is licensed under the "GNU General Public License, version 2". See also FOSS. See for more information. Image styledefinition Image style A set of processing steps that transform a base image into a new image; typical processing includes scaling and cropping. See for more information. LAMP (Linux Apache MySQL PHP)definition Linux Apache MySQL PHP (LAMP)definition LAMP Acronym for Linux, Apache, MySQL, and PHP: the software on the web server that the scripts commonly run on (although it can use other operating systems, web servers, and databases). See for more information. Logdefinition Log A list of recorded events on the site, such as usage data, performance data, errors, warnings, and operational information. See for more information. Menudefinition Menu A set of links used for navigation on a site, which may be arranged in a hierarchy. See for more information. Moduledefinition Module Software (usually PHP, JavaScript, and/or CSS) that extends site features and adds functionality. The Drupal project distinguishes between core and contributed modules. See for more information. Pathdefinition Path The unique, last part of the internal URL that the system assigns to a page on the site, which can be a visitor-facing page or an administrative page. For example, the internal URL for the About page on your site might be http://example.com/node/5, and in this case, the path is node/5. See also Alias. See for more information. Permissiondefinition Permission The ability to perform some action on the site, such as editing a particular type of content, or viewing user profiles. See also Role. See for more information. Reference fielddefinition Reference field A field that represents a relationship between an entity and one or more other entities, which may be the same entity type or a different type. For example, on a farmers market site, a recipe content item might have a reference field to the vendor (also a content item) that posted the recipe. Taxonomy term fields are also reference fields. See for more information. Regiondefinition Region A defined area of a page where content can be placed, such as the header, footer, main content area, left sidebar, etc. Regions are defined by themes, and the content displayed in each region is contained in blocks. See for more information. Responsivedefinition Responsive A site or theme is said to be responsive if it adjusts its presentation in response to the size of the browser screen, printer, or other media output type. See also Breakpoint. See for more information. Revisiondefinition Revision A record of the past or present state of a content entity, as it is edited over time. See for more information. Roledefinition Role A named set of permissions that can be applied to a user account. See for more information. Security updatedefinition Security update An update that fixes a security-related bug, such as a hacking vulnerability. See for more information. Statedefinition State Information of a temporary nature about the current state of your site, such as the time when cron was last run, etc. See also Content and Configuration. See for more information. Taxonomydefinition Taxonomy The process of classifying content. See for more information. Taxonomy termdefinition Taxonomy term A term used to classify content, such as a tag or a category. See also Vocabulary. See for more information. Text formatdefinition Text format Configuration that defines the processing that happens to user-entered text before it is shown in the browser. This might include stripping or limiting HTML tags, or turning URLs into links. See for more information. Themedefinition Theme Software and asset files (images, CSS, PHP code, and/or templates) that determine the style and layout of the site. The Drupal project distinguishes between core and contributed themes. See for more information. UI (User Interface)definition UI Acronym for User Interface. Updatedefinition Update A newer version of your site’s software, either Drupal core or a module or theme. See also Security update. See for more information. Userdefinition User A person interacting with the site, either logged-in or anonymous. See for more information. User Interface (UI)definition User interface The text, styles, and images that are visible on a site, separated logically into the user interface for site visitors and the administrative user interface. User onedefinition User one (User 1) The initial user account that is created when you install the site (whose ID number is 1). It automatically has all permissions, even if it is not assigned an administrative role. See for more information. Viewdefinition View A formatted listing of data; typically, the data comes from content entities. For example, on a farmers market site, you might create a content item for each vendor. You could then make view that generates a listing page that shows a thumbnail image and short description of each vendor, linking to the full-page content item. Using the same data, you could also make a view that generates a new vendors block, which would show information from the most recently added vendors. See for more information. View modedefinition View mode A set of field formatter configuration for all of the fields of a content entity, some of which may be hidden. Each entity subtype can have one or more view modes defined; for example, content types typically have Full and Teaser view modes, where the Teaser view mode displays fewer or trimmed-down fields. See for more information. Vocabularydefinition Vocabulary A group of taxonomy terms to choose from when classifying content in a particular way, such as the list of all of the vendor categories on a farmers market site. Technically, vocabularies are the entity subtype for the taxonomy term entity type. See for more information. Widgetdefinition Widget See Field widget. Wizarddefinition Wizard A web form that allows you to fill in a few values, and creates something with sensible defaults based on the values you chose. For example, there are wizards for creating views of different types. See for more information. WYSIWYG (What You See Is What You Get)definition What You See Is What You Get (WYSIWYG)definition WYSIWYG Acronym for What You See is What You Get, meaning a method for editing content where what you see on the editing screen closely resembles the final product. See for more information. Index Source file: guide.txt Appendix Source file: guide.txt Overview of contributors to this guide.
Guide-Wide Attributions Source file: attributions.txt List of contributors involved in project management and guide-wide writing/editing tasks. Content attributions for this document Attributions for this document Copyright for this document This guide was written by contributors to the Drupal open-source project, and is licensed under the CC BY-SA 2.0 license. See for more information. Details about the contributors for guide-wide tasks are below. For individual topics, the attributions for writing, editing, and/or translating are at the end of each topic.
Project coordination of original (English, Drupal 8) text Writing of the initial version of this guide was coordinated by the following people: Amber Matz - Volunteer coordination and project management Jennifer Hodgdon - Content oversight Joe Shindelar - Content oversight Antje Lorch - Content oversight
Writing, editing, and testing of original text The following people contributed to guide-wide writing: The glossary was written and adapted by Jennifer Hodgdon, with parts from "Glossary", "Overview of Configuration (vs. other types of information)", and "Working with breakpoints in Drupal 8", each copyright 2000-2016 by the individual contributors to the Drupal Community Documentation. The index was improved and curated by Anna van Raaphorst. Topic summaries were written by Jojy Alphonso at Red Crackle. Guide-wide editing was done by the following people: Amber Matz at Drupalize.Me Anna van Raaphorst Antje Lorch Balu Ertl Boris Doesborg Charles Leverington chirag shah Grant Dunham Jennifer Hodgdon Joe Shindelar at Drupalize.Me Jojy Alphonso at Red Crackle — who copy edited the vast majority of the User Guide Kamal Kant Pansari at Intelliswift Michael Lenahan at erdfisch Swarad Mokal at Blisstering Solutions The content was tested by: Zach Carter A workshop organized by the "Spokane Drupal User Group" on groups.drupal.org, with students from the Web Development Certificate program at Spokane Community College
Images Most of the images in the guide are screen captures from the Drupal software, generated by software written by Jennifer Hodgdon. The word Drupal, the Druplicon logo (which appears as part of several images throughout the guide), and the Drupal wordmark logo (which is part of the cover image), are registered trademarks of Dries Buytaert). The cover image is a CC BY-SA 2.0 licensed illustration by Amanda Luker at Advomatic. The Anytown Farmers Market logo, which appears as part of several images throughout the guide, is a CC BY-SA 2.0 licensed illustration by Justin Harrell at Drupalize.Me. The honey bee image, which appears as part of several images throughout the guide, is a public domain image by John Severns at the English Wikipedia project via Wikimedia Commons. The farm image, which appears as part of several images throughout the guide, is a public domain image by Xianmin Chang via Wikimedia Commons. The salad image, which appears as part of several images throughout the guide, is a public domain image by Yinan Chen via Wikimedia Commons. The carrot image, which appears as part of several images throughout the guide, is public domain image K11611-1 by Stephen Ausmus at the Agricultural Research Service of the United States Department of Agriculture via Wikimedia Commons.