我想为我的小商店找到一个电子商务解决方案.我的朋友告诉我,Prestashop很容易使用和开发模块,但有人说Magento更好.谁能告诉我哪个更适合开发模块?为什么?
过去几个小时我一直坚持这个.我通过乱砍几行来解决这个问题/lib/Varien/Data/Collection/Db.php,但是我宁愿使用正确的解决方案并保持我的核心不受影响.
我需要做的就是获取一个集合并通过两个或多个字段对其进行过滤.说,customer_firstname和remote_ip.这是我的(没有黑客的功能Db.php)代码:
$collection = Mage::getModel('sales/order')->getCollection()->
addAttributeToSelect("*")->
addFieldToFilter(array(array('remote_ip', array('eq'=>'127.0.0.1')),
array('customer_firstname', array('eq'=>'gabe'))), array('eq'=>array(1,2,3)));
Run Code Online (Sandbox Code Playgroud)
有了股票Db.php,我尝试了这个:(样本取自http://magentoexpert.blogspot.com/2009/12/retrieve-products-with-specific.html)
$collection->addFieldToFilter(array(
array('name'=>'orig_price','eq'=>'Widget A'),
array('name'=>'orig_price','eq'=>'Widget B'),
));
Run Code Online (Sandbox Code Playgroud)
但这给了我这个错误:
Warning: Illegal offset type in isset or empty in magento/lib/Varien/Data/Collection/Db.php on line 369
Run Code Online (Sandbox Code Playgroud)
如果我用try/catch包装它,那么它会进入_getConditionSql()并给出这个错误:
Warning: Invalid argument supplied for foreach() in magento/lib/Varien/Data/Collection/Db.php on line 412
Run Code Online (Sandbox Code Playgroud)
有没有人有任何工作,功能代码这样做?我正在运行Magento 1.9(企业版).谢谢!
我对我看到的电话有点困惑Mage::getSingleton,我希望有人可以帮我理解一点.
我看过一段核心代码可以做到这一点:
Mage::getSingleton('customer/session')->isLoggedIn()
Run Code Online (Sandbox Code Playgroud)
我不知道PHP,但我认为我可以在一个安全的假设getSingleton方法名,将有只有一个指定的类(类被指定为分组类名,并决心对实例app/code/core/Mage/Customer/Model/Session.php-含类Mage_Customer_Model_Session.
问题1 -
如何知道getSingleton方法在类的Model文件夹中查找?
问题2 -
所以整个类有一个实例...我想说JVM因为我来自Java背景,但我会说PHP引擎希望这是一个模糊的正确术语; 在Mage_Customer_Model_Session没有在客户ID或任何此类标识符过去了,但我们所说的方法isLoggedIn()!Mage_Customer_Model_Session假设每个客户没有实例,当我们没有告诉客户我们正在谈论的客户时,我们如何询问客户是否登录?
问题3 -
我已经看到了通话Mage::getSingleton('core/session')和Mage::getSingleton('customer/session')-的区别是什么?
感谢您的任何帮助.
我需要在nginx服务器上启用gzip压缩.正如我从firfox firebug NET工具中观察到的,我发现html文件是gzip压缩的.但不是javascript文件和CSS文件.
我已经检查的mime.types和nginx的配置文件/etc/nginx/ngnix.conf并没有发现任何问题.仍然无法看到css和javascript Gzip压缩.我的NGINX.conf条目如下
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
Run Code Online (Sandbox Code Playgroud) 我是一个前端Magento开发者,已经构建了我自己的一些主题,我想更好地理解Magento的XML块定位...
我通常使用一个local.xml文件来操作一切,我可以按如下方式定义一个块:
<cms_index_index>
<reference name="root">
<block type="core/template" name="example_block" as="exampleBlock" template="page/html/example-block.phtml"/>
</reference>
</cms_index_index>
Run Code Online (Sandbox Code Playgroud)
这将在主页(cms_index_index)上创建一个块,并且由于块创建了一个级别root,我通常会通过添加以下内容来调用块:
<?php echo $this->getChildHtml('exampleBlock') ?>
Run Code Online (Sandbox Code Playgroud)
......到1column.phtml(或2columns-left/ right.phtml,3columns.phtml等等).可以通过替换cms_index_index适当的页面标记将块放置在任何页面上.
我在整个核心XML文件和教程中看到如下内容:
<reference name="root">
<block type="core/template" name="example_block" before="content" template="page/html/example-block.phtml"/>
</reference>
Run Code Online (Sandbox Code Playgroud)
content是一个块,它是magento的一般页面结构的一部分,从我的理解,before="content"应该把它放在你期望的地方,而不需要使用getChildHtml('exampleBlock'),到目前为止那么好...但是,之前/之后似乎几乎没有工作我,我经常发现自己使用getChildHtml方法作为备份,这并不总是理想的,并且意味着编辑更多.phtml文件而不是必要的.
我试过了:
<reference name="root">
<block type="core/template" name="example_block" before="content" template="page/html/example-block.phtml"/>
</reference>
Run Code Online (Sandbox Code Playgroud)
什么都没出现......
<reference name="root">
<block type="core/template" name="example_block" after="header" template="page/html/example-block.phtml"/>
</reference>
Run Code Online (Sandbox Code Playgroud)
仍然没有....我也知道在它的父块之前使用before="-"或after="-"放置一些东西.我偶尔会有一些运气,但一般只会感到困惑和沮丧.
我已经搜索了"magento xml之前/之后不工作"的地方,并开始怀疑它是否只是我发生这种情况......任何人都可以解释我什么时候可以使用之前/之后定位块?上面的例子有什么问题?
我在magento 1.7.0.2(发布时最新的)
这样做的主要动机是减少我需要编辑的核心.phtml文件的数量,只是为了添加一个getChildHtml(),所以如果有另一种(XML)方式来解决这个问题,我有兴趣知道......
在安装过程中,Magento会产生以下错误:
数据库服务器不支持InnoDB存储引擎.
我已经修复了Magento的所有依赖项,并使用SHOW ENGINES在命令行上使用MySQL进行了双重检查,并且肯定有InnoDB可用(也是默认的存储引擎).
这不是访问MySQL配置的问题,其他人可能已经在安装时看到了这一点.
注意:这是在Mac Pro上运行的(我正在开发的域名使用简单的主机DNS重写).
我有一个名为newest_product(带内容)的静态块,我想将其显示在.phtml文件中html.
我试过这段代码:
echo $this->getLayout()->createBlock('cms/block')->setBlockId('newest_product')->toHtml();
Run Code Online (Sandbox Code Playgroud)
但这一切都没有显示出来.
我使用错误的代码吗?
在magento网站上一起使用bootstrap 3和prototype.js时遇到问题.
基本上,如果你点击下拉菜单(我们的产品),然后单击背景上,在下拉菜单中(我们的产品)消失(prototype.js中增加了"显示:无;"给力).
以下是该问题的演示:http: //ridge.mydevelopmentserver.com/contact.html
你可以看到下拉菜单的工作方式应该没有,不包括下面链接页面上的prototype.js:http: //ridge.mydevelopmentserver.com/
有没有其他人之前遇到过这个问题或者有可能的冲突解决方案?
容易修复:
用这个bootstrap友好的文件替换Magento的prototype.js文件:
您可以在prototype.js文件中看到更改以修复引导程序问题:
https://github.com/zikula/core/commit/079df47e7c1f536a0d9eea2993ae19768e1f0554
注意:在prototype.js之前,JQuery必须包含在你的magento皮肤中.例如:
<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/prototype/prototype.js"></script>
<script type="text/javascript" src="/js/lib/ccard.js"></script>
<script type="text/javascript" src="/js/prototype/validation.js"></script>
<script type="text/javascript" src="/js/scriptaculous/builder.js"></script>
<script type="text/javascript" src="/js/scriptaculous/effects.js"></script>
<script type="text/javascript" src="/js/scriptaculous/dragdrop.js"></script>
<script type="text/javascript" src="/js/scriptaculous/controls.js"></script>
<script type="text/javascript" src="/js/scriptaculous/slider.js"></script>
<script type="text/javascript" src="/js/varien/js.js"></script>
<script type="text/javascript" src="/js/varien/form.js"></script>
<script type="text/javascript" src="/js/varien/menu.js"></script>
<script type="text/javascript" src="/js/mage/translate.js"></script>
<script type="text/javascript" src="/js/mage/cookies.js"></script>
<script type="text/javascript" src="/js/mage/captcha.js"></script>
Run Code Online (Sandbox Code Playgroud) 在Magento中,有一个功能,您可以通过指定在运行总计之前和之后来定义总计算的顺序.
我添加了一个自定义总计,如果我将以下行添加到config.xml,则排序错误.错误的意思是:tax_shipping来之前 shipping.这会导致运费的税费增加两倍.
但这违反了这一条件
tax_shipping
after: shipping
Run Code Online (Sandbox Code Playgroud)
我的猜测:整套规则必定存在一些矛盾.但我怎么能找到它呢?
这是我添加的唯一规则.没有这个规则,tax_shipping就会排序shipping.
<shippingprotectiontax>
<class>n98_shippingprotection/quote_address_total_shippingprotectionTax</class>
<after>subtotal,discount,shipping,tax</after>
<before>grand_total</before>
</shippingprotectiontax>
Run Code Online (Sandbox Code Playgroud)
下面我粘贴usort调用返回的已排序数组.Mage_Sales_Model_Quote_Address_Total_Collector::_getSortedCollectorCodes()
对于那些没有安装Magento的人,代码如下:
/**
* uasort callback function
*
* @param array $a
* @param array $b
* @return int
*/
protected function _compareTotals($a, $b)
{
$aCode = $a['_code'];
$bCode = $b['_code'];
if (in_array($aCode, $b['after']) || in_array($bCode, $a['before'])) {
$res = -1;
} elseif (in_array($bCode, $a['after']) || in_array($aCode, $b['before'])) {
$res = 1;
} else { …Run Code Online (Sandbox Code Playgroud) 我安装了Magento,登录管理面板.但是,如果我按任何链接打开让我们说CMS页面或用户配置,我得到这样的错误:
处理您的请求时出现错误出于安全原因,默认情况下禁用异常打印.
错误日志记录号:673618173351
该错误日志记录编号看起来像一个链接,但按下它没有任何反应.我试图在magento文件中查找一些日志文件,但没有找到任何日志文件.
所以实际上我只能连接到管理面板,但这里不能做任何事情.
可能有什么不对?我安装了最新的Magento版本(magento-1.7.0.2).默认前端打开并运行.
PS
如果需要任何其他信息,请说出来
更新:
因此在日志中每个错误都是相同的(只是访问的资源不同).
a:5:{i:0; s:71:"无法确定临时目录,请手动指定cache_dir"; i:1; s:4546:"#0 /home/geniusinsi/domains/example.com/public_html /lib/Zend/Cache/Backend.php(197):Zend_Cache :: throwException('无法阻止......')
据我所知,我需要在某处指定现金目录?
magento ×10
php ×4
e-commerce ×1
graph-theory ×1
gzip ×1
innodb ×1
magento-1.7 ×1
magento-1.9 ×1
mysql ×1
nginx ×1
prestashop ×1
prototypejs ×1
sorting ×1
xml ×1