Magento

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

2
$ _product-> getProductUrl()提供不带URL密钥的URL路径
我在几个不同的Magento网站的页面上都得到了某个类别的产品集合。我获取收藏的代码是: $category = new Mage_Catalog_Model_Category(); $category->load($id); $collection = $category->getProductCollection(); $collection->addAttributeToSelect('*'); $collection->addAttributeToFilter('status', 1); $collection->addFieldToFilter(array(array('attribute'=>'visibility', 'neq'=>"1" ))); $collection->getSelect()->limit(12); foreach ($collection as $shopProduct) : echo $shopProduct->getProductUrl(); endforeach; 我的问题是,在我们正在运行的Magento站点之一上,ProductUrl()被抓取的网址是,http://www.my site.com/catalog/product/view/id/2309/s/shopcat/category/373/而不是http://www.site.com/shopcat/product-url-key.html。但是,在所有其他网站上,它都可以按照我们的意愿出现。 有谁知道为什么会这样吗?谢谢!我也尝试使用,getUrlPath()但这没有返回任何内容。我知道我可以通过做类似的事情来解决这个问题,<?php echo $this->getBaseUrl().$shopProduct->getUrlKey().".html"; ?>但是这种方法似乎效率不高! 编辑21/03/14:我仍然有这个问题。我已经意识到getProductUrl()可以在网站的某些模板文件上检索所需的URL,但不能在其他文件上检索。例如,我在首页上加载了一个收藏集,并且给了我想要的URL。但是getProductUrl()没有在类别视图中用相同的代码提供我想要的URL。
15 url  products 

7
出于安全原因,默认情况下禁用异常打印[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Magento Stack Exchange 的主题。 4年前关闭。 我试图将我的magento设置为主机。因此,我创建了一个新数据库,并导入了sql文件并更改了数据库的local.xml中的设置。但是现在由于安全原因,我默认情况下禁用了异常打印。

5
CE 1.8上的全页缓存-FPC Magento模块?漆?都?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 因此,在研究Community Edition 1.8的全页缓存时,我有些困惑。我已经实现了两级Redis缓存CDN,已对MySQL的my.cnf进行了调整,以实现最高性能(当然,数据库是在单独的服务器上),并且我有2台服务器在负载均衡器后面托管我们的商店。我要指出的是,在进行初始性能调整之前,我不会立即跳入FPC。 我以前从未在任何类型的站点上使用过Varnish,更不用说Magento了,我也从未在Magento中建立FPC。我了解Varnish是一个代理,它本身充当CDN和页面缓存之间的交叉,在请求甚至到达Web服务器之前就将数据发送到浏览器。据我了解,FPC模块会在本地创建一个缓存,供Web服务器本身弹出。我知道对于这两种设置,您都需要执行一些“打孔”操作才能将动态内容传递到浏览器(尽管使用模块或使用Varnish的技术有所不同)。如果我对这里有任何误解,请纠正我。 直到现在,我还认为它们是两个独立的实体,您可以实现它来帮助您的网站,但是现在我读过的东西似乎暗示了相反的意思。我最初的计划是为Magento 购买“ Warp Advanced Full Page Cache ”模块(我相信以前是“ Tiny Brick Lightspeed FPC”),因为如果价格偏高(如果坦率地说),它似乎是最受欢迎的模块。 ,对于我们公司而言,350美元的价格不算多,尤其是对于它可以做的事情而言)。我本人和我的2位开发人员正在计划学习,以在我们自己的自定义自制主题中正确,完全地实施它,以最大程度地发挥我们的作用。在完成此操作之后,我想我也会考虑实施Varnish-但是,正如我之前所说,我已经理解它们是分开的。 但是,现在,我开始遇到这样的扩展,例如免费的由Varnish提供支持的PageCache,或由Varnish Cache提供支持的Vortex Cache(将近800美元),它们是直接与Varnish一起使用的Magento全页面高速缓存模块。 我对您的问题,堆栈交换,应该如何看待FPC和Varnish?作为独立实体?如果是这样,它们是否互斥?它们是我应该一起实施的同一枚硬币的两个侧面吗?还是它们相似但彼此不排斥也不包容? 我可以将上面提到的Warp Advanced FPC与Varnish一起使用吗? 如果我用清漆使用它?还是如果我打算使用Varnish,最好使用其他FPC?甚至更进一步,是否有FPC这么好以至于我不需要清漆?反之亦然,我应该只使用Varnish放弃FPC的想法吗? 抱歉,文本栏不完整,但是我一直在浏览很多文章,博客和论坛帖子,但无法确定对这些问题的明确答案。非常感谢您的帮助和建议=) 哦,最后,关于Varnish和Web服务器的一个简短问题。目前,我使用的是正常的Apache LAMP堆栈设置,但是一段时间以来,我一直在看到人们热衷于将Nginx与Magento一起使用。我自己做了一些测试,包括压力和负载测试,看来在正确的条件下肯定可以做得更好。因此,我正在考虑在不久的将来切换。无论如何,这会影响我使用FPC和/或清漆的愿望和决定吗? 谢谢!!! 编辑:哦!还有一个快速的问题-由于我在负载均衡器后面托管了两台服务器来托管我的网站(这也是一种设置,可以在需要时进行横向增加),因此我充分利用了Redis和Memcached托管在与服务器不同的服务器上Web和数据库,用于我的会话以及Magento(以及Zend)的二级缓存的每个级别。我假设FPC会将其数据存储到系统之一中?我需要一个特定的扩展名将其存储在此处还是全部由它完成?虽然我认为不会,但这是否会影响Varnish?再次感谢!!

1
如何覆盖config.xml
我需要将“与我们联系”页面的电子邮件模板类型从“文本”更改为“ HTML”。我发现它在config.xml中 <email> <contacts_email_email_template translate="label" module="contacts"> <label>Contact Form</label> <file>contact_form.html</file> <type>text</type> </contacts_email_email_template> </email> 如何正确覆盖config.xml [编辑]这适用于文件app / code / core / mage / contact / etc / config.xml,以下答案适用于任何... / mage / ANYTHING / etc / config.xml


2
交易电子邮件:如何为“ sales_email_order_items”建立模板(或如何覆盖adminhtml模板)
在交易电子邮件代码中,我看到以下内容: {{layout handle="sales_email_order_items" order=$order}} {{var items_html}} 我相信这是指此模板文件: /app/design/adminhtml/default/default/template/email/order/items.phtml 我尝试用我们的主题创建一个新文件夹,以避免覆盖核心文件: /app/design/our_theme/default/default/template/email/order/items.phtml 但这似乎不起作用,是否有适当的方法来覆盖此文件而不简单地覆盖内核?

2
在自定义扩展名Adminhtml中添加动态网格作为输入的最佳方法
我已经使用它自己的网格构建了一个自定义商店定位器扩展,并在Adminhtml中编辑页面,并且一切正常。对于商店的营业时间,我想实现一个动态网格,例如属性选项。 现在,我找到了一个解决方案,但我希望有更好的方法,或者至少是更清洁的方法。到目前为止,我正在向表单中的字段添加渲染器fieldset class Redkiwi_Rkstorelocator_Block_Adminhtml_Rkstorelocator_Edit_Tab_General extends Mage_Adminhtml_Block_Widget_Form { protected function _prepareForm() { $form = new Varien_Data_Form(); $this->setForm($form); $fieldset = $form->addFieldset('rkstorelocator_form', array('legend'=>Mage::helper('rkstorelocator')->__('Store information'))); [...] $officehours_field = $fieldset->addField('office_hours', 'editor', array( 'name' => 'office_hours', 'label' => Mage::helper('rkstorelocator')->__('Office hours'), 'required' => false, )); $officehours_block = $this->getLayout() ->createBlock('rkstorelocator/adminhtml_rkstorelocator_edit_renderer_officehours') ->setData(array( 'name' => 'office_hours', 'label' => Mage::helper('rkstorelocator')->__('Office hours'), …

2
我应该如何许可我的模块?
我有一个为公司编写的模块。它从我们的后台解决方案中获取数据并将其导入到Magento中。它还从Magento接收订单,并将其导入后台软件。我已经阅读了一些可以使用的许可证类型,但不知道要使用哪个许可证。我的基本要求是: 我不希望有人复制/分​​发代码作为自己的工作。 该代码由我自己编写,但是调用了核心的magento函数。 该模块可以免费下载,但要使用该模块,您需要一个由我公司提供的网络服务网址(在收到付款后)。 我希望能够将其分发到Magento的所有版本(GO(我认为)除外)。 考虑到上述两个问题: 哪种许可证最适合我的需求?(我还没有找到一份完整的清单来阅读它们)。 如何执行此许可证?在每个脚本的顶部添加一些术语足以确保许可证到位吗? 如果此信息包含在某处,请随时将我链接到该信息,但是经过搜索后,我找不到任何能特别满足我情况的信息。

2
加载/获取Magento路由之外的块以供外部使用
我有一个外部网页,我试图从Magento框架中提取站点标题块,以用作此外部页面中的标题。这是我到目前为止所拥有的: // initialize Magento $rootPath = dirname(dirname(__FILE__)); $mageInc = $rootPath . "/app/Mage.php"; include_once $mageInc; Mage::app('admin')->setCurrentStore(0); $headerBlock = Mage::app()->getLayout()->createBlock('page/html_header'); //also tried //$headerBlock = Mage::app()->getLayout()->createBlock('page/html_header', 'header'); 执行在那里停止,但是,我没有收到任何错误消息。我的目标是拉出block Mage_Page_Block_Html_Header,我认为我可以用来<block type="page/html_header" name="header" as="header">从page.xml布局文件中加载所有内容。该XML标签包装在里面 <default translate="label" module="page"> <block type="page/html" name="root" output="toHtml" template="page/1column.phtml"> 标签,所以也许我需要以某种方式指定它?我不确定自己在做什么错以及从这里去哪里。

3
如何重写已经重写的类?
更新:我发现我实际上需要重写的类SMDesign_SMDZoom_Block_Product_View_Media不是SMDesign_ColorswatchProductView_Block_Product_View_Media我最初想的那样。但是,完全相同的问题仍然适用。 SMDesign SMDZoom扩展重写了块类'catalog / product_view_media'。的xml看起来像这样: <global> ... <blocks> <smdzoom> <class>SMDesign_SMDZoom_Block</class> </smdzoom> </blocks> <blocks> <catalog> <rewrite> <product_view_media>SMDesign_SMDZoom_Block_Product_View_Media</product_view_media> </rewrite> </catalog> </blocks> .... </global> 我想再次重写该类。我想重写此smdzoom模块正在重写的catalog / product_view_media类。能做到吗?配置xml在我的模块中看起来是什么样的? 当前,这是我的模块初始化xml文件: <config> <modules> <Goorin_SMDZoom> <active>true</active> <codePool>local</codePool> </Goorin_SMDZoom> <depends> <Mage_Catalog /> <SMDesign_SMDZoom /> </depends> </modules> </config> 和模块config.xml文件: <global> <blocks> <gbismdzoom> <class>Goorin_SMDZoom_Block</class> </gbismdzoom> <catalog> <rewrite> <product_view_media>Goorin_SMDZoom_Block_Product_View_Media</product_view_media> </rewrite> </catalog> …

4
Magento-自定义(非eav)模型,按多个字段加载
我有一个自定义模型和资源模型。我想使用多个字段来加载模型的单个实例。 该模型具有以下字段: id tag_name custom_name group_name 我想基于tag_name,custom_name和group_name而不是id加载此模型。 目前,我正在为每个字段使用集合和addFilter。这行得通,但我想知道Magento中是否有针对此类事物的标准策略? 编辑 核心magento在这种情况下似乎不使用集合,而是在资源模型中使用直接sql查询。 一个例子是: loadByAccountAndDate() 在 Mage_Paypal_Model_Resource_Report_Settlement 当收集似乎是更简洁的方式时,就编写的代码量而言,这是否有原因? 我只是不知道为什么magento选择这样做
15 collection  model 

1
新Changelog表的机制(例如:catalog_category_product_cat_cl)
我刚刚发现数据库中提到的表。我认为它们是Magento EE 1.13中的新功能,可能与新索引相关。 + ---------------------------------------- + | catalog_category_flat_cl | | catalog_category_product_cat_cl | | catalog_category_product_index_cl | | catalog_product_flat_cl | | catalog_product_index_price_cl | | cataloginventory_stock_status_cl | | catalogsearch_fulltext_cl | | enterprise_url_rewrite_category_cl | | enterprise_url_rewrite_product_cl | | enterprise_url_rewrite_redirect_cl | + ---------------------------------------- + 这些表格如何运作?目的是什么? 他们会在一段时间后自动清洗吗? 将这些表包括在备份中是否有意义?
15 database  ee-1.13 

2
如何对在管理员中显示的类别进行排序?
这是代码: $category = Mage::getModel('catalog/category')->load(3); $subCats = Mage::getModel('catalog/category')->load($category->getId())->getChildren(); $subCatIds = explode(',',$subCats); $currentUrl = Mage::helper('core/url')->getCurrentUrl(); 请指教,谢谢!
15 frontend 

1
使magento核心模板使用我模块的翻译文件
在我正在开发的扩展中,我通过模块的config.xml添加了布局XML。此布局对前端进行了一些修改。但是,其中一些模块属于Magento核心模块。模板都按预期正确显示。 我与模块本身打包在一起的模板正在使用我自己模块的翻译文件。Magento核心打包的模板未翻译。如果我为相应的核心模块添加翻译文件,则将使用该翻译文件并且模板显示已翻译。 如果无法找到Magento核心模块的任何翻译文件,是否可以使Magento使用模块的翻译文件?我还能在这里做什么?

2
使用观察者创建自定义选项和奖品以将产品添加到购物车
我想使用观察者将自定义选项添加到quoteitem,该观察者具有checkoutCartProductAddAfter事件,并在产品添加到购物车后触发。 public function checkoutCartProductAddAfter(Varien_Event_Observer $observer) { $item = $observer->getQuoteItem(); $item->addOption(new Varien_Object( array( 'product' => $item->getProduct(), 'label' => 'Free Gifts', 'value' => 'Spend $50 and get gift product worth $9.99' ) )); return; } 我的观察器正在工作,但是我无法向添加的产品添加自定义选项。请提供帮助,以使用观察者将自定义选项添加到刚刚添加的产品中。

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.