Drupal
文章平均质量分 83
Drupal相关内容
u011474028
这个作者很懒,什么都没留下…
展开
-
为什么说Drupal是软件开发者的未来
如果你要寻找世界最顶级的软件开发基础设施,一定会找到Wordpress和Dupal,因为他们各自占据着一个世界第一,来看2022年中国开源社区网络例会视频分享原创 2022-06-13 11:09:52 · 907 阅读 · 0 评论 -
Wordpress与Drupal对比,如何选择?适合自己的才是正确的
要详细对比Wordpress与Drupal并不简单,它们都有个公认的世界之最的头衔:Wordpress是世界使用占有率最高的CMS,Drupal是世界最强大、灵活的CMS,要同时深入掌握这两个系统不是一件容易的事情,能够做到的人少之又少,因此能够客观对比评价的文章也非常之少,很幸运这里找到一家总部位于美国德克萨斯州的叫BigTuna的公司,他们从2007年用Wordpress为客户开发网站,到现在混合使用Drupal,他们给出了一篇对比原创 2022-04-15 16:32:30 · 1559 阅读 · 0 评论 -
Drupal电子商务系统有何特性?
使用主要特性:产品模型自定义,支持任意商品 自定义产品属性组合选项售卖 成熟的多语言、多时区、本地化系统 多店铺,针对地域、行业等分类营销 全球货币支持,自定义货币代码 支持全球所有支付结算机构,开箱即用 良好的本地化人名、地址、电话支持 完善的仓储、物流、支付、评价管理 结算流程灵活按需定义 支持所有国家差异化税务处理 订单状态、流程详细记录备查 基于角色的权限控制体系管理团队市场及推广主要特性:SEO全支持,搜索引擎元数据全自定义 限时购、满减、买送等促销已默认提供原创 2021-12-21 08:44:54 · 244 阅读 · 0 评论 -
云客Drupal源码分析之控制器执行及其解析器controller_resolver
在drupal的HttpKernel核心中使用控制器解析器来取得要执行的控制器,以及解析出控制器需要的参数除此之外也在多个地方用到它,比如渲染数组的回调解析,是一个重点内容它的服务ID为:controller_resolver,接受以下两个参数:psr7.http_message_factory:用于创建psr7描述的请求对象(关于这个请看:http://www.php-fig.o原创 2016-11-26 16:26:15 · 871 阅读 · 0 评论 -
云客Drupal8源码分析之钩子、模块处理器、函数定义
元旦刚刚过去,继续保持一周一篇的速度,这是Drupal8云客源码分析系列在2017年的开篇,来讲几个极其重要的内容,它们是钩子、模块处理器、函数定义。钩子:如果是开发新手可能对这个慨念陌生而好奇,许多工作多年的工程师可能对它也缺乏深度理解,不止是在php中,它其实是软件工程中的重要慨念,什么意思呢?为什么要叫做钩子?既然叫做钩子直觉的就会联想到钩什么?怎么钩?简单而直接的回答就是在软件运行原创 2017-01-06 14:09:34 · 1503 阅读 · 0 评论 -
云客Drupal源码分析之网站维护模式
当drupal8的网站需要升级、导入内容、备份、更改内容类型等等会影响访问用户的时候需要开启维护模式,操作路径是:管理-配置-开发-维护模式开启维护模式并输入提示内容即可,在提示内容中@site可以代表当前站点的名称,除此外没有其他变量你们维护模式是怎么实现的呢?这就是本篇的主题:判断维护模式的工作是在处理核心派发kernel.request事件的时候进行的,优先级低于路由判断,也原创 2016-11-22 17:45:09 · 976 阅读 · 0 评论 -
云客Drupal源码分析之渲染占位符及其产生器
渲染占位符及渲染占位符产生器drupal使用渲染占位符机制的目的是为了提高系统性能,具体来讲就是提高缓存利用率和效率具体解决以下问题:1:有时候页面是一模一样的,仅仅某一元素不一样,比如一个页面仅显示的用户名不一样,如果有一万的用户岂不是要在缓存中保存一万份?这是不划算的,也不合理,这种现象叫做上下文基数过大2:有些内容变化频率特别快,几秒钟就变化,甚至更短,这个时候缓存的原创 2017-01-13 17:17:21 · 463 阅读 · 0 评论 -
云客Drupal源码分析之渲染缓存RenderCache
渲染数组被渲染的时候,为了提高性能,会将渲染结果保存到缓存中,这样就避免了重复渲染并且每个子元素的渲染结果都可以被独立缓存,如此一来子元素也可以避免重复渲染不过缓存中保存的渲染数组是经过简化的,渲染缓存默认只缓存以下内容,这样经简化的数组叫做“CacheableRenderArray”:$elements = [ '#markup' => $elements['#marku原创 2017-01-20 08:55:47 · 580 阅读 · 0 评论 -
云客Drupal源码分析之前言
Drupal是一个非常优秀的网站系统,可以说她是一个网站应用开发框架,也可以说是一个cms,她在世界范围内被广泛使用,最为人所知的是美国白宫、联合国等知名机构的官方网站使用了她,随着Drupal8的来到,她又达到了一个全新的高度,全面的由面向过程开发转为面向对象开发,代码全部重写,实现几乎和以前的版本完全不同,所以她可以作为一个全新的起点去开始drupal之路,而不管之前是否是drupal的用户;原创 2016-09-13 12:46:40 · 1012 阅读 · 0 评论 -
云客Drupal源码分析之自动加载器与Composer
自动加载器:drupal8启动的第一步就是创建自动加载器,自动加载器是什么玩意?它是怎么产生的?在面向对象的php程序开发的时候,要实例化一个类对象则需要先加载类定义文件,当php发现并没有包含类定义文件时,并不会立即报错,它会去一个列队里面依次调用里面定义的函数或者方法,如果在这个过程中类定义文件被加载了,则返回继续实例化对象,程序可以没有问题的继续执行,否则程序报错,那么这个列队里原创 2016-09-13 16:45:27 · 962 阅读 · 0 评论 -
云客Drupal源码分析之请求对象Request及请求堆栈
drupal8是建立在Symfony组件之上,Symfony认为网站系统无非就是一个将请求转化为响应的系统,并以此设计执行流程,drupal8也是如此,所以整个系统运行之初就是建立请求对象,这个对象将贯穿整个程序,被各个模块访问。建立请求对象也是为适应面向对象开发方式,这个对象将把以前面向过程式程序设计经常使用的系统输入、环境变量、cookies、session等等数据封装起来,后续程序仅仅面原创 2016-09-14 17:34:49 · 914 阅读 · 0 评论 -
云客Drupal源码分析之响应对象Response及Cookie设置
要理解这一部分推荐先了解RFC2616文档,RFC文档就是互联网技术的魂,该文档定义了http协议,里面详细阐述了各类http头的使用,作为补充材料可以看一看上野宣所著的《图解HTTP》一书,于均良翻译,(题外话:日本人写的技术书籍大多比较踏实,印象深刻的是远山启写的《数学与生活》简述极限概念的时候比国内高等教育教科书好太多,希望国内多出好书,)Drupal8使用了symfony框架的ht原创 2016-09-19 15:14:15 · 899 阅读 · 0 评论 -
云客Drupal源码分析之Session系统
Session在网站中扮演非常重要的角色,储存临时用户数据、登录数据等等都用到了它,Drupal8使用到了Symfony的Session组件,该组件非常强大灵活,drupal8又此基础上有所改造和扩展,要理解Symfony的Session组件让我们先从原生php的Session机制说起:php原生的Session采用服务器文件系统储存用户会话数据,这对一般小型网站足够了,但php做的远非如此,原创 2016-09-20 17:00:11 · 988 阅读 · 0 评论 -
云客Drupal源码分析之服务容器及Symfony依赖注入组件
迟迟未写这个主题是因为它太重要,以至于是drupal8系统运行的一个阶段性标识,它贯穿整个系统,服务容器及Symfony依赖注入组件是drupal8系统的中枢,学习的重中之重很多新同学可能对“服务容器”、“依赖注入”这样的词感觉陌生,其实非常简单,只是名字玄乎而已,下面解释一下:何为依赖注入?当一个对象的运行要依靠另外一个对象的帮助,那么就是依赖,把这个依赖的对象保存到本对象的属性中以原创 2016-09-22 15:59:39 · 1235 阅读 · 0 评论 -
云客Drupal源码分析之HttpKernel堆栈
HttpKernel为何物?从名字可以看出它就是处理http请求的核心,只需要把请求对象传给它,就返回响应对象,一次http访问大体上就算完成了(为什么说是大体上,在实际应用中发送完响应还会做一些类似于析构函数工作的事情),为规范统一HttpKernel的使用symfony为此定义了HttpKernel接口,位于\vendor\symfony\http-kernel\HttpKernelInter原创 2016-09-22 17:53:36 · 1107 阅读 · 0 评论 -
云客Drupal源码分析之缓存系统Cache
在介绍drupal8的缓存系统前我们先了解一下缓存系统的本质及特性,缓存的存在依赖于两个目的:节省资源和提高速度,起不到这两作用则缓存没有存在的必要,当一个结果需要进行大量计算才能得到,而它又不会频繁更新那么缓存结果可以节省大量算力,缓存的是一个结果,这个结果可以存放在多台服务器上面实现负载均衡,从而进一步提高访问速度,在高访问网站中缓存非常重要,drupal8的缓存设计也是围绕这两个目的而设计。原创 2016-09-30 15:44:59 · 1596 阅读 · 0 评论 -
云客Drupal源码分析之页面缓存PageCache的请求策略RequestPolicy及响应策略ResponsePolicy
在drupal8中提供了两个页面缓存模块,一个是PageCache用于匿名访问时,一个是dynamic_page_cache用于处理任意用户的页面缓存,后者进一步运用缓存能力。他们都有对应的请求策略及响应策略。那么这两种策略如何运作?作用是什么呢?请看下面先讲讲用于匿名用户的页面缓存PageCache的请求响应策略:RequestPolicy:请求策略,用于判定评估请求是否允许利用匿名页面缓存,如...原创 2016-10-09 16:34:00 · 831 阅读 · 0 评论 -
云客Drupal源码分析之php流Streams、公共文件、私有文件
在开始这个主题前我们做一个实验,在你的drupal8模块控制器中加一行代码:file_put_contents("public://yunke.txt","Streams test");然后访问这个控制器,看看发生了什么?没错页面上不会有什么改变,但也没有报告什么错误,那这行代码到底干了什么?作为开发者你应该很熟悉file_put_contents()这个函数,代码意思是将"Strea原创 2016-10-15 17:23:24 · 1767 阅读 · 0 评论 -
云客Drupal源码分析之Session进阶
在本系列之前写过《云客Drupal8源码分析之Session系统》,但那部分仅仅讲到了drupal8会话的基础:Symfony的Session组件至于drupal怎么去使用这个基础就是本主题的内容,本主题是延续篇,将讲述drupal8的全部Session知识请先看上篇,再继续关于drupal8的Session代码除了Symfony的Session组件外,全部都放在了:\core\lib原创 2016-10-18 17:51:53 · 897 阅读 · 0 评论 -
云客Drupal源码分析之数据库Schema及创建数据表
本主题讲解数据库系统如何操作Schema(创建修改数据库、数据表、字段;判断它们的存在性等等),以及模块如何通过一个结构化数组去创建自己用到的数据表原创 2016-10-29 20:59:04 · 1595 阅读 · 0 评论 -
云客Drupal源码分析之核心处理流程HttpKernel(drupal8执行流程)
有人问云客drupal8源码分析系列文章有顺序规律吗?我的回答是有!从第一篇开始以来她是按照drupal的执行流程分主题进行的,除前言外,已经发布12篇了,如果你是跟着drupal8的执行流程进行研究学习的,那么这些文章就像站在路旁等着你的引路人为你揭开一些迷惑的问题,drupal很大,前方很远,有时候你可能感觉站在一望无际的平原,眼前只有遥远天际的落日昏辉,希望这些引路人让走在这条路上的你不那么原创 2016-11-03 15:27:09 · 2724 阅读 · 0 评论 -
云客Drupal源码分析之认证Authentication系统、认证提供器
在drupal8中如何判定请求来源于已认证用户?不带认证信息的请求视作匿名用户,带认证信息的所有请求都需要认证,不能通过认证的请求显示质询界面,会话ID就是一种认证信息。那么是何时又是如何认证的呢?这就是本篇的主题。认证系统是在何时开始运作的呢?它是在核心派发kernel.request事件时触发的,在认证订阅器AuthenticationSubscriber中完成这个时机是比较早的,在得原创 2016-11-07 12:19:49 · 1054 阅读 · 0 评论 -
云客Drupal源码分析之路由系统Route
drupal8使用的路由系统很强大,在系统中是一个比较大的子系统,它基于Symfony路由组件,所以请务必先学习Symfony的路由组件。Symfony路由组件的官网文档地址是:http://symfony.com/components/Routing路由是什么呢?就是一个请求到达后决定由谁去处理的系统,它决定着处理流程的去向,一些比较小的系统路由设计会针对网址特定的格式或元素判断谁来处理原创 2016-11-17 20:20:45 · 2309 阅读 · 0 评论 -
云客Drupal8源码分析之渲染上下文RenderContext、渲染器renderer
当drupal的控制器返回渲染数组的时候,系统会派发视图事件,渲染数组被main_content_view_subscriber(主内容视图订阅器)处理,它根据请求的格式,将系统流程定向到对应的格式渲染器,系统默认提供了四个格式渲染器,他们被定义在容器的main_content_renderers参数里面,其中html格式对应的是服务id为“main_content_renderer.html”的原创 2016-12-20 18:59:55 · 897 阅读 · 0 评论 -
云客Drupal8源码分析之页面标题
本篇主题讲解drupal8系统是如何计算页面标题的,标题很重要,尤其对于搜索引擎优化来说,标题权重很高页面有标题当然是针对请求格式为html而言,在整个执行流程中如果控制器直接返回响应对象,那么标题计算就在控制器中随意进行流程仅仅停留在Symfony的渲染管道中,如果控制器返回的是渲染数组,那么将派发视图事件,主内容视图订阅器MainContentViewSubscriber将判断请求格式原创 2016-12-07 11:21:41 · 812 阅读 · 0 评论 -
云客Drupal8源码分析之缓存上下文CacheContext
“上下文Context”这个词是什么意思呢?平常生活中它常见于语言、文字交流里面,意思是当前交流处于一个特定的环境下,依托前面的内容交流才有意义比如这句话:“他正在学习drupal”,如果单独说是没有意义的,因为你不知道“他”指代谁,在交流中前面一定定义清楚了“他”是谁,这个“他”就是上下文,这个谁就是上下文的值在软件工程中,上下文是一种属性的有序序列,它们为驻留在环境内的对象定义环境。不原创 2016-12-30 14:13:56 · 832 阅读 · 0 评论 -
云客Drupal源码分析之合并数组
在drupal8的源码实现中有非常多的合并数组操作,这本是php层面的知识,但鉴于用的如此之多,而且drupal还专门实现了一种合并方法,所以特别设置一个主题来讲解。合并php数组主要有以下几个方法:1:通过“+”操作符号进行数组相加的前保留合并2:函数:array_merge 后保留合并3:array_merge_recursive 递归且全保留合并4:drupal实现的条件原创 2017-02-04 09:10:19 · 420 阅读 · 0 评论 -
云客Drupal源码分析之插件系统(上)
插件系统是drupal中非常重要的一块内容,非常多的地方用到了它,本系列将分上下两篇来讲解它,上篇为基本内容,能一窥插件全貌和常见使用,下篇为高级使用插件是什么?在读本篇前强烈建议看完本系列前面关于钩子的介绍,插件本质上就是使用面向对象程序开发模式实现的钩子,但它比钩子系统更加先进灵活,钩子是相对于面向过程程序开发而言,狭义点讲,一个钩子就是一个函数,一个插件就是一个类。原创 2017-03-29 17:31:31 · 728 阅读 · 0 评论 -
云客Drupal源码分析之渲染数组的元素类型
在drupal控制器中返回的渲染数组及子渲染数组(注:不同于子元素,以“子渲染数组”这个名词表示非#开始的数组子元素)可以选择性的指定元素类型,也就是渲染数组的$elements['#type']值,这里讲的元素类型,不同于html的元素类型,后者往原创 2017-03-29 17:41:12 · 517 阅读 · 0 评论 -
云客Drupal源码分析之状态信息state及键值储存系统
在drupal中的信息可以分为四类:内容Content:用于被显示的内容,文章、新闻、基本页、图片、文件、自定义块等等,内容的储存和访问是通过实体Entities来进行的会话Session:用户和站点的交互信息,它其实是状态数据,但使用不同的储存机制,所以单独成为一类,可以通过请求对象获取,见本系列关于session 的介绍状态State:原创 2017-03-29 17:44:50 · 722 阅读 · 0 评论 -
云客Drupal源码分析之类型化数据Typed Data API
了解一样事物,如果不知道它是用来干什么的,那么学习起来就会很困难,不知道需求很难理解它的设计, drupal8中的类型化数据就是这样典型的情景,学习字段api和非常重要的实体之前需要明白此组件。为什么需要类型化数据?php为我们提供了基础的数据类型,如整型、字符串、类、接原创 2017-03-29 17:49:08 · 576 阅读 · 0 评论 -
云客Drupal源码分析之symfony验证器组件validator
前言:本篇是为理解《云客drupal8源码分析之验证器》做准备的(drupal8使用了symfony的验证器,在读那篇前应先读本篇),但本篇完全独立介绍symfony验证器validator,基于3.2版本,可看做是symfony验证器validator组件的独立文档,官网文档地址:http://symfony.com/doc/current/components/validator.html,推荐先看官网文档,本文档将补充讲述官网文档未提到或者含义模糊的地方。原创 2017-03-29 17:53:51 · 464 阅读 · 0 评论 -
云客Drupal源码分析之数据验证Validation
drupal8的验证组件是基于symfony验证器组件的,为此本系列专门写了篇教程来独立介绍symfony的验证器validator,在看本篇前务必先阅读那篇教程,目前drupal8使用的symfony/validator为2.8版本,该教程以3.2版本做介绍,但不必担心,2.8版本和3.2版本相比变化不大,基本相同,为向前考虑作此安排,排除了许多弃用功能对学习者的影响,该教程可算是本篇的上篇,本篇不再对基本概念做介绍,仅介绍drupal8对symfony验证器validator的改动和运用原创 2017-03-29 17:56:46 · 382 阅读 · 0 评论 -
云客Drupal源码分析之国际化Internationalization:核心翻译系统
在开始新系统的学习前,建议先闭上眼睛想一下如果是自己来设计,会怎么实现呢,这会很有趣,而且对后面的学习大有帮助,也可避免出现填鸭式教育学习的饱腹感导致的情绪上的波动甚至厌烦,比如翻译系统我们就可以这样思考:网站中有许多文本,短的如菜单文本、长的有整篇文章、中长的有功能提示说明等,各文本属性又不同,有的属于系统界面,有的属于内容,而且来源也不同,有的是系统自带,有的是用户提交,怎么储存翻译结果呢?又怎么识别不同翻译指的是同原创 2017-03-29 18:00:49 · 559 阅读 · 0 评论 -
云客Drupal源码分析之通用唯一识别码UUID
先来看一个问题:假设一个网络系统每秒钟需要保存数十万来自用户提交的信息,并分配一个id给每条信息用于以后唯一标识它,那么怎么产生这个id呢?不能重复又要足够快以支持高并发,有这么强大的单台服务器吗?即便有,随着并发加大也是很难满足的,看来从设计上不能依赖于单台服务器。此外有些信息对象会跨系统存在,由于业务原因,需要进行全局唯一标识,比如一个业务单号,业务只关注这个业务单本身而不关注当前是哪台服务器原创 2017-04-28 14:10:07 · 1151 阅读 · 0 评论 -
云客Drupal源码分析之实体Entity概述
第一次在软件开发领域听说“实体Entity”是不是有点蒙圈不知道在说什么呢?我们经常有听过实体经济,但软件里面实体是个什么鬼?这个名词怎么来的?和那有什么关系么?drupal里面实体好像还很重要,甚至有人说drupal里面一切皆是实体;这个词在感觉上很不直观,有些读者觉得drupal难学,可能就是体现在这些地方吧,entity的英文翻译为:实体、本质、存在、物体,其实在不同的领域对实体有不同...原创 2017-04-14 11:44:09 · 2167 阅读 · 0 评论 -
云客Drupal源码分析之实体类型管理器、实体类型、实体Entity
如果对实体这个概念还不清楚的话请阅读本系列的《实体概述》,本篇将开始讲解drupal8的实体系统,是关于实体系统的一个开始,有许多内容会在后续主题中连续发布,学习它所需基础知识比较多,但如果是跟着本系列发布顺序一直看到这里那么所需基础知识你已经具备了,如果有欠缺请翻看前面的主题,在后续主题中如果需要基础知识将会先原创 2017-04-21 14:24:38 · 800 阅读 · 0 评论 -
云客Drupal源码分析之权限系统(下)
在权限系统的上篇中详细介绍了入站权限检查,在下篇中将介绍业务逻辑权限检查,也就是在管理后台中看到的账户、权限、角色以及涉及管理业务逻辑的权限检查等内容,让我们从这里开始:账户、角色、权限:Drupal的权限系统采用了基于角色的访问控制RBAC(Role-Based Access Control),许多现代系统均采用RBAC,它相较于传统的访问控制,就犹如oop相较于过程式编程带来的提升一样,为大...原创 2017-05-12 14:59:44 · 836 阅读 · 0 评论 -
云客Drupal源码分析之权限系统(上)
系统权限设计架构:权限系统的终极目的是判断在某情景下谁能对某物做什么或者不能做什么,可以看出有三个基本要素:操作者、被操作者、操作环境(或者叫上下文),对应的权限系统就好像一个警卫,房间里面是被操作者,操作者要进入房间去操作被操作者,此时门卫会根据情况来做判断,允许就放其进入,反之拒绝,一旦进入了,警卫就不管操作者具体要做什么了,如果要进行更加细粒度的权限检查那么就把被操作者拆分成更小的部分,原创 2017-05-05 14:57:45 · 1239 阅读 · 0 评论 -
云客Drupal源码分析之配置系统Configuration(一)
在cms中配置信息非常重要,储存管理员及模块的各种设定,以它指导系统行为等等,在系统中是四大类信息(内容、会话、状态、配置)之一,drupal中配置系统是一个比较大且重要的系统,本系列将分多节进行讲解。配置信息是可以在两个安装实例之间转移的,比如在开发站点导出配置,然后在生产站点导入,而状态信息是不能转移的,可以重置,重置后状态信息消失,配置信息继续有效,针对配置信息可以导入导出,有此功能就可以支持用版本控原创 2017-05-27 16:13:09 · 656 阅读 · 0 评论