Magento 修正来自首页的产品页面包屑导航

 更新时间:2016年11月25日 17:28  点击:2280
本文章来给各位朋友介绍Magento 修正来自首页的产品页面包屑导航实现方法,如果产品是从Category产品列表中进入Product详细页面,则面包屑导航中含有Category Path; 否则,当从首页,或搜索结果中,或者其他什么地方进入,则缺少之。我想,可能是Magento支持一个产品放入多个Category的缘故吧。不管怎么样,产品页中缺少了Category Path,用户体验不大好。

修正的方法,找到文件app/code/core/Mage/Catalog/Helper/Data.php

复制一份到local代码池

app/code/local/Mage/Catalog/Helper/Data.php
在函数getBreadcrumbPath的开始部分,加上如下的代码逻辑:

 

 代码如下 复制代码
getBreadcrumbPath()
    {
        if (!$this->_categoryPath) {
            $path = array();
            //add by date 2013-04-07 产品页面包屑导航修正
            if ($this->getProduct() && !$this->getCategory()) {
                $_categoryIds = $this->getProduct()->getCategoryIds();
                rsort($_categoryIds);
                if ($_categoryId = $_categoryIds[0]) {
                    $_category = Mage::getModel('catalog/category')->load($_categoryId);
                    Mage::register('current_category', $_category);
                }
            }
            //end date 2013-04-07
           
            if ($category = $this->getCategory()) {
                $pathInStore = $category->getPathInStore();
                $pathIds = array_reverse(explode(',', $pathInStore));
                $categories = $category->getParentCategories();
                // add category path breadcrumb
                foreach ($pathIds as $categoryId) {
                    if (isset($categories[$categoryId]) && $categories[$categoryId]->getName()) {
                        $path['category'.$categoryId] = array(
                            'label' => $categories[$categoryId]->getName(),
                            'link' => $this->_isCategoryLink($categoryId) ? $categories[$categoryId]->getUrl() : ''
                        );
                    }
                }
            }
            if ($this->getProduct()) {
                $path['product'] = array('label'=>$this->getProduct()->getName());
            }
            $this->_categoryPath = $path;
        }
        return $this->_categoryPath;
    }

首先判断当前是否是产品页,如果是并且没有Category信息,就获取产品所属的Category IDs,Magento中一个产品可以加入多个Category中,现在也不管那么多了,只挑出其中一个幸运的Category作为current_category

本文章来给各位使用Magento的朋友介绍怎么来获取购物车产品数量和价格并显示出来,下面我来给各位同学详细介绍。

得到购物车所有的产品信息

 代码如下 复制代码

// $items = Mage::getModel('checkout/cart')->getQuote()->getAllItems();
$items = Mage::getSingleton('checkout/session')->getQuote()->getAllItems();foreach($items as $item) {
    echo 'ID: '.$item->getProductId().'<br>';
    echo 'Name: '.$item->getName().'<br>';
    echo 'Sku: '.$item->getSku().'<br>';
    echo 'Quantity: '.$item->getQty().'<br>';
    echo 'Price: '.$item->getPrice().'<br>';
    echo "<br>";
}

当然,也可以快速得到当前用户的所有的item的个数和产品的所有个数!下面是magento的一个快速函数!

 代码如下 复制代码

$totalItems = Mage::getModel('checkout/cart')->getQuote()->getItemsCount();
$totalQuantity = Mage::getModel('checkout/cart')->getQuote()->getItemsQty();

下面是得到subtotal price 和grand price的方法

 代码如下 复制代码

$subTotal = Mage::getModel('checkout/cart')->getQuote()->getSubtotal();
$grandTotal = Mage::getModel('checkout/cart')->getQuote()->getGrandTotal()

这样就可以快速的得到当前购物车的详细信息,方便操作数据,显示购物车的信息!!

一般用于右上角的购物车信息居多,或者ajax购物车!

php默认时区是欧美国家的所以与我们中国时区相差了整整8小时哦,下面我来给各位介绍php设置时区方法,有需要了解的朋友可进入参考。

在 php.ini 中,默认是 date.timezone = UTC。修改为中国时区,修改为 date.timezone = PRC。如果直接写 GMT 格式的,是 date.timezone = Etc/GMT+8。

另外,也可以在 PHP 页面头中设置。

 代码如下 复制代码

date_default_timezone_set('PRC');


在PHP5中, 有很多方法可以设置或者获取默认的时区设置,例如,使用date_default_timezone_setl函数来设置时区

 代码如下 复制代码

<?php
    date_default_timezone_set("Asia/Shanghain"); //设置时区为上海
?>

或者 设置东京的时区代码为:

<?php
    date_default_timezone_set("Asia/Tokyo");
?>

系统初始化时,加上

ini_set('date.timezone','Asia/Shanghai'); 

date_default_timezone_set("PRC"); 

就将解决时区相差8


还有如果你有php.ini管理权限可直接在php.ini中修改哦


手动修改php.ini设置

打开php找到date.timezone = "PRC" 如有去掉前面的分号,没有的话手动添加!

 

装上PHP5后你会发现这样的问题:

 

 代码如下 复制代码
<?php  
$atime=date("Y-m-d H:i:s");  
echo $atime;  
?> 
<?php
$atime=date("Y-m-d H:i:s");
echo $atime;
?>

你也许会发现,输出的时间和你现在的时间是不相同的。

原因是假如你不在程序或配置文件中设置你的服务器当地时区的话,PHP所取的时间是格林威治标准时间,所以和你当地的时间会有出入。

格林威治标准时间和北京时间大概差8个小时左右 那么我们如何避免时间误差呢?

我们一起来看看解决方法:

在页头使用date_default_timezone_set()设置我的默认时区为北京时间。

 代码如下 复制代码


<?  
date_default_timezone_set('PRC');  
echo date('Y-m-d H:i:s');  
?> 


时间和服务器当前时间一样了。

如果发生插入数据库错误的话,请确保 date('Y-m-d H:i:s') 中的 H 为大写。

在php中我们最常用的指定HTML标签可以直接使用strip_tags函数来替换了,利用它可以过滤所有的html标签哦,下面我来给大家介绍除了此函数之外的其它办法。

有时候我们需要把html标签页存到数据库里,但是有些场合却需要拿无html标签的纯数据,这个时候就要对带html标签的数据进行处理,把html标签都去掉。平时用 htmlspecialchars() 来过滤html,但是把html的字符转义了,最后显示出来的就是html源代码,利用strip_tags()就可以把html标签去除掉。


PHP默认的函数有移除指定html标签,名称为strip_tags,在某些场合非常有用。

strip_tags


strip_tags — Strip HTML and PHP tags from a string


string strip_tags ( string str [, string allowable_tags] )

弊端 :


这个函数只能保留想要的html标签,就是参数string allowable_tags。

这个函数的参数allowable_tags的其他的用法。

 代码如下 复制代码


strip_tags($source, ”); 去掉所以的html标签。
strip_tags($source, ‘<div><img><em>’); 保留字符串中的div、img、em标签。

如果想去掉的html的指定标签。那么这个函数就不能满足需求了。


于是乎我用到了这个函数。

 代码如下 复制代码

function strip_only_tags($str, $tags, $stripContent = FALSE) {
  $content = '';
 
  if (!is_array($tags)) {
    $tags = (strpos($str, '>') !== false ? explode('>', str_replace('<', '', $tags)) : array($tags));
    if (end($tags) == '') {
      array_pop($tags);
    }
  }
 
  foreach($tags as $tag) {
    if ($stripContent) {
      $content = '(.+<!--'.$tag.'(-->|s[^>]*>)|)';
    }
 
    $str = preg_replace('#<!--?'.$tag.'(-->|s[^>]*>)'.$content.'#is', '', $str);
  }
 
  return $str;
}


参数说明


$str  — 是指需要过滤的一段字符串,比如div、p、em、img等html标签。
$tags — 是指想要移除指定的html标签,比如a、img、p等。
$stripContent = FALSE  — 移除标签内的内容,比如将整个链接删除等,默认为False,即不删除标签内的内容。

使用说明

 代码如下 复制代码


$target = strip_only_tags($source, array(‘a’,'em’,'b’));移除$source字符串内的a、em、b标签。

$source='<div><a href="" target="_blank"><img src="logo.png" border="0" alt="Welcome to linzl." />This a example from<em>lixiphp</em></a><strong>!</strong></div>
 ';
 
$target = strip_only_tags($source, array('a','em'));
 
//target results
//<div><img src="/logo.png" border="0" alt="Welcome to lixiphp." />This a example from<strong>!</strong></div>

其它办法

 代码如下 复制代码


<?php
//取出br标记
function strip($str)
{
$str=str_replace("<br>","",$str);
//$str=htmlspecialchars($str);
return strip_tags($str);
}
?>


一个自定义的函数

/

 代码如下 复制代码
**
 * 取出html标签
 *
 * @access public
 * @param string str
 * @return string
 *
 */
function deletehtml($str) {
    $str = trim($str); //清除字符串两边的空格
    $str = strip_tags($str,"<p>"); //利用php自带的函数清除html格式。保留P标签
    $str = preg_replace("/t/","",$str); //使用正则表达式匹配需要替换的内容,如:空格,换行,并将替换为空。
    $str = preg_replace("/rn/","",$str);
    $str = preg_replace("/r/","",$str);
    $str = preg_replace("/n/","",$str);
    $str = preg_replace("/ /","",$str);
    $str = preg_replace("/  /","",$str);  //匹配html中的空格
    return trim($str); //返回字符串
}
 
本文章来给大家介绍一个利用PHP转换文件夹下所有文件的编码,这种我们很适用一次批量转换多个文件的编辑哦,注意只转一次哦


实例

 

 代码如下 复制代码
<?php
/**
 * 把一个文件夹里的文件全部转码 只能转一次 否则全部变乱码
 * @param string $filename
 */
function iconv_file($filename,$input_encoding='gbk',$output_encoding='utf-8')
{
if(file_exists($filename))
{
if(is_dir($filename))
{
foreach (glob("$filename/*") as $key=>$value)
{
iconv_file($value);
}
}
else 
{
$contents_before = file_get_contents($filename);
/*$encoding = mb_detect_encoding()($contents_before,array('CP936','ASCII','GBK','GB2312','UTF-8'));
echo $encoding;
if($encoding=='UTF-8')  mb_detect_encoding函数不工作
{
return;
}*/
$contents_after = iconv($input_encoding,$output_encoding,$contents_before);
file_put_contents($filename, $contents_after);
}
}
else 
{
echo '参数错误';
return false;
}
}
iconv_file('./test');
?>
[!--infotagslink--]

相关文章

  • Magento 修正来自首页的产品页面包屑导航

    本文章来给各位朋友介绍Magento 修正来自首页的产品页面包屑导航实现方法,如果产品是从Category产品列表中进入Product详细页面,则面包屑导航中含有Category Path; 否则...2016-11-25
  • Magento新建组件控制器不生效或 404

    今天我们一起来看一篇关于Magento新建组件控制器不生效或 404问题的解决办法,希望碰到此类问题的同学可以和小编一起来看看吧,具体的操作细节如下所示。 检查链接是...2016-11-25
  • Magento 数据保存失败什么原因

    Magento保存不成功是什么原因呢,这个主要是post失败了对于post我们通常可以尝试检查配置问题了,具体的我们一起来看看小编整理的一篇关于Magento post提交数据保存不了...2016-11-25
  • 站长们在选择主机产品时该如何选呢?

    香港主机产品在国内市场上有很多,且大多数都是国内的主机商提供的,由于其品牌众多,站长们在选择主机产品时该如何选择?下面就来给大家介绍几点,来看看吧   国内中小...2017-07-06
  • 3年2B产品运营后总结的8条获客方法

    最近企业级市场上也是各种融资信息不断,比如美亚商旅获1.2亿元融资、斗象科技获7000万元B轮融资。今天运营研究社想和大家分享运营社同学在做了3年2B产品运营后总结的8...2017-07-06
  • Magento 获取购物车产品数量和价格程序代码

    本文章来给各位使用Magento的朋友介绍怎么来获取购物车产品数量和价格并显示出来,下面我来给各位同学详细介绍。 得到购物车所有的产品信息 代码如下 复...2016-11-25
  • PHP实现产品列表分类筛选与排序的项目实例

    在电子商务网站中,产品列表页的分类筛选以及按照用户的意向选择排序几乎都有,比如淘宝。本文我们来分享用php实现这一功能的实例。 一、简单的单条件查询工作都是从...2016-11-25
  • ASP.NET网站模板的实现(第2节)

    这篇文章主要介绍了网站模板是如何实现的,了解母版页在整合页面公共元素、统一页面风格中的作用,感兴趣的朋友可以参考下...2021-09-22
  • php 产品进销存管理系统开发实例教程(1/13)

    本文章来给各位朋友讲一下php 产品进销存管理系统开发实例教程哦。我们先看看有那些功能 首页文件 index.html <HTML> <HEAD> <TITLE> 产品进销存管理系统 </...2016-11-25
  • magento后台无法登录解决办法的两种方法

    可能很多朋友有同样的经历,magento在服务器中配置域名是可以正常的访问了,但是在本地配置后却无法登录后台,账号密码登录的时候发现出现空白,无法跳转到后台,本文章向大家介绍两种解决本地magento后台无法登录的方法,需要的朋友可以参考下...2016-12-17
  • SaaS产品利用内容打动用户的方法

    SaaS产品如何利用内容打动用户呢?今天小编为大家带来的是SaaS产品利用内容打动用户的方法!希望能够帮助到大家!有需要的朋友一起去看看吧 营销自动化是同客户保持联...2017-07-06
  • 如何做好内容运营展开 打造出千万级的产品

    我们发现,一直以来,公众和媒体在感知一个品牌时,都围绕“故事”进行一些想象、推论或者传播。而非图表、逻辑、和数据。这种规律甚至在没有文字的时代同样有效,比如远古时...2017-07-06
  • 平台型产品做好商家运营的方法

    平台型产品如何做好商家运营呢?今天小编将要与大家分享的是平台型产品做商家运营的方法。希望对大家会有帮助,下面就随小编一起去看看具体的详解吧 本文作者结合自...2017-07-06
  • 以简书的网站改版为例 浅谈产品如何完成友好迭代

    日前简书网站进行了一次改版,本次小编就以简书的网站改版为例,来为大家浅谈产品如何完成友好迭代,有兴趣的朋友们就来了解下吧   作者以简书网站的改版为例,简要的...2017-07-06
  • php实现面包屑导航例子分享

    这篇文章主要为大家分享了php实现面包屑导航例子,感兴趣的小伙伴们可以参考一下...2015-12-21
  • 产品经理该如何满足用户的需求

    产品经理在产品设计前,最头疼的问题多是需求的满足度,该如何保障在满足当前需求的前提下还能顺应产品的未来扩展性,往往使产品经理抓耳挠腮。本文先简单介绍几种笔者常用...2016-10-10
  • 利用React高阶组件实现一个面包屑导航的示例

    这篇文章主要介绍了利用React高阶组件实现一个面包屑导航的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-24
  • 本地环境无法登录magento后台问题

    magento在服务器中配置域名是可以正常的访问了,但是有朋友发现magento在本地配置如192.168.1.1这种无法登录了,下面一起来看看如何处理此问题。 在本地安装magento...2016-11-25
  • magento导入csv文件到数据库脚本

    magento导入csv文件到数据库方法我们会使用到一个插件了SplFileObject,利用SplFileObject可以实现大数据量导入了,当然我们自己写得也是可以的,但是不一定比这个要好呀。...2016-11-25
  • 摩拜的上半场战事:拒绝标签化 最关注打磨产品

    摩拜单车的创始人胡玮炜被团队亲切得称呼“胡阿姨”,就像她在北京办公室的工位,并没有自己的独立办公房间,而是和市场、公关部的员工坐在了一起。胡玮炜接受网易直播专访的地方...2016-12-07