本人从2010年开始使用Drupal,比此前使用的MediaWiki更符合通用的建站要求,Drupal对多语言、多站点的支持也是我选择它的重要因素。从最开始的6.x到7.x再到8.x,我一直都在使用,在这过程中需要修改模板、自建模块,也学会了PHP以及其它一些技术。在本博客中我也记录了很多日常使用Drupal中遇到的问题、解决的办法,希望对其他使用Drupal的朋友有所帮助。

这是 Drupal 分类的页面,点击下面标题查看详细文章内容:
本人从2010年开始使用Drupal,比此前使用的MediaWiki更符合通用的建站要求,Drupal对多语言、多站点的支持也是我选择它的重要因素。从最开始的6.x到7.x再到8.x,我一直都在使用,在这过程中需要修改模板、自建模块,也学会了PHP以及其它一些技术。在本博客中我也记录了很多日常使用Drupal中遇到的问题、解决的办法,希望对其他使用Drupal的朋友有所帮助。


最近同事在整理电话号码库数据的时候,发现省市区几级数据有很多不规范的地方,造成简称全称重叠、省市区级别错乱等问题,后来找到标准的行政划分名称,在数据库进行了批量替换,但以前存在的页面现在不存在了,会造成大量死链接,需要做301跳转来保存可访问性。
晚上找了一些办法:
Drupal里面Views功能很方便、强大,而在PHP程序中调用Views的Page或者Block也很需要,有时还可以起到替代写SQL语句的作用,不过需要带参数变量Block的调用不太常见,以前用过也老是忘记调用办法,昨天又花时间找了一下,现在就记录下面,免得以后又到处去找。
views_embed_view('views_name', 'page_or_block_id', 'variable');
详情请看Drupal官方网站中的API文档:views_embed_view
这两年我们新建网站多数都采用了《在Drupal中直接导入、使用数据库》这篇文章中说的办法,而没有用以前新建内容类型、导入到Drupal的Node中的办法,这对于数据量大、改动不大、读取多、写入少的需求很合适。
偶尔遇到需要修改、删除的事情,我们就是到阿里云RDS管理后台,Web界面来操作或者用SQL语句来进行,比以前在Node页面进行编辑要麻烦,但更改量不大的情况下也可以接受。
最近要用的一个新站也是用直接建表方式来搭建的,但内容需要人工来修改完善,而且是长久都需要添加、维护信息的,再用以前导入RDS后台就显得太麻烦了,于是想去找现成的
这段时间我们有个网站不断更新内容,流量在不断增长的同时,也引来了大量采集者,现在的采集者已经非常专业了,IP池不断更换,User Agent也随机变化,甚至Referer也做了不同的伪装,让我们花了很多时间来分析Apache日志,不断修改屏蔽条件,斗智斗勇。先以为是百度爬虫太快,把百度爬虫进行了专门的临时503处理,360爬虫干脆全部屏蔽了,但发现还是不行,非正规搜索引擎的采集者带来的麻烦依然不断。🤔
为了不影响用户访问,下血本把阿里云服务器从8核16G升级为16核32G,基本可以解决ECS负载飙升的问题,但RDS数据库服务器还是会遇到查询语句堆积的情况,我们
我们从去年开始新做的Drupal网站基本上没有再采用新建内容类型的方式了,不使用node页面,而是采用在MySQL中自建table的方式,这样在数据量大的情况下,对于速度的提升很明显。
但涉及到老的网站已经用node建立了很多页面,想要改为table的方式,就需要读取node中的信息,转移到table中去,可以采用php调用Drupal API,但效率不高,数据量大的情况下需要很长时间运行,后来尝试用MySQL语句,也可以顺利进行,现在来补充做个笔记,下面是Drupal 7网站迁移数据的MySQL语句示例:
INSERT INTO
很多年前我们Drupal网站采用了Bartik主题作为电脑版、Mobile主题作为手机版,两个版本采用不同的网址可以互相跳转切换,后来进行了改版,把电脑版、手机版合二为一做成了响应式版本,使用的主题是Responsive Bartik。投放广告则采用了Google AdSense的响应式广告代码。
最近因为国内浏览器、运营商对AdSense屏蔽太狠,所以部分国内站改用了百度联盟的广告,并试用了反广告屏蔽代码,效果还不错。但百度联盟一直都没有响应式格式广告代码可用,只能分为手机、电脑两种版本来创建广告单元、获取代码。
在MediaWiki
前段时间进行改造MediaWiki网站符合百度熊掌号验证的时候接触到ld+json数据,这是加到head里面的一种结构化数据,用来告诉搜索引擎一些关于页面更新时间等元素。
后来在Google Search Console里面收到这样的报错提示“检测到了新的AMP问题:必需的结构化数据元素有误”,仔细查看是“所链接到的 AMP 版本有效,但收到了警告
It is eligible for some AMP-specific features in Google Search results, but is not
Memcache几年前我们就开始在Drupal站上启用,对于降低数据库负载的作用很明显,偶尔会出现Memcache自己停了需要重启Memcache服务的情况,但很少很少,几个月也难得一次。
6月底开始申请熊掌号后,重新提交URL、提交MIP版本/AMP版本,带来大量百度爬虫,服务器负载明显增高,另外其它采集者也多起来了,导致我们网站有一阵子总是卡住,甚至随机出现白屏打不开的情况,这种白屏故障会一直持续,直到用drush cc all清理缓存后恢复。
这对网站的访问影响太大了,如果没有及时发现,可能几个小时、半天都打不开,仔细查看RDS的
很久前就使用Drupal做多语言网站,采用了Drupal自带的多语言支持,对于需要大量翻译的词汇,采用自定义模块配套的.po文件来导入翻译内容。
以前翻译一些外文的时候用到Google翻译,总是在Web界面进行:https://translate.google.cn/ 或者 https://translate.google.com/ ,将需要翻译的词、句输入,翻译后将输出内容复制、粘贴到.po文件或者直接粘贴到Drupal的翻译界面。
但如果需要翻译的词、句量很大,或者需要翻译的目标语言很多的时候,反复复制粘贴都是一
Drupal网站有站点联络功能,是通过填写contact表单来发送邮件实现的,我们总是收到一些来自俄罗斯的垃圾邮件,这些俄罗斯黑客有一定技术,可以识别图片验证码,使我们的主要反垃圾措施失效,但垃圾终究是垃圾,这种长期自动骚扰别人的做法,这世界上做得最多的就是俄罗斯人和中国人了,真是为国家丢脸,希望中国人干这些事的人以后少些吧。
早就想找办法来屏蔽,本来Drupal还自己带有“触发”、“动作”机制的,但好像原来屏蔽关键词就没有实验成功,所以这次干脆找底层API来解决,通过1个小时的摸索,找到了办法。
2002-2023 v11.7 a-j-e-0