By chenyi, 14 May, 2024
Forums

一、在本地搭建drupal环境

1、在本地构建drupal,首先下载相关软件,比如xamppphpstrom和对应drupal的安装包。这里的xampp版本为7.4.25drupal版本为9.3.8

2、将drupal的压缩包解压之后放入xampphtdocs文件夹里,然后在phpstorm里创建新项目选择drupal环境。

详细见《phpstrom关于drupal文件的配置》

 

二、前期文件的配置

1、本地在xampp文件中找到php.ini文件,在文件里面找到以下代码

memory_limit = 64M

将这里的64改为1024,重启apache

 

2、修改文件权限(实行这一步会报错)

$ chmod -R u+w sites
$ chmod -Rf 775 sites/default

 

3、设置settings.php文件

settings.php文件中搜索local,这样会在文件接近底部的部分看到三行代码

/**
 * Load local development override configuration, if available.
 *
 * Use settings.local.php to override variables on secondary (staging,
 * development, etc) installations of this site. Typically used to disable
 * caching, JavaScript/CSS compression, re-routing of outgoing emails, and
 * other things that should not happen on development and testing sites.
 *
 * Keep this code block at the end of this file to take full effect.
 */

  if(file_exists(__DIR__.'/settings.local.php')){

include__DIR__.'/settings.local.php';

   }

这个代码的作用是判断是否存在settings.local.php文件,如果存在,则忽略settings.php而使用settings.local.php这个文件。将这三行的注释符号删除,让他起作用。

这样做的原因是,由于这个文件包含了各种参数,而开发团队中不同角色的人所需要用到的参数值往往不一样。所以大家应该各自使用自己的settings.local.php文件。

 

比如,作为主题开发者,我们需要关闭网站JS和CSS的聚合功能,这样才能在开发的过程中找到我们需要的文件。因为,如果JS或者CSS文件被聚合了,系统就会用多个文件去生成一个大的文件,drupal用这种方式来减少http的请求数量,并以此来加快网站的打开速度。但是我们在开发主题的时候,就不能使用这个功能。

 

所以我们需要建立一个只在我们自己本地起作用的settings.php文件。这个文件在上传和共享代码的时候,可以被忽略。这就保证了我们对这个本地文件的设置,不会影响到其他人。

 

Drupal的开发者已经为我们考虑到了这个需求,因此他们在sites文件夹中为我们准备了一个example.settings.local.php文件,我们需要做的是,拷贝这个文件并放置在sites/default目录下(注意这里的路径啊,是放到default文件夹中),并把文件名改成settings.local.php

 

 

4、清空缓存并验证文件生效

打开新建的settings.local.php文件,我们可以看到文件的第52和53行,这两行代码的意思就是关闭CSS和JS聚合功能。

$config['system.performance']['css']['preprocess']=FALSE;

$config['system.performance']['js']['preprocess']=FALSE;

为了检查这个文件是否生效,我们只要看看网站的CSS和JS是不是被聚合了。因此,我们先回到刚才建立好的网站的首页,并检查元素。

我们先切换到性能页面(admin/config/development/performance),点击清空缓存按钮。这个动作是你在做主题开发的时候经常需要重复的一个动作,Drupal通过这种方式来重新加载系统文件和模板文件。

同时在检查源代码页面就可以看到元素样式所对应的css文件名都可读了。

 

5、添加services,开启twig debug模式

编辑settings.local.php文件,在第39行代码可以让你开启本地的services

/**
 * Enable local development services.
 */

$settings['container_yamls'][] = DRUPAL_ROOT . '/sites/development.services.yml';

将其改成以下样子

/**
 * Enable local development services.
 */

$settings['container_yamls'][] = DRUPAL_ROOT . '/sites/default/local.services.yml';

 

再在default文件夹中创建一个local.services.yml文件,在文件中复制以下代码

services:

cache.backend.null:

class: Drupal\Core\Cache\NullBackendFactory

 

parameters:

twig.config:

debug: true

auto_reload: true

cache: false

这里的9行代码,前三行是关闭缓存用的,先不管他。因为我们回头还要再次进入settings.local.php文件中进行设置才能生效。

 

第7行是开启twig debug模式,这样会在渲染页面模板的时候告诉你使用了哪一个模板,并给你一些参考用的模板建议。关于模板和模板建议,我们以后还会讲,这里,你只要能将twig debug模式开启即可。

 

第8行是自动刷新,当值为true时,一旦源代码被修改,就会自动重新编译twig模板。

 

6、关闭缓存,检查网站是否出错

回到settings.local.php文件中,把67行和84行的代码前面的注释符号删除

/**
 * Disable the render cache (this includes the page cache).
 *
 * Note: you should test with the render cache enabled, to ensure the correct
 * cacheability metadata is present. However, in the early stages of
 * development, you may want to disable it.
 *
 * This setting disables the render cache by using the Null cache back-end
 * defined by the development.services.yml file above.
 *
 * Do not use this setting until after the site is installed.
 */

$settings['cache']['bins']['render']='cache.backend.null';

/**
 * Disable Dynamic Page Cache.
 *
 * Note: you should test with Dynamic Page Cache enabled, to ensure the correct
 * cacheability metadata is present (and hence the expected behavior). However,
 * in the early stages of development, you may want to disable it.
 */

$settings['cache']['bins']['dynamic_page_cache']='cache.backend.null';