Magento

Magento电子商务平台用户的问答

8
初级Magento开发人员职位面试中的问题
首先,我想说的是,我希望我不会将这个问题发到错误的地方,如果我愿意,请告诉我应该在哪里发布(如果在stackexchange世界中的任何地方合适)。 我有一些针对Magento初级开发人员职位的采访。我有一些Magento开发经验,但是我从未接受过这些工作的采访,所以我不确定会发生什么。 我将不胜感激所有的评论和答案,并且我认为这篇文章可能对尝试进入magento的其他初级开发人员很有帮助。
33 product  cart  catalog 

6
在PHTML页面和CMS块上添加静态图像:Magento2
如何在PHTML页面和CMS块上添加静态图像到Magento2?在Magento 1.x中,可以使用$this->getSkinUrl('images/xyz.jpg') 我正在尝试将方法导入Magento2 在Phtml文件中: <img src=”<?php echo $this->getViewFileUrl(‘images/footer-logo.png’); ?>” alt=”Demo”> 在CMS块中: <img src=”{{view url=”images/slide-bg.jpg”}}” alt=”” /> 但它无法正常工作。请告诉我我的错误

7
Magento 2:如何仅部署主题
我曾经用它来部署内容,但是这花费了太多时间。 php bin/magento setup:static-content:deploy 然后我发现添加语言的速度很快,但仍然可以部署所有主题。 php bin/magento setup:static-content:deploy en_US 我怎么只能 deploy只显示主题内容?

15
Magento 2.2:无法反序列化值?
在运行Magento 2.2.0-rc3.0 / PHP 7.0.23的网站上遇到问题 启用或禁用所有第3方扩展时,都会发生以下问题。 从类别或产品页面向比较中添加项目或从产品页面提交评论时,在浏览器中出现以下错误: 1 exception(s): Exception #0 (InvalidArgumentException): Unable to unserialize value. Exception #0 (InvalidArgumentException): Unable to unserialize value. #0 /home/___/public_html/app/code/Magento/Theme/Controller/Result/MessagePlugin.php(157): Magento\Framework\Serialize\Serializer\Json->unserialize('[{\\"type\\":\\"su...') #1 /home/___/public_html/app/code/Magento/Theme/Controller/Result/MessagePlugin.php(135): Magento\Theme\Controller\Result\MessagePlugin->getCookiesMessages() #2 /home/___/public_html/app/code/Magento/Theme/Controller/Result/MessagePlugin.php(84): Magento\Theme\Controller\Result\MessagePlugin->getMessages() #3 /home/___/public_html/lib/internal/Magento/Framework/Interception/Interceptor.php(146): Magento\Theme\Controller\Result\MessagePlugin->afterRenderResult(Object(Magento\Framework\View\Result\Page\Interceptor), Object(Magento\Framework\View\Result\Page\Interceptor), Object(Magento\Framework\App\Response\Http\Interceptor)) #4 /home/___/public_html/lib/internal/Magento/Framework/Interception/Interceptor.php(153): Magento\Framework\View\Result\Page\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Response\Http\Interceptor)) #5 /home/___/public_html/generated/code/Magento/Framework/View/Result/Page/Interceptor.php(26): Magento\Framework\View\Result\Page\Interceptor->___callPlugins('renderResult', Array, Array) #6 /home/___/public_html/lib/internal/Magento/Framework/App/Http.php(139): Magento\Framework\View\Result\Page\Interceptor->renderResult(Object(Magento\Framework\App\Response\Http\Interceptor)) #7 /home/___/public_html/lib/internal/Magento/Framework/App/Bootstrap.php(256): …

5
为什么不能在Magento 2上切换回默认模式?
因此,在使用以下命令在Magento 2项目上进行开发时,我已切换到开发人员模式: php bin/magento deploy:mode:set developer 很好,我收到了此消息,并成功开发了网站: 当前应用模式:开发人员。 由于某些原因,我想回到此default模式只是为了检查此模式下网站的行为。老实说,没有具体原因,我只想切换回此模式。 所以我运行了以下命令: php bin/magento deploy:mode:set default 但是我得到了这个奇怪的错误,没有进一步的解释: Cannot switch into given mode "default" 我检查了以下处理模式设置的文件,Magento/Deploy/Console/Command/SetModeCommand.php这是我发现的内容: switch($toMode) { case State::MODE_DEVELOPER: $modeController->enableDeveloperMode(); break; case State::MODE_PRODUCTION: if ($skipCompilation) { $modeController->enableProductionModeMinimal(); } else { $modeController->enableProductionMode(); } break; default: throw new LocalizedException(__('Cannot switch into given mode "%1"', $toMode)); …



3
Magento 2:互动之前/前后/之后的插件
在Magento 2中,当您创建“周围”插件时 public function aroundRenderResult( \Magento\Framework\Controller\ResultInterface $subject, \Closure $proceed, ResponseHttp $response ) { //... $proceed($response); //... } 您可以继续进行下一个插件,最终通过调用/调用传入的$proceed方法来调用实际的原始方法。这是一种常见的设计模式,通常在PHP Frameworks中间件实现中看到。 但是,它确实给实现细节带来了一些混乱。特别 如果除之外aroundPlugin,对象/类还定义了before或after插件,它们何时相对于周围的插件链触发? 即所有之前的方法会在所有周围的插件方法触发之前触发吗?或插件,然后将只火最终,实际前实际方法火灾? 我要跟踪的具体问题是,当Magento处于全页缓存模式时,我似乎无法获得与Magento 2前端控制器的调度方法相连的插件。全页缓存由不调用的环绕插件操作$proceed($response)。我已经尝试研究这些插件的一些代码,并且发现系统很难在不知道插件打算如何工作的情况下进行推理。 即- 在此特定实例中,开发文档页面上的描述似乎不准确。尚不清楚文档是否错误,或者这是最近引入的错误,是否是边缘情况,或者我的插件配置是否错误。 是否有人通过直接观察或文化知识知道这种优先次序应该如何起作用?

3
有条件地显示/隐藏布局XML中的块
如何有条件地在Magento的布局XML中添加一个块(取决于管理面板中的配置)? 我们可以检查config是否为true。在下面的示例中,如果sample/config/show_toplinks管理面板中的config(在“系统”->“配置”中)为true,则将使用模板文件links.phtml来呈现“顶部链接”。如果sample/config/show_toplinks为false,则将使用默认模板。 <reference name="top.links"> <action method="setTemplate" ifconfig="sample/config/show_toplinks"> <template>page/template/links.phtml</template> </action> </reference> 我在网络中的某个地方找到了解决方法。我们可以将一个空模板设置为“顶部链接”的默认模板,如下所示: <reference name="top.links"> <action method="setTemplate" ifconfig="sample/config/show_toplinks"> <template>page/template/links.phtml</template> </action> <!-- OR set completely empty template --> <action method="setTemplate"> <template>page/template/empty_template_for_links.phtml</template> </action> </reference> 在这种情况下,如果sample/config/show_toplinks为true,则将使用模板links.phtml并显示“顶部链接”。但是如果sample/config/show_toplinks为false,则将empty_template_for_links.phtml使用该模板,并且该模板完全为空,因此它不返回任何HTML,并且顶部链接也不可见。 还有其他方法可以根据管理面板中的配置有条件地显示或隐藏块吗? 这种解决方法安全吗? 这会导致任何意外错误吗? 编辑: 根据所有答案,我认为Rick Kuipers的解决方案对于我的情况而言似乎最为方便。但是我还有另一个相关的问题: <block type="core/template" name="my_block" template="my/block.phtml" /> <!-- ...add more blocks here --> <reference name="footer"> …
32 template  layout  blocks  xml 

3
以编程方式创建发货
我遇到了多种以编程方式创建货运的方式。他们是 //Type 1 $converter=Mage::getModel('sales/convert_order'); $shipment=$converter->toShipment($order); // snip //Type 2 $shipment = Mage::getModel('sales/service_order', $order) ->prepareShipment($this->_getItemQtys($order)); // snip //Type 3 $shipment = Mage::getModel('sales/service_order', $order)->prepareShipment($itemQty); $shipment = new Mage_Sales_Model_Order_Shipment_Api(); $shipmentId = $shipment->create($orderId); // snip 这三种方法之间有什么区别。在这三种方法中,这是创建货件和添加跟踪号的正确方法。




3
如何禁用特定部分或块的缓存
我已经为商店前部开发了顶部栏购物车功能,该功能可以显示添加到购物车的最新三个产品,这在禁用缓存时非常有用,但是当我启用缓存时,它会显示顶部购物车中的奇怪小计和购物车中的奇怪产品。 这让我很难过:'( 我知道这是由于缓存而发生的。有什么我可以禁用此部分的缓存的吗?我尝试禁用块html缓存,现在检查它是否工作得很好,但是当禁用块HTML时,我发现类别平面存在未指定的问题。

4
Magento 2:是否有探查器?
Magento 2是否有分析器?的 Stores -> Settings -> Configuration -> Developer -> Debug 面板仍然存在,但是那里没有用于探查器的设置。 如果Magento 2确实具有探查器,可以通过GUI对其进行配置吗? 如果无法使用GUI配置,如何启用它?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.