magento任何页面的改动都是需要css的配合的,所以代码中改了magento列表页每行产品的显示数量,就一定要将你的css与之对应。 很多时候人们问我怎么将每行的数量改成三个或者四个,我就惆怅,因为css往往也是需要改的。css却是每个模板都不一样,让我说怎么改,不看下模板的 css,没法说。 此篇文章供magento初学者做个参考,也好丰富下我博客的内容,最近没什么时间,只能写点简单的充充门面,让大家知道,我尽管最近不露面了,但还是在关注着大家。谢谢。 以magento 1.4 版本的default模板文件为例,并且用首页显示产品的代码做分析。 {{block type=”catalog/product_list” category_id=”3″ template=”catalog/product/list.phtml”}} 此段代码用来在 magento的cms中显示某一个分类的产品的列表。代码中的template=”catalog/product/list.phtml“是使用catalog/product/list.phtml这个路径下的模板文件的样式来显示。 此list.phtml文件路径:app\design\frontend\base\default\template\catalog\product\list.phtml 所以当我们的list.phtml文件显示的是每行3件产品,很多人想让其每行显示4件。那么我们就在此文件路径:文件路径:app\design \frontend\base\default\template\catalog\product里面,也就是list.phtml一个文件夹中建个文件 list4.phtml,将list.phtml中的代码复制到list4.phtml中。 所以此时我们的首页显示产品的代码就变成了 {{block type=”catalog/product_list” category_id=”3″ template=”catalog/product/list4.phtml”}} 我们让他使用list4.phtml这个模板文件,下面我们对list4.phtml进行修改,让其每行显示4个产品。 我们将list4.phtml改下, 截取代码片段如下 <?php $_columnCount = $this->getColumnCount(); ?> //搜下“columnCount”关键字就搜到 将其改为 <?php $_columnCount = 4 ?> 这样就每行显示4个产品了,想显示5个就改成5。 这样就改好了。 但是我们的问题还没有解决。原先每行3个,现在变成每行4个了,如果你的列表的宽度没有变,图片每行4个也许放不下的,那么你就需要去改产品的图片尺寸。另一种情况是,css原先定义的是每行三个,每个图片区域宽度是300像素(或者33%),现在每行变成4个了,每个还是300像素(33%)也许就放不下了。这样页面可能就会出问题。所以还需要改下css。 改图片尺寸我之前的文章有讲到,改css还是需要从长计议。我的magento模板开发指导的文章也有讲到在哪里学习css。 我想对普通用户说,如果你有时间去学下css就去学下,如果没有时间就让别人帮着改下,一般的模板都比较好改,几分钟就 fix的差不多了。 转载表明出处:hellokeykey.com
开发
在写插件时,有的用户安装magento时设置了表的前缀,而有的用户没有,如果直接把表名写死在那,是不正确的。 magento提供了获取表名的的一个方法: $tableName = Mage::getSingleton(‘core/resource’)->getTableName(‘默认表名’);
如何修改magento前台显示的产品图片的尺寸,magento产品图片的尺寸是和页面的css修饰代码相关的,所以你最好了解些css。有的时候在css中已经指定了图片的尺寸,你在代码中修改也不一定会出现你想要的效果的,检查css。还有,别忘了刷新magento缓存。 以我的helloblank模板为例,注意你所使用的模板文件路径。 第一个地方,产品列表页的产品图片 文件位置:app\design\frontend\default\helloblank\template\catalog\product\list.phtml 在此文件中搜 “resize”,发现有两处,因为列表页有 List 和 Grid 两种显示方式,第一个resize一般是List列表显示中的产品图片,第二个resize一般是 Grid 列表显示中的产品图片。 截取代码片段: $this->helper(‘catalog/image’)->init($_product, ‘small_image’)->resize(135, 135); ?>” width=”135″ height=”135″ 代码分析: resize(135, 135),就是设置产品图片尺寸的函数,以像素为单位的。width=”135” height=”135“就是css的设置。例如,想改成150像素宽,200像素高。那么代码就改成 $this->helper(‘catalog/image’)->init($_product, ‘small_image’)->resize(150, 200); ?>” width=”150” height=”200” 第二个地方,产品详细页产品图片 文件位置:app\design\frontend\default\helloblank\template\catalog\product\view\media.phtml 在此文件中搜“resize”。我们会找到两处,第一处是产品大图的,第二个是大图下面小图的。 代码片段截取: …. resize(265) …. resize(48, 48); ?>” width=”48″ height=”48″ …. 代码分析: 当resize里面只有一个参数的时候就是设置宽和高是一样的。resize(265) 等于resize(265,256)。 这页有大量css的修饰代码,请务必用firebug等工具检查下,最大可以修改到多大 第三个地方,相关产品图片,upsell产品图片,crosssell产品图片 相关产品图片修改文件位置:app\design\frontend\default\helloblank\template\catalog\product\list\related.phtml upsell产品图片修改文件位置:app\design\frontend\default\helloblank\template\catalog \product\list\upsell.phtml crosssell产品图片修改文件位置:app\design\frontend\default\helloblank\template\checkout\cart\upsell.phtml 设置图尺寸的函数还是resize()函数,也基本和前面说的是一样的。 第四个地方,页面边栏购物车里产品图片 文件位置:app\design\frontend\default\helloblank\template\checkout\cart\item\default.phtml 基本就这些了,还有别的地方要改的,开启下magento模板路径看下,在哪里,改的方法也一样。最重要的是,要和你的css修饰代码配合好。谢谢大家关注。 [...]
我试了下获取magento最近订单,与初学者分享下代码片段。 首先在你的block的相关php文件中获取订单的Collection,获取所有的订单。 public function getordercollection() { $model = Mage::getModel(‘sales/order_item’); $collection = $model ->getCollection() ->load(); return $collection->getItems(); } 然后使用在你的模板文件phtml中使用php循环输出下 $thisorders = $this->getordercollection(); if ($thisorders) { $thisorders2 = array_reverse($thisorders, TRUE); foreach ($thisorders2 as $i=>$thisorder) { $pmodel = Mage::getModel(‘catalog/product’); $thisproduct = $pmodel->load($thisorder->getProductId()); echo “<img src=”.$thisproduct->getThumbnailUrl().” >”; echo “<a href=”.$thisproduct->getProductUrl().”>”.$thisorder->getName().”</a>”; echo “<p>价格:”.$thisproduct->getPrice().”</p>”; echo “<P>—————————————————</P>”; } } 不要用我的输出代码,我懒,随便写下,大家是用magento的filter方法筛选下需要输出的东西。 转载表明出处:hellokeykey.com
查看地址:http://en.wikipedia.org/wiki/ISO_3166-2 magento国家地区ISO编码,无论在添加省市地址,还是在添加表运费的时候这个iso 国家地区编码都是很有用的。 转载表明出处: hellokeykey.com
解决magento contact us无法发送问题 需要修改的文件 /app/design/frontend/base/default/template/contacts/form.phtml 查找一下代码 <div class="buttons-set"> <p class="required"><?php echo Mage::helper(‘contacts’)->__(‘* Required Fields’) ?></p><input type="image" src="<?php echo $this->getSkinUrl(‘images/btn_submit.gif’);?>"alt="<?php echo Mage::helper(‘contacts’)->__(‘Submit’) ?>"/></div> 替换成 <div class="buttons-set"> <p class="required"><?php echo Mage::helper(‘contacts’)->__(‘* Required Fields’) ?></p><input type="text" name="hideit" id="hideit" value="" style="display:none !important;"/><button type="submit" title="<?php echo Mage::helper(‘contacts’)->__(‘Submit’) ?>"class="button"><span><span><?php echo Mage::helper(‘contacts’)->__(‘Submit’) ?></span></span></button> </div> ————–另类问题—–一下几点是收集的看看有没有对大家有帮助————— magento的contact us是一个非常重要的一个功能,当在线客服不在时,客户可以通过contact us发送邮件来联系我们。问题是,总是会出来这样或者那样的问题导致magento下面的这个功能无法使用。 我这边要说明的是一种非常特殊的情况引起的这个问题。但是我在magento论坛上搜索了,碰到的更多的是其它的状况,一起记录一下。 Unable to submit [...]
1.在你的产品详细页你想显示SKU,代码如下 产品详细页文件为template\catalog\product\view.phtml <?php echo $this->htmlEscape($_product->getSku()) ?> 我们给修饰一下,代码和效果如下 <p><span><?php echo $this->__(‘Sku:’) ?></span><?php echo nl2br($_product->getSku()) ?> </p> 2.在产品的列表你想显示sku 产品列表也文件为template\catalog\product\list.phtml 代码如下 <?php echo $_product->getSku(); ?> 我们给修饰下,代码以及效果如下 <p><?php echo $this->__(‘Sku:’); ?><?php echo $_product->getSku(); ?></p> 转载表明出处: hellokeyke.com
在magento中添加一个form,可以使用magento本身就有的输入验证功能,今天给大家介绍下如何使用。可以参见我的magento插件教程2中的counter案例 magento中form使用验证 <form action=”<?php echo Mage::getUrl(‘counter’) ?>” method=”post” id=”orderreport-form”> <fieldset> <ul> <li> <label for=”NUM1″><?php echo $this->__(‘NUM1: ‘) ?><span class=”required”>*</span></label> <input type=”text” id=”NUM1″ name=”NUM1″ class=”input-text required-entry validate-alphanum” /> </li> <li> <label for=”NUM2″><?php echo $this->__(‘NUM2: ‘) ?><span class=”required”>*</span></label> <input type=”text” id=”NUM2″ name=”NUM2″ class=”input-text required-entry validate-alphanum” /> </li> <li> <input type=”submit” value=”<?php echo $this->__(‘sub’) ?>” /> </li> </ul> [...]
这个案例的内容是,在magento前台输入两个数,然后输出结果。 这个案例的目的是 1.数值是如何在magento的Controllers传递到Block中的,又是如何在phtml文件中输出的。 2.controllers中的action使用。 3.了解使用form post参数和如何get参数。 首先来看下这个案例中的文件结构 /* 声明插件,指定codePool、插件开启状态等 */ app/etc/modules/Hellokeykey_Counter.xml /* 模板.phtml文件中使用的方法在此文件中声明,此案例中此文件将计算结果传递到.phtml文件 */ app/code/local/Hellokeykey/Counter/Block/Counter.php /* 我们此案例的的控制器 http://magento-root-folder/module-name/controller-name/action-neame 此例中IndexController控制器中的一个action获取counter.phtml中传来的参数,并将参数传递到Counter.php,在Counter.php中计算后将结果返回到counter.phtml输出 */ app/code/local/Hellokeykey/Counter/controllers/IndexController.php /* 主要的插件配置文件 */ app/code/local/Hellokeykey/Counter/etc/config.xml /* 前台显示模板的layout */ app/design/frontend/default/default/layout/counter.xml /* 前台模板文件,我们的form和结果最终就在这个文件输出,此文件直接使用$this->调用与其相应的block中的方法,本例中我们只使用这一个模板页面。 */ app/design/frontend/default/default/template/counter/counter.phtml /* Helper此例不使用,放在这显得气派,充门面 */ app/code/local/Hellokeykey/Counter/Helper/Data.php 我们先从简单的开始,那就先在前台的模板文件counter.phtml中写个提交的form吧,form我也忘了具体怎么写了,毕竟不天天写这个,没关系,我们有google,代码如下。 app/design/frontend/default/default/template/counter/counter.phtml文件中代码片段(详见本例文件) <form action=”<?php echo Mage::getUrl(‘counter’) ?>” method=”post” id=”orderreport-form”> <fieldset> <ul> <li> <label for=”NUM1″><?php echo $this->__(‘NUM1: ‘) ?><span [...]
这个插件的功能仿照magento客户面板中订单信息中的订单物流信息的现实方式,只是不用登陆就可以根据订单号查询订单状态和订单的物流信息。演示地址如下 demo:http://www.magentokey.com/helloblank/trackorder magento版本:1.3 & 1.4 magentokey.com 出售 转载表明出处: hellokeykey.com magentokey.com
