退出Magento填充编辑框
这应该是相当直接的问题,但无法找到如何去做。在前端,我有一个表单,其中包含一些编辑框或input-text
字段。在其中一个用户将写/粘贴博客网址。当用户退出箱子时,我想:退出Magento填充编辑框
- 抓住此URL并从该博客解析/搜索/获取与OpenGraph protocol相关的标记(如果存在)。如果没有这种标签,则会使用通常的
title
和相关标签。 然后用变量的值来填补其他编辑领域目前的形式,标题,注释,说明,图像等
如何能够将这些动作可以完成,AJAX可能?加上jQuery?或者其他解决方案? 现在我已经搜查,这里有一些链接,我想可能是有用的:
- Need to display user's choices realtime in magento
- Using Basic AJAX calls within Magento
- Magento and AJAX.Updater
- Refreshing DIV content with AJAX
我有充分的工作模块,几种不同的模型,布局,控制器,后端管理,几个前端功能等等我甚至不知道从哪里开始,哪些文件需要修改,以及要在表单上添加什么内容。
EDIT
管理来完成第二点,从使用XMLHttpRequest
Ajax请求填使用应答其他输入文件。这里是不同的文件,以防万一有人有不同的解决方案或一些建议。不会显示所有的代码,因为它会太长。
PHTML文件:
<div id="blog_link_block"> <input class="input-text required-entry" onchange="showHint(this.value)"
name="blog_link" id="blog_link_field" type="text" style="width: 210px;"
value="" />
</div>
<div>
<label for="title_field"><?php echo $this->__('Title'); ?>
<span class="required">*</span>
</label><br />
<input class="input-text required-entry" name="title" id="title_field" type="text"
style="width: 450px;" value="" />
</div>
<script type="text/javascript">
function showHint(str)
{
<?php $block = Mage::getBlockSingleton('blogtest/product_view');
$temp = $block->getUrl('blogtest/blogtagsajax/index');?>
if (str.length==0)
{
document.getElementById("title_field").innerHTML = "";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("title_field").value = xmlhttp.responseText;
}
}
xmlhttp.open("GET","<?php echo $temp ?>?q="+str,true);
xmlhttp.send();
}
</script>
布局文件:
<?xml version="1.0" encoding="UTF-8"?> <layout version="0.1.0">
<blogtest_blogtagsajax_index>
<reference name="root">
<remove name="root"/>
</reference>
<block type="blogtest/product_ajax" name="product.ajax" output="toHtml" />
</blogtest_blogtagsajax_index>
</layout>
控制器:
<?php class Dts_Blogtest_BlogtagsajaxController extends Mage_Core_Controller_Front_Action {
public function indexAction() {
$this->loadLayout();
$this->renderLayout();
}
}
PHP文件来处理该请求:
<?php class Dts_Blogtest_Block_Product_Ajax extends Mage_Core_Block_Template {
public function __construct(){
echo self::myFunc();
}
public function myFunc() {
$a[]="Anna";
$a[]="Brittany";
$a[]="Cinderella";
$a[]="Diana";
//get the q parameter from URL
$q=$_GET["q"];
//lookup all hints from array if length of q>0
if (strlen($q) > 0)
{
$hint="";
for($i=0; $i<count($a); $i++){
if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q)))){
if ($hint==""){
$hint=$a[$i];
}
else{
$hint=$hint." , ".$a[$i];
}
}
}
}
if ($hint == ""){
$response="no suggestion";
}
else{
$response=$hint;
}
//output the response
return $response;
}
}
回答:
要回答的第一个问题使用OpenGraphNode图书馆尝试过,但卡住了with some errors。
然后我发现这个question/answer right here on SO和所有问题都没有了。在接受的答案上提出的功能完美地与og:
标签一起工作。这里是我的修改版本:
function file_get_contents_curl($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
public function myFunc() {
// get the q parameter from URL
$q = $_GET["q"];
$html = self::file_get_contents_curl($q);
//parsing begins here:
$doc = new DOMDocument();
@$doc->loadHTML($html);
$nodes = $doc->getElementsByTagName('title');
$title = $nodes->item(0)->nodeValue;
$metas = $doc->getElementsByTagName('meta');
for ($i = 0; $i < $metas->length; $i++){
$meta = $metas->item($i);
if($meta->getAttribute('name') == 'og:title')
$title = $meta->getAttribute('content');
if($meta->getAttribute('name') == 'og:description')
$description = $meta->getAttribute('content');
if($meta->getAttribute('name') == 'keywords')
$keywords = $meta->getAttribute('content');
}
$title = trim($title);
if ($title == ""){
$response = "no title";
}
else{
$response = $title;
}
//output the response
return $response;
}
以上是 退出Magento填充编辑框 的全部内容, 来源链接: utcz.com/qa/263785.html