一下子从熟悉的virtuemart1.X跳到2.0刚开始还不太习惯,毕竟对于老版本的代码已是熟悉透了,这一次整个代码重构,完全依照JOOMLA的标准MVC组件写法来,还真不习惯。了解了一会之后,还是比以前刚入手二次开发VM1系容易多了,很容易就能找到输出和后台的关联。过去的是属性,类型,是件让人很纠结的事件,这次全部整合到一块叫自定义字段了.开发1系就的开发过程就比较纠结,2.0的流程就简洁一点,在分类加个字段,填入自定义字段的里面的一个父类属性字段的ID,然后在administrator后台里面的事models里product.php的getOrderByList函数里加入父类下的所有的子类功能的数组,前台打开category的view的模板输出部分,找到数组输出部分添加。然后在回到product.php里的sortSearchListQuery函数里,$db = JFactory::getDBO();
foreach ($product_ids as $key=>$product_id){
$query = "SELECT `virtuemart_custom_id`,`custom_value` FROM `#__virtuemart_product_customfields` WHERE `virtuemart_product_id` = ".(int)$product_id;
$db->setQuery($query);
$nhcustom = $db->loadObjectList();
//if (count($nhcustom)>=count($this->searchcustoms)){ echo "lala";
foreach ($nhcustom as $nhcustom_field){
if ($nhcustom_field->custom_value != $this->searchcustoms[$nhcustom_field->virtuemart_custom_id]) unset($product_ids[$key]);
加上这段以筛选。
2.0在属性的处理上,1.x基础上确实改进了不少,但比前magento,似乎还有很多路要走,magento的属性处理就进行的很彻底,而且在产品新建时就需要选择产品属性归属,属性在产品比重加大,而且每个字段都能进行处理,这样对于不同类型的产品来说,处理就会更灵活一些,需要人工二次开发的就会少些,对于架站者来说也相对轻松一些。
要修改一下产品列表页面的排序默认值,先看了一下想要默认的KEY是sku,打开app/code/core/Mage/Catalog/Block/Product/List/Toolbar.php 找到getCurrentOrder() 函数,找到if (!isset($orders[$defaultOrder])) {
$keys = array_keys($orders);
$defaultOrder = $keys[0];
}这一段是原来代码,我在下面加上了我要设置的KEY,用上面的变量覆盖了一下,
$defaultOrder ='sku';
在使用未授权的magic zoom的放大镜效果时,总有please upgrade to full version of magic zoom,的提示,打开JS文件,eval解密后。找到^bko}k.{~i|ojk.za.h{bb.xk|}ga`.ah.Coigm.Taac字段,删除即可,EVAL可以用http://app.baidu.com/widget?appid=121305的JS工具,很方便。
JOOMLA的备份扩展有几个,不过最好用的也是这款了,以前叫joomlapack,后来改了名了,目前在官方库里支持人数高居第一。目前支持1.5和2.5, 装好之后,他默认的设置是他的自已的JPA压缩格式,还需要装他的另外一款才可解压,一般还是可选为ZIP。
微盘下载地址:http://vdisk.weibo.com/s/3DwRg
官方下载地址:https://www.akeebabackup.com/download/akeeba-backup/akeeba-backup-3-4-3.html
JOOMLA登陆界面的URL设置是在菜单链接里进行设置,但我想跳转到当前页面却不行,打开components/com_user/views/login/tmpl,在64行找到:
<code><input type=”hidden” name=”return” value=”<?php $this->reutrn;?>” /></code>
替换成:<code> <input type=”hidden” name=”return” value=”<?php echo base64_encode($_SERVER['HTTP_REFERER']);?>” />,</code>
OK
有了这款插件,就可以利用google viewer的功能在线浏览PDF了。http://extensions.joomla.org/extensions/directory-a-documentation/print-a-pdf/14117
jomsocial 页面,把用户名改成手机号码,但需要加一个JS验证,以防止输入错误。
joms.jQuery(‘#jspassword’).password_strength(password_strength_settings);
joms.jQuery(“#jsusername”).blur(function(){
var MobilPhone =joms.jQuery(“#jsusername”).val();
var isMobilPhone = /^1[3,4,5,8]\d{9}$/.test(MobilPhone);
if (!MobilPhone || !isMobilPhone){
alert(“手机号码为空或输入不正确”);
//joms.jQuery(“#jsusername”).val(”);
}
});
因为这是最后一次JOOMLA1.5+VM1.19的项目开发了,以后就需要升级到2.5+2.0了,所以留笔纪念一下。老的VM产品的图片展示这一块还是有所欠缺,上一次是做了放大镜效果,这一次需要的还是lightbox.但副 图太多,需要加上左右滚动的效果。就直接用了jquery的插件实现,发现效果挺好。http://demo.nhuang.com/2
刚刚在从joomla1.7直接复制移站时,发现Infinite loop detected in JError这样的提示错误,常了是configuration.php里密码设置错了,这一点就比joomla1.5的做的好,像magento一样,将直接的执行错误隐藏起来。
在读取access的日期数据,然后再用strtotime插入到数据库,发现很吊诡的总是出错,用access打开数据库的格式看显示还是24小时制的很正常,后来把数据输入出来居然变成12时制。因为他的输出格式是xxxx/xx/xx PM xx:xx:xx,用了这么一段代码:
$la = explode(" ",$f[1]->value);
if ($la[2]){
$nhtime = explode(":",$la[2]);
$nhdate = explode("-",$la[0]);
if ($la[1] =='PM'){$nhtime[0]+=12;}
$time =mktime($nhtime[0],$nhtime[1],$nhtime[2],$nhdate[1],$nhdate[2],$nhdate[0]);
}else{
$time = strtotime($f[1]->value);}
问题总算解决。 补:后来发现上面这个方法也有问题,中午12点时候就被弄成第二天凌晨了。再试试其他办法,之所以之前的strtotime(XXXX/XX/XX PM XX:XX:XX)错误只是因为PM 在中间了,放到后面就没问题了。调了一下之后,一切正常
最新评论