某位蟀哥哥说的
所有使用Magento1版本+Paypal收款的,6月30号之前必须升级
好吧,记录一下,这是要亡了magento了
Paypal说明:
https://www.paypal.com/gp/smarthelp/article/magento-1-end-of-life-announcement-ts2249?tdsourcetag=s_pctim_aiomsg
某位蟀哥哥说的
所有使用Magento1版本+Paypal收款的,6月30号之前必须升级
好吧,记录一下,这是要亡了magento了
Paypal说明:
https://www.paypal.com/gp/smarthelp/article/magento-1-end-of-life-announcement-ts2249?tdsourcetag=s_pctim_aiomsg
后台菜单 system > tools > Cache Management 可以直接管理magento的缓存
$ bin/magento cache:status
Current status:
config: 1
layout: 1
block_html: 1
collections: 1
reflection: 1
db_ddl: 1
compiled_config: 1
eav: 1
customer_notification: 1
config_integration: 1
config_integration_api: 1
full_page: 1
config_webservice: 1
translate: 1
vertex: 1
上面列出了当前magento系统里全部的缓存类型和对应的状态, 0关闭/1开启
Use Redis for the Magento page and default cache
用Redis做magento的缓存是可以很直接地提高magento系统运行速度的. 肉眼就能感觉到比系统默认的文件缓存快很多.
配置: 修改magento配置文件 app/etc/env.php
, 下面是官网文档给的配置文件
Magento2.3开始,Magento全面引入GraphQl构建API
GraphQl
本文假设已经了解了GraphQl.
网上描述最多的是一种用于 API 的查询语言
简单提取了如下特点:
– 语法易于理解
– 准确获取数据
– 数据没有冗余
– 能应对业务变化
– 减少API请求次数
BundleGraphQl
CatalogGraphQl
CatalogInventoryGraphQl
CatalogUrlRewriteGraphQl
CmsGraphQl
CmsUrlRewriteGraphQl
ConfigurableProductGraphQl
CustomerGraphQl
DirectoryGraphQl
DownloadableGraphQl
EavGraphQl
GraphQl
GroupedProductGraphQl
QuoteGraphQl
SalesGraphQl
SendFriendGraphQl
StoreGraphQl
SwatchesGraphQl
TaxGraphQl
ThemeGraphQl
UrlRewriteGraphQl
WeeeGraphQl
WishlistGraphQl
最近看网站的搜索引擎关键词记录,发现一个问题搜索的特别多,就是Windows安装magento2.3。
搜索指定版本是2.3的。
一直在虚拟机里面测试magento,所以都没碰到过这个问题。自己亲自测试了下,安装过程中一切正常,操作跟magento2其他版本一样。但打开首页就开始报如下错误:
最近在开发一个magento支付接口插件,支付平台需要异步地把支付结果POST到magento网站.原来以为很简单的事情,只需要添加一个控制器,接收POST过来的数据,再修改订单状态即可。
在magento1.9 2.1 2.2 都很顺利地实现了。但magento2.3版本,模拟POST操作的时候一直都自动跳转到了首页,发现是Csrf验证不通过问题。
后来查了官方文档,在2.3版本,所有的控制器都默认了Csrf验证。
知道原因解决起来也简单了,官方也给出了方法,方法如下:
如你有这样的需求,就已经知道magento社区版的搜索是多么的不靠谱。这是一个人为地产品缺陷【反正官方不打算改善】
我的需求很简单:
搜索结果准确一点 – 关键词匹配的越多就靠前
热卖的产品排前点 – 相同关键词匹配的情况下 销量大的靠前
需求可以无限…… 这里就先实现下这2个。
本文用 Zend Framework 自带的Zend_Search_Lucene 全文索引来构建magento搜索。
网上改善magento搜索插件大部分用 sphinx来搭建,性能也更好。用Zend_Search_Lucene是为了方便。Zend Framework 自带,无需安装其他的东西就能运行。
Magento 1.9.3.2
发布也有好几天了,最近有点忙没第一时间升级。今天下午开始了升级,和往常一样,以为是个很简单的事情。screen 里面就直接运行了升级命令,服务器在国内,下载升级的数据很慢很慢
晚上打开网站看了下,竟然报404错误。。这不科学啊,再怎么升级失败都不至于是这个错误的。登录服务器进去看看,magento原始的程序相关文件竟然被删光了。一直没碰到过这情况。screen 里面看了下,确实是升级出问题了。
具体文件是php版本不符合要求,我用了php7,而显示的错误是magento1
模块要求是5.2<=php<=6。没想到是先删除文件再检查php环境,真有点汗了。
没办法,只能去官网下载1.9.3.2程序包再覆盖上传进行升级了。下载那是坎坷啊,挂了VPN,magento2.1.4的一下子就下载完了,而magento1.9.3.2试了几十次才下载完成,真怀疑官方是不是故意的。而且部署到国外的站最近升级也明显的要多花很多时间了。
官网这么变态的下载问题,以后有新版本我还是搬运过来吧。不然就是《Magento从下载到放弃》
浏览器查看magento 的html源文件,就会发现有很多如下的链接中带有uenc参数
catalog/product_compare/index/items/45/uenc/a———-od–MuY29tLw,,/
那么Magento URL中的uenc
参数是干什么的?
//Mage_Core_Controller_Varien_Action 文件中
const PARAM_NAME_URL_ENCODED
protected function _getRefererUrl()
{
refererUrl =this->getRequest()->getServer('HTTP_REFERER');
if (url =this->getRequest()->getParam(self::PARAM_NAME_REFERER_URL)) {
refererUrl =url;
}
if (url =this->getRequest()->getParam(self::PARAM_NAME_BASE64_URL)) {
refererUrl = Mage::helper('core')->urlDecodeAndEscape(url);
}
if (url =this->getRequest()->getParam(self::PARAM_NAME_URL_ENCODED)) {
refererUrl = Mage::helper('core')->urlDecodeAndEscape(url);
}
if (!this->_isUrlInternal(refererUrl)) {
refererUrl = Mage::app()->getStore()->getBaseUrl();
}
returnrefererUrl;
}
进入这个文件 Mage_Core_Helper_Abstract
不难看出这个uenc
参数保存的是当前页面的url的base64值,作用是进行某些操作后能 返回uenc对应的链接。
最近在写个magento2的blog插件,需要实现URL伪静态。
更多可以参考magento2自带的CMS 模块
代码如下:
先定义di文件,app/code/Mageoo/MyBlog/etc/frontend/di.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Framework\App\RouterList">
<arguments>
<argument name="routerList" xsi:type="array">
<item name="cms" xsi:type="array">
<item name="class" xsi:type="string">Mageoo\MyBlog\Controller\Router</item>
<item name="disable" xsi:type="boolean">false</item>
<item name="sortOrder" xsi:type="string">70</item>
</item>
</argument>
</arguments>
</type>
</config>
di.xml配置对应的Router class文件 app/code/Mageoo/MyBlog/Controller/Router.php
public function match(\Magento\Framework\App\RequestInterface request)
{identifier = trim(request->getPathInfo(), '/');condition = new \Magento\Framework\DataObject(['identifier' => identifier, 'continue' => true]);this->_eventManager->dispatch(
'cms_controller_router_match_before',
['router' => this, 'condition' =>condition]
);
identifier =condition->getIdentifier();
if (condition->getRedirectUrl()) {this->_response->setRedirect(condition->getRedirectUrl());request->setDispatched(true);
return this->actionFactory->create('Magento\Framework\App\Action\Redirect');
}
if (!condition->getContinue()) {
return null;
}
//identifier 获取到了identifier 后,就可以查找具体blogid,然后把参数分发到具体的Action处理。
request->setModuleName('myblog')->setControllerName('index')->setActionName('index')->setParam('blogid',blogid);
request->setAlias(\Magento\Framework\Url::REWRITE_REQUEST_PATH_ALIAS,identifier);
return $this->actionFactory->create('Magento\Framework\App\Action\Forward');
}