2018年3月6日星期二

Magento2 --- 创建主题

1、主题包中的基础元素
a.Magento2中的主题结构
Magento2的MVC结构比Magento1中更加明了。Magento2模块将添加View元素到模块文件结构里。以Catalog为例:app/code/Magento/Catalog/
这里写图片描述
注意,View元素和Controller,Model在同一位置。展开View文件夹,你将看到:
这里写图片描述
你可以看到,这个结构下有3个元素,他们是从 标签移出来的。 文件结构展开以后包含layout, templates, web。例如,frontend有3个基础文件夹:
这里写图片描述
Layout(布局)文件夹包含所有模块的布局文件(类似于Magento 1.x,布局文件包含在主题文件夹的Layout里)。当然,这些布局的代码有不同的结构。我将在后面具体的部分说明。
Template(模板)文件夹有所有的.phtml文件,和Magento1中一样由php和html代码混合而成,用来渲染成html。
Web文件夹是Magento2中新出现的文件夹,你可以从下图看到它的组成:
这里写图片描述
不难看出,它里面包含了CSS,JS和Images文件夹。也就是说,在Magento2中,旧的skin文件夹被划分到每个模块中去了,使得模块更加独立。
b.Layout
在Magento2中,每个模块有默认的布局,可以被重写或被另一个布局扩展。
例如:app/code/Magento/Catalog/view/frontend/layout/default.xml
Magento用特别的句柄来分离布局文件。
这里写图片描述
句柄的声明和之前规则一样catalog_product_view是一个根据模块和控制器动作命名的句柄。定义页面则需要更加具体的声明:catalog_product_view_type_simple_id_128。或者我们可以调用其它句柄。这里是关于Catalog模块布局文件位置的示例:
这里写图片描述
模块中有两种布局,Base layout和Theme layout。
Base layout是每个模块默认的布局区域。如果不是你自定义的模块,我们是不建议你直接修改这些文件的。
例如:app/design/frontend/Magento/blank/Magento_Checkout/layout/
__app/code/<Namespace>/<Module>|__/view|__/<area>|__/layout|–<layout_file1>.xml|–<layout_file2>.xml
  • 1
Theme layouts是模块的外部主题,允许通过报告主题文件中对应的<Namespace>_<lModule>来定制默认的主题布局。

例如:app/design/frontend/Magento/blank/Magento_Checkout/layout/
  • 1
  • 2
  • 3
这里写图片描述
创建一个布局文件要遵循下面的规则:
每个布局文件调用一个句柄,其它被调用;
布局文件的名字就是布局句柄的名字,例如:checkout_cart_index
布局文件在布局文件夹中被调用
例如:
<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<update handle="page_one_column" />
   <referenceContainer name="content">
   <!-- ... -->
   </referenceContainer>
</layout>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
下面描述布局文件的读取和处理顺序:
如果布局文件属于不同的模块,那么执行的顺序将是:独立模块,相关模块,然后按字母顺序排列;
如果文件属于同一个模块,那么就按文件名字的字母顺序排列。
布局系统执行的步骤
读取所有默认布局文件组(base),包括关联的那个;
决定继承和重写文件的顺序;
添加所有被展开的布局,替换掉base中的布局,获取父类布局,替换被子类重写的父类布局。
下面是布局进程的模型:
这里写图片描述
由此看以看出,布局文件是由上自下被重写的,父类主题重写模块中的base主题,子主题(一般是我们定义的主题)重写父类。例如:Module_One模块的布局文件layout_2在重写文件夹中的父类主题parent_theme里被声明。因此,系统会用parent_theme > Module_One > override > layout_2.xml替换掉Module_One > layout_2.xml。
布局/块区域:
和magento1一样,它分为基础的布局区域:
Container(容器):分配页面元素的区域
这里写图片描述
下面是一个布局内容示例:
<container name="container.1" label="Container 1"
as="container_1" output="1" htmlTag="div" htmlId="container-1"
htmlClass="container">
<block class="Magento\Module\Block\Class" name="block.1">
<container name="child.container" label="Child Container" as="child">
<block type="Magento\Module\Block\Class" name="block.2">
</container>
<block class="Magento\Module\Block\Class" name="block.3"/>
</container>
<container name="container.2" as="container_2" htmlTag="div"
htmlId="container-2" htmlClass="container"/>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
c.新语言风格LESS介绍
在定义主题元素之前,我们需要学习新的语言风格-LESS。在Magento2中这个语言很有趣。由于有一些高级的功能,LESS的添加级别要高于CSS。它被翻译成CSS得益于php中的LESS库。我们仍然允许在源码中添加CSS URL直接使用。
LESS语言的预处理是通过lib/internal/Magento/Css/PreProcesso中的库完成的。在LESS文件中的导入方式是:
file.less
@magento_import “<some_id>”;
@import “path/to/dir1/some_file”;@import “path/to/file/file1.less”;@import “path/to/file/file2.less”;
  • 1
  • 2
这里写图片描述
d.Mage_page元素
之前Magento版本中的Mage_page元素被Mangento_Theme模块替代了。

Google上做搜索引擎优化SEO 2018

在Google上做搜索引擎优化(SEO),最重要的是以下四点:

1、 明确页面目的
有些页面是介绍服务的,有些页面是表达观点的,有些页面是普及知识的。我自己曾经犯过的错误就是为了推广而推广——“不管页面内容是啥,我就是想提升它的排名”,恰恰这样是盲目的、难以得到回报的。每个页面的内容都是在为目的服务,所以明确页面目的有助于我们合理地编辑内容、安排设计。只有当实现页面的目的与满足客户的需求吻合时,SEO是最容易做的。(这是谷歌官方给出的页面质量评估指南【只有英文版】,其中评估页面质量的第一部分首先讲解的就是理解页面目的。另外,其中还有很多评估页面质量的细节,非常值得一看!)
当然,很多时候同样的搜索词,用户表达的需求也可能是多样的,通常我们的页面经常只能满足部分用户的需求。而谷歌的宗旨是将尽可能多用户需要的放在尽可能前面,这个时候我们可能就面临三种选择,“丰富页面内容以满足更多用户的需求”、“做好页面引导,让有其他需求的用户有地可去”、“进一步完善现有内容,让已满足需求的用户更加满意”。那具体来讲,需求到底是否得到满足、满足到啥程度,没人说得准,这个时候就需要参照用户在网站上的行为表现和数据反馈了。

2、 重视用户体验
就个人所见,用户在网站上的行为表现对排名结果的影响越来越大,这也是我在“重视用户体验”和“做好基础设置”中纠结了好久但依然将“重视用户体验”放在前面的原因。谷歌依然无法直接知道用户内心对某个页面、某个网站的感受,所以它需要数据反馈。首当其冲的数据就是用户来到这个页面后跳出率是多少、用户来到这个页面后在网站的停留时间有多长、用户查看完这个结果后是否还会返回到谷歌搜索查看其他结果。我们可能有过一种经历是,“这个网站看上去挺简单啊,咋排名这么好?”,很可能就是这个页面容易引起用户互动(包括停留、点击链接、点击音视频等)。
“咦,我们得根据用户体验调整设计和内容了?”——这就是谷歌一直想要的嘛,也是很多人强调的“回归内容”。但严谨地说,容易引起用户互动的内容并不一定就是真正能帮到用户的高质量内容,所以从数据反馈的角度来讲,这可能算个稍有取巧嫌疑的点吧。

3、 做好基础设置
这是谷歌官方给出的SEO初级指南(中文版、英文版)。虽然讲是初级指南,但就像初高中的数学课本一样,最本质的内容都讲到了,做的是好还是更好就看对知识点的运用了,这个部分就不额外讲了。

4、 引发外链
在SEO的领域,外链可能算是讨论得最多的了。我将其放到第四点并不是因为它不重要,只是因为目前想要做出对SEO有积极影响的外链越来越难了。大家都知道谷歌有个专门对抗互联网垃圾的团队,他们就是成天研究怎样判别互联网垃圾的。他们宣称的很多技术,例如识别付费链接等非自然链接,识别一个链接是否对用户有帮助等,我都不明白怎样实现的。但我曾经尝试过的,团队大量人手手打的内容相关外链、购买的高PR外链等都无法帮助排名。所以现在在Google Seo行业里,大家开始强调“引发外链”而不是“发外链”。常见的做法有,自己网站新发表了一篇高质量博文或者上线了一个有意义的功能,然后联系同行业或内容相关网站,向其表明我这篇博文(或者功能)他网站的用户可能也会喜欢(或者需要),他可以在网站上引用这篇博文(或者功能);或是将网站的页面、文章、图表等分享到一些公众平台上并注明出处,当有用户看到并在自己的网页引用你的这些资源时,它们通常都会主动给出链接。这个做法就对分享的内容质量有较高的要求,当然这也是谷歌希望看到的。

时间仓促,可能说得不够全面,如果想到更好的点或是更精准的表达就修正。

朱啸虎:在中国高大上的项目真的都是坑!

作为ofo背后的投资方,金沙江创投的朱啸虎这一次显然又押对宝了。在业界看来,有着“独角兽捕手”美誉的朱啸虎对投资时机点的把控可谓是专业,2016最火的直播和共享单车领域,朱啸虎一人就占了映客和 ofo 两个项目,再加上之前的饿了么,滴滴出行,小红书,让业界无不疑问: 为什么总是朱啸虎?
遍观金沙江的投资案例,不难看出朱啸虎是一名以”快“著称的投资人。他的投资价值判断有个3S标准:足够大的市场容量;能够容易并低成本的扩张;可持续性,有足够的壁垒以阻止潜在的竞争,有足够的垂直特殊性。作为一名成功的投资人,朱啸虎显然有着自己独特的一套投资哲学。
超声波有幸对朱啸虎进行了专访,并针对投资领域和创业者关注的一些主要问题进行了深入交流。
朱啸虎,金沙江创业投资基金合伙人。他专注于互联网、无线和企业IT投资。9年时间里,朱啸虎一共投资超过2亿美金,主导过30余个项目,其中包括滴滴出行、饿了么、小红书、回家吃饭、ofo等明星项目,所辖基金的收益率在10倍以上。
BP方面
商业计划书(BP)作为打通初创公司与投资机构的重要载体,很大程度上决定了VC是否投资的第一印象,堪称是创业者融资的“敲门砖”。但不少创业者对BP的理解还存在诸多歧义,太多的主观臆断造成最后的融资失败。那么,什么样的BP才能打动投资人呢?朱啸虎认为:“BP一定不要写的太复杂,把事情讲清楚就行,一两页纸就够了。讲你做什么事情,你的产品是什么背景,太厚了投资人没时间看。”
团队方面
团队是创业必不可少的一部分,成功的创业个案大都与是否有效发挥团队协作密切相关。什么样的团队才能在激烈的竞争环境中吸引投资人呢?在朱啸虎看来,做的事情和人要匹配很重要,现在不同的事情需要基点是不一样的,所以做的事情和创业者的基点是有匹配的。而且他还强调,一个创业团队最重要的是诚实,这不仅是投资人看重的特质,同样决定创业生死的一大关键。同时,他还表示在投平台性业务时,会首先看看团队,只要是一流团队,A轮价格再贵也是有投资价值的。
项目方面
朱啸虎认为,目前依然很少有技术创新的创业公司成功突围,主流的还是商业模式的创新,“在中国创新,一定要接地气,千万不要想着那些高大上的东西,高大上的东西真的都是坑。”一个接地气的创业项目,一定是与中国人的具体需求所契合的。看似高大上的项目,除了一个舶来的高级概念,在中国的具体国情下是不具备落地能力的,更别谈模式壁垒了。同时,朱啸虎认为今年创业大环境相比去年的最大不同是回归了商业本质,只有那些实际解决商业需求和痛点的项目,最终才能获得投资人青睐。
趋势方面
关于趋势的准确判断,是朱啸虎投资“快、准、狠”的关键。他认为创业者踩准风口很关键,风口就是大的创业周期和主题,比如O2O的周期已过,现在再去融资会便变得困难。而对于眼下火爆的的VR、AR投资热,朱啸虎认为其中泡沫要远高于机会,“任何一个新科技出来,都会有一个S曲线,AR、VR现在刚刚经过第一个上升曲线,马上要进入死亡潮。”朱啸虎表示今年最看好的是直播和共享经济。
投后方面
投后管理是项目投资周期中重要组成部分,也是投资基金“募、投、管、退”四要点之一。投后管理关系到投资项目的发展与退出方案的实现,良好的投后管理将会从主动层面减少或消除潜在的投资风险,实现投资的保值增值。在投后管理上,朱啸虎认为创业者找的不是一个投资人,而是一个真正懂你的投资合伙人。对于项目,投资人不仅要保证资金到位,还要以合伙人的身份参与到企业中,给予创业者正确的发展建议。这也是金沙江创投所倡导的投后理念。
创投与生活方面
朱啸虎透露,自己平常的爱好是健身、跑步和阅读。在阅读方面,朱啸虎表示自己看的书很多,很杂,除了涉猎基本的创投领域书籍以外,他还建议年轻的投资人可以多看看过去历史,“互联网经过很多历史,很多次的发展,不是第一次,所以我觉得大家多看历史,历史可以告诉我们很多事情。”
最后,朱啸虎对创业者也提出了建议,即创业之前一定要进行思考。很多人可能在创业前都没想明白,这个模式到底有没有机会,想的更仔细一点,到底这个模式对不对,到底这个方向有没有机会,做起来以后,能不能守得住,都是创业成败的关键。
本文来自品途商业评论。变革家采用本文仅为信息提示之目的,不代表变革家对观点赞同或支持。优质项目推荐、创业项目拆解、核心风险提示、身边商机发掘,变革家让您捕捉更多商机、规避更多风险。

Magento2没有管理员目录类别的链接访问 - 抛出错误页面

安装安全补丁SPUEE-1533&SPUEE-5344后,品类经理显示错误页面,而不是品类经理。任何人有任何了解这个错误?我难倒了,我不明白这些错误的意思。
你可能已经卸载名字类似通古斯的延伸,已经离开类别属性后面依赖于它。
Magento的不具有管理用户界面的类别属性,所以这些都需要进行手动清理。这是你要首先尝试在你的开发站点的过程 - 如果你没有,你有更大的问题开发站点。
最简单的方法可能是看在你的Magento DB中[prefix_] eav_attribute表,并查找与属性代码sw_lg_cat_design行 - 这很可能将在source_model领域通古斯/ system_config_source_attribute_columns。消隐source_model领域将可能让你的页面加载,或者完全删除该属性可能是一种选择 - 但直到你明白这是什么一样,你在打破别的东西的高风险。
另一种选择是从你的Legenda主题的提供商寻求支持,并要求他们一个干净的卸载程序。

a:5:{i:0;s:104:"Source model
"legenda/system_config_source_attribute_columns" not found for
attribute "sw_lg_cat_design"";i:1;s:4073:"

`#0 /home/MY_Site/public_html/app/code/core/Mage/Eav/Model/Entity/Attribute/Abstract.php(387):`
Mage::exception('Mage_Eav', 'Source model "l...')

`#1 /home/MY_Site/public_html/app/code/core/Mage/Adminhtml/Block/Widget/Form.php(201):`
Mage_Eav_Model_Entity_Attribute_Abstract->getSource()

`#2 /home/MY_Site/public_html/app/code/core/Mage/Adminhtml/Block/Catalog/Category/Tab/Attributes.php(113):`
Mage_Adminhtml_Block_Widget_Form->_setFieldset(Array,
Object(Varien_Data_Form_Element_Fieldset))

`#3 /home/MY_Site/public_html/app/code/core/Mage/Adminhtml/Block/Widget/Form.php(144):`
Mage_Adminhtml_Block_Catalog_Category_Tab_Attributes->_prepareForm()

`#4 /home/MY_Site/public_html/app/code/core/Mage/Core/Block/Abstract.php(862):`
Mage_Adminhtml_Block_Widget_Form->_beforeToHtml()

`#5 /home/MY_Site/public_html/app/code/core/Mage/Adminhtml/Block/Catalog/Category/Tabs.php(140):`
Mage_Core_Block_Abstract->toHtml()

`#6 /home/MY_Site/public_html/app/code/core/Mage/Core/Block/Abstract.php(238):`
Mage_Adminhtml_Block_Catalog_Category_Tabs->_prepareLayout()

`#7 /home/MY_Site/public_html/app/code/core/Mage/Core/Model/Layout.php(456):`
Mage_Core_Block_Abstract->setLayout(Object(Mage_Core_Model_Layout))

`#8 /home/MY_Site/public_html/app/code/core/Mage/Adminhtml/Block/Catalog/Category/Edit/Form.php(55):`
Mage_Core_Model_Layout->createBlock('adminhtml/catal...', 'tabs')

`#9 /home/MY_Site/public_html/app/code/core/Mage/Core/Block/Abstract.php(238):`
Mage_Adminhtml_Block_Catalog_Category_Edit_Form->_prepareLayout()

` #10 /home/MY_Site/public_html/app/code/core/Mage/Core/Model/Layout.php(456):`
Mage_Core_Block_Abstract->setLayout(Object(Mage_Core_Model_Layout))

`#11 /home/MY_Site/public_html/app/code/core/Mage/Adminhtml/Block/Widget/Form/Container.php(82):`
Mage_Core_Model_Layout->createBlock('adminhtml/catal...')

Magento 2中文文档教程 - 命令行配置之索引管理

第一步

  1. 登录到Magento服务器切换到Magento 2文件系统的所有者用户要有写入的权限.
    如果你使用bash shell,你也可以使用下面的语法转换到Magento文件系统所有者:
    su <Magento 2文件系统所有者> -s /bin/bash -c <command> 如果 Magento 2文件系统所有者 不允许登录可以使用下面的命令
    
    sudo -u <Magento 2文件系统所有者>  <command>
    
您也可以按下列方式运行命令:
  • cd <Magento 2 安装目录>/bin 并运行它们 ./magento <command name>
  • php <Magento 2 安装目录>/bin/magento <command name>

查看索引列表视图

使用下面的命令
magento indexer:info

显示结果如下:
catalog_category_product                 Category Products
catalog_product_category                 Product Categories
catalog_product_price                    Product Price
catalog_product_attribute                Product EAV
cataloginventory_stock                   Stock
catalogrule_rule                         Catalog Rule Product
catalogrule_product                      Catalog Product Rule
catalogsearch_fulltext                   Catalog Search

查看索引状态

这个命令可以查看所有或选定的索引的状态(例如,显示是否需要重建索引)。

命令选项:
magento indexer:status [indexer]

查看索引列表代码:
magento indexer:info

示例代码:
magento indexer:status

代码结果:
Category Products:                                 Reindex required
Product Categories:                                Reindex required
Product Price:                                     Reindex required
Product EAV:                                       Reindex required
Stock:                                             Reindex required
Catalog Rule Product:                              Reindex required
Catalog Product Rule:                              Reindex required
Catalog Search:                      

[Python]网络爬虫(一):抓取网页的含义和URL基本构成

一、网络爬虫的定义
网络爬虫,即Web Spider,是一个很形象的名字。
把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。
网络蜘蛛是通过网页的链接地址来寻找网页的。
从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,
然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。
如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来。
这样看来,网络爬虫就是一个爬行程序,一个抓取网页的程序。
网络爬虫的基本操作是抓取网页。
那么如何才能随心所欲地获得自己想要的页面?
我们先从URL开始。

二、浏览网页的过程
抓取网页的过程其实和读者平时使用IE浏览器浏览网页的道理是一样的。
比如说你在浏览器的地址栏中输入    www.baidu.com    这个地址。
打开网页的过程其实就是浏览器作为一个浏览的“客户端”,向服务器端发送了 一次请求,把服务器端的文件“抓”到本地,再进行解释、展现。
HTML是一种标记语言,用标签标记内容并加以解析和区分。
浏览器的功能是将获取到的HTML代码进行解析,然后将原始的代码转变成我们直接看到的网站页面。

三、URI和URL的概念和举例
简单的来讲,URL就是在浏览器端输入的    http://www.baidu.com    这个字符串。
在理解URL之前,首先要理解URI的概念。
什么是URI?
Web上每种可用的资源,如 HTML文档、图像、视频片段、程序等都由一个通用资源标志符(Universal Resource Identifier, URI)进行定位。 
URI通常由三部分组成:
①访问资源的命名机制;
②存放资源的主机名;
③资源自身 的名称,由路径表示。
如下面的URI:
http://www.why.com.cn/myhtml/html1223/
我们可以这样解释它:
①这是一个可以通过HTTP协议访问的资源,
②位于主机 www.webmonkey.com.cn上,
③通过路径“/html/html40”访问。 

四、URL的理解和举例
URL是URI的一个子集。它是Uniform Resource Locator的缩写,译为“统一资源定位 符”。
通俗地说,URL是Internet上描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上。
采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。
URL的一般格式为(带方括号[]的为可选项):
protocol :// hostname[:port] / path / [;parameters][?query]#fragment

URL的格式由三部分组成: 
①第一部分是协议(或称为服务方式)。
②第二部分是存有该资源的主机IP地址(有时也包括端口号)。
③第三部分是主机资源的具体地址,如目录和文件名等。
第一部分和第二部分用“://”符号隔开,
第二部分和第三部分用“/”符号隔开。
第一部分和第二部分是不可缺少的,第三部分有时可以省略。 

五、URL和URI简单比较
URI属于URL更低层次的抽象,一种字符串文本标准。
换句话说,URI属于父类,而URL属于URI的子类。URL是URI的一个子集。
URI的定义是:统一资源标识符;
URL的定义是:统一资源定位符。
二者的区别在于,URI表示请求服务器的路径,定义这么一个资源。
而URL同时说明要如何访问这个资源(http://)。



下面来看看两个URL的小例子。

1.HTTP协议的URL示例:
使用超级文本传输协议HTTP,提供超级文本信息服务的资源。 
例:http://www.peopledaily.com.cn/channel/welcome.htm 
其计算机域名为www.peopledaily.com.cn。
超级文本文件(文件类型为.html)是在目录 /channel下的welcome.htm。
这是中国人民日报的一台计算机。 
例:http://www.rol.cn.net/talk/talk1.htm 
其计算机域名为www.rol.cn.net。
超级文本文件(文件类型为.html)是在目录/talk下的talk1.htm。
这是瑞得聊天室的地址,可由此进入瑞得聊天室的第1室。

2.文件的URL
用URL表示文件时,服务器方式用file表示,后面要有主机IP地址、文件的存取路 径(即目录)和文件名等信息。
有时可以省略目录和文件名,但“/”符号不能省略。 
例:file://ftp.yoyodyne.com/pub/files/foobar.txt 
上面这个URL代表存放在主机ftp.yoyodyne.com上的pub/files/目录下的一个文件,文件名是foobar.txt。
例:file://ftp.yoyodyne.com/pub 
代表主机ftp.yoyodyne.com上的目录/pub。 
例:file://ftp.yoyodyne.com/ 
代表主机ftp.yoyodyne.com的根目录。 

爬虫最主要的处理对象就是URL,它根据URL地址取得所需要的文件内容,然后对它 进行进一步的处理。
因此,准确地理解URL对理解网络爬虫至关重要。

Magento 2中文手册教程 - Magento 2 初始化和引导

bootstrapping 概述

运行magento 2, 以下代码在index.php中执行:
  • 引入 <magento 2 安装目录>/app/bootstrap.php 执行必要的初始化例程,如错误处理,初始化自动加载,设置配置选项,设置默认时区,等等。
  • 创建一个实例 \Magento\Framework\App\Bootstrap.
  • 创建一个Magento 2 的应用实例 (\Magento\Framework\AppInterface).
  • 运行Magento 2

Bootstrap 运行逻辑

bootstrap 安装下面的流程运行 magento2:
  1. 初始化错误处理程序。
  2. 创建对象管理器(/Magento/Framework/ObjectManager)和基本共享服务,这些服务在任何地方都使用,并且受环境的影响。环境参数被正确地注入到这些对象。
  3. 判断mode是否启用
  4. 判断Magento2是否安装
  5. 启动Magento2.
    任何未捕获的异常在应用程序启动后自动传回Magento 2 的 catchException() 方法,catchException方法用来处理异常. 最后返回 true 或者 false:
    • 如果反回 true: Magento处理异常成功。不需要做其他事情.
    • 如果反回 false (或任何其他结果):bootstrap 执行默认异常处理子程序.
  6. 发送应用程序对象提供的响应。
修改 bootstrap 代码示例:
use Magento\Framework\App\Bootstrap;
require __DIR__ . '/app/bootstrap.php';
$params = $_SERVER;
$params[Bootstrap::PARAM_REQUIRE_MAINTENANCE] = true; // default false
$params[Bootstrap::PARAM_REQUIRE_IS_INSTALLED] = false; // default true
$bootstrap = Bootstrap::create(BP, $params);
/** @var \Magento\Framework\App\Http $app */
$app = $bootstrap->createApplication('Magento\Framework\App\Http');
$bootstrap->run($app);

Also Read: