我们在Magento商店中看到过许多垃圾邮件产品评论。我最近安装了Fontis reCaptcha扩展程序,以将reCaptcha表单添加到评论表单。在我所有的测试中,这都很好。“真实”用户必须填写reCaptcha部分才能提交表单。但是,这并不能解决问题。我们仍在收到垃圾评论。有趣的是,这些垃圾评论也没有星级。这些垃圾邮件漫游器可以通过某种方式在没有所有必需信息的情况下提交评论,并完全规避reCaptcha代码。关于如何解决此问题有任何想法吗?
我还尝试创建一个简单的脚本,该脚本将表单字段提交给表单的操作URL进行审阅,以绕过逻辑(请参见下文)。我要么无法正常工作,要么根本无法完成工作,但是我总是被重定向到“请启用cookie”页面。
<?php
$curl_connection = curl_init('http://my.domain.com/review/product/post/id/2587/');
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
$post_data = array();
$post_data['ratings[5]'] = '21';
$post_data['nickname'] = 'mynick';
$post_data['title'] = 'my title';
$post_data['detail'] = 'My Review Content';
$post_items = array();
foreach ( $post_data as $key => $value)
{
$post_items[] = $key . '=' . $value;
}
$post_string = implode ('&', $post_items);
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);
$result = curl_exec($curl_connection);
echo "Curl Info:<br><pre>"; …Run Code Online (Sandbox Code Playgroud) 我很难设置一个Cron工作,在设定的时间每天运行一次.这是我在模块配置中的内容:
<crontab>
<jobs>
<sorting_flushcache>
<schedule><cron_expr>0 16 * * *</cron_expr></schedule>
<run><model>sorting/observer::flushProductCacheCron</model></run>
</sorting_flushcache>
</jobs>
</crontab>
Run Code Online (Sandbox Code Playgroud)
根据我对cron作业的了解,这应该在我当地时区的下午5点开始.但是,它永远不会奏效.如果我改为将cron_expr设置为* 16 * * *它,则会在整个小时内每分钟安排一个作业(正如您所期望的那样).
我通过代码追踪,我想我找到了问题,但我不知道有足够的了解cron的调度,以及如何这是真的要工作,所以我希望有人能帮助我了解了什么问题以及如何使我的工作的工作.
Mage_Cron_Model_Schedule是野兽的大脑.当cron.php脚本被服务器的crontab调度调用时,它会调度此类捕获并执行其工作的事件.除此之外,它还会调整配置并尝试安排即将到来的cron作业.在public function trySchedule($time)它内部调用matchCronExpression,传递它所讨论的cron表达式的一部分以及与该cron表达式相对应的当前时间的值.例如,它将cron_expr的第一部分(分钟部分)与当前时间戳的分钟进行比较.在matchCronExpression函数的末尾,它返回一个布尔值,如下所示:
return ($num>=$from) && ($num<=$to) && ($num%$mod===0);
Run Code Online (Sandbox Code Playgroud)
就我而言,我的cron_expr是0 16 * * *.由于我的分钟部分没有任何范围或*/5类型,它将我设置的确切值与当前时间戳的确切值进行比较.这意味着只有在应该安排此作业的确切时刻运行cron脚本时,它才会返回true.
同样,我不是专家,但这对我来说似乎不对.那么,如果你无法预测cron调度程序运行脚本的确切时间,那么应该如何计划每天运行一次作业?我真的希望我错过了什么......有人可以帮忙吗?
- CRON CONFIG INFO -
generate schedules every: 5
schedule ahead for: 10
missed if not run …Run Code Online (Sandbox Code Playgroud) 我之前发布了一个关于此的问题,但我现在有更多的信息,我认为最好发布一个新的而不是修改(抱歉,如果这不是正确的协议).你可以在这里找到我原来的问题.
无论如何,最初的问题是我想在设置集合之后检查List.php类中的集合中的第一个项目,以便我可以抓取类别并使用它来显示评论.这完全基于自定义模块,所以有很多变量.因为我已经尝试过了一个默认Magento的样本店,只增加ONE线app/code/core/Mage/catalog/Block/Product/List.php打破寻呼机.这是详细信息.如果你有任何想法为什么会发生这种情况,请告诉我,因为我被困住了
首先,打开app/code/core/Mage/catalog/Block/Product/List.php并找到该_getProductCollection功能.在if (is_null...)块的末尾添加,$_foo123 = $this->_productCollection->getFirstItem();以便您有一个如下所示的函数:
protected function _getProductCollection()
{
if (is_null($this->_productCollection)) {
$layer = $this->getLayer();
/* @var $layer Mage_Catalog_Model_Layer */
if ($this->getShowRootCategory()) {
$this->setCategoryId(Mage::app()->getStore()->getRootCategoryId());
}
// if this is a product view page
if (Mage::registry('product')) {
// get collection of categories this product is associated with
$categories = Mage::registry('product')->getCategoryCollection()
->setPage(1, 1)
->load();
// if the product is associated with any category
if ($categories->count()) {
// …Run Code Online (Sandbox Code Playgroud) 我创建了一些自定义块,我想支持{{皮肤URL ="..."}}的Magento的动态占位符的功能里面布局更新XML.
<action method="setImageSrc">
<name><![CDATA[{{skin url=images/banners/MyBanner.jpg}}]]></name>
</action>
Run Code Online (Sandbox Code Playgroud)
在我的块类中,我抓住变量(即$this->getImageSrc()),构建HTML并输出它.不幸的是,它实际输出{{skin url ="..."}}.翻译在哪里执行?在输出之前,我可以通过我的HTML来清理它吗?如果是这样,怎么样?
注意:我已尝试使用和不使用CDATA以及URL周围是否有引号.什么都行不通......有些人比其他人更糟糕
我正在尝试为我正在编写的C#WPF应用程序添加打印支持,而我正在为此撕裂我的头发.我正在尝试从WPF应用程序中的窗口打印单个图像.图像是运输标签,打印机是热敏打印机,装有4"x6"运输标签库存.要打印的代码如下:
PrintDialog pd = new PrintDialog();
if (pd.ShowDialog() == true)
{
Image tmpImage = new Image();
tmpImage.Stretch = Stretch.Uniform;
tmpImage.Width = pd.PrintableAreaWidth;
tmpImage.Source = this.img_label.Source;
tmpImage.Measure(new Size(pd.PrintableAreaWidth, pd.PrintableAreaHeight));
tmpImage.Arrange(new Rect(new Point(0, 0), tmpImage.DesiredSize));
pd.PrintVisual(tmpImage, "Shipping Label");
}
Run Code Online (Sandbox Code Playgroud)
此代码的工作原理是它将显示打印对话框,我可以选择我的打印机,将其配置为使用正确的标签库存,然后打印标签.但是,正如其他帖子所示,它不会保存我选择的设置.因此,如果我选择再次打印相同的图像而不关闭其间的应用程序,它将恢复为默认打印机,即使我选择了正确的打印机,也会将该打印机默认设置为默认设置,其中包括使用错误尺寸的标签库存.因此,每次打印时,我都必须选择打印机并将其配置为使用正确的库存.这在现实世界中是不可接受的.
经过大量的在线搜索,我发现了很多关于这个的帖子,但他们都讨论了保存PrintDialog.PrinterSettings对象,然后使用它来初始化下一个PrintDialog实例.但是,在WPF中,没有该类的PrinterSettings成员PrintDialog.这是一个Win Forms对象.为什么Win Forms和WPF PrintDialog对象不同,超出我的意见,但这可能是一个无法回答的问题.真正的问题是我现在做的事情.如有必要,我可以重新发明整个轮子并拥有自己的打印机选择器和打印机配置页面,并使用PrintDocument对象打印图像并PrintDialog完全绕过.除非完全有必要,否则我宁愿不这样做.显示PrintDialog很好,这是人们习惯的,它已经具备了内置打印机的所有能力.但是如何初始化PrintDialogWPF以选择合适的打印机并使用正确的打印机设置?如果我只使用Windows窗体,那么它将被内置.什么是WPF等价物?
第二个问题是,如果没有WPF等价物,建议的方法是什么?我真的不需要让用户能够在我的应用程序中配置打印机.我想要它做的就是记住他们下次打印时选择的先前设置,就像之前编写过的每一个其他PC应用程序一样.怎么会这么难?
任何人都可以提供任何帮助将不胜感激.与此同时,我正在重新发明谚语轮的道路上.我希望很快能得到一个更简单的答案.
谢谢!
我最近通过我们的托管服务提供商Nexcess为我们的Magento商店配置了CDN.我最初只为媒体图像做过这个,但最近也将主题/皮肤文件移到了CDN上.这似乎在前端工作得很好,但我注意到管理员有问题.如果我尝试上传产品图片,则在弹出窗口中选择文件后会失败.它从未向我显示额外的框,我选择它是哪种类型的图像并完成上传.当不安全的皮肤URL指向CDN时,这只是一个问题.如果我再次在本地指出它,一切正常.
我的猜测是它与皮肤文件夹中的javascript有关.有些JS是基于主题而不是在根js/文件夹中,我知道有时远程托管的javascript可能是个问题.我们的CDN URL在我们的子域中,所以我想这样就可以了,但我对这些东西不太了解.
有没有人遇到这个或类似的问题?有任何想法吗?
我似乎无法在这个问题上找到明确的答案.如何在管理员后端获取页面的URL?
例如,假设我有一个模块使用一个名为mymodule的控制器.如果我打电话:
$this->getUrl('mymodule/controller/action')
Run Code Online (Sandbox Code Playgroud)
我明白了:
http://mydomain.com/index.php/mymodule/controller/action
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为它没有包含管理员前缀名称.
我发现这个帖子提到了这个:
Mage::helper("adminhtml")->getUrl();
Run Code Online (Sandbox Code Playgroud)
但是,这并没有将管理员名称附加到URL ...那么通过adminhtml帮助程序传递它的重点是什么?该线程还说你可以用它来获取管理员的名字:
Mage::getConfig()->getNode('admin/routers/adminhtml/args/frontName');
Run Code Online (Sandbox Code Playgroud)
所以我应该使用这两种方法构建正确的URL,还是有更简单的方法来实现这一目标?我认为必须有一个简单的方法,但我无法弄明白.
谢谢 :)
直到现在,我一直在构建一个模块并进行大量更改而没有任何问题.我从扩展程序的system.xml文件中删除了一个配置变量,但该字段仍在配置中.我已禁用所有缓存,刷新所有缓存(通过magento admin和手动删除目录中的所有内容),但它仍然不会消失.作为测试,我使用相同的节点名称将其添加回system.xml文件,但更改标签并获取更改.我也可以通过设置<show_in_...>为0 来隐藏它.但是,在它消失后,我将它从system.xml文件中删除,它再次出现在管理员中.我不得不想象这是一个缓存问题,但我无法弄清楚要冲洗什么以使其消失.有什么想法吗?