Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Joomla自定义参数类型和保存值_Php_Parameters_Joomla_Joomla1.5_Joomla Module - Fatal编程技术网

Php Joomla自定义参数类型和保存值

Php Joomla自定义参数类型和保存值,php,parameters,joomla,joomla1.5,joomla-module,Php,Parameters,Joomla,Joomla1.5,Joomla Module,我是Joomla development的新手,似乎在任何地方都找不到关于如何解决我的问题的像样的文档。这是我的目标:我想创建一个Joomla模块,允许用户从存储库中提取内容,并将其显示在模块位置(我的公司为我们的度假村运营50多个网站,每个网站都有公共数据,在每个网站上维护这些数据非常耗时)。我已经创建了能够显示我的中心内容存储库中的内容项的模块,我希望用户能够从我的中心存储库中的所有可用片段中选择一个内容片段。我已经创建了自定义类型,它创建了一个选择框,其中包含用户可以选择的每个代码段的标题

我是Joomla development的新手,似乎在任何地方都找不到关于如何解决我的问题的像样的文档。这是我的目标:我想创建一个Joomla模块,允许用户从存储库中提取内容,并将其显示在模块位置(我的公司为我们的度假村运营50多个网站,每个网站都有公共数据,在每个网站上维护这些数据非常耗时)。我已经创建了能够显示我的中心内容存储库中的内容项的模块,我希望用户能够从我的中心存储库中的所有可用片段中选择一个内容片段。我已经创建了自定义类型,它创建了一个选择框,其中包含用户可以选择的每个代码段的标题和ID。我遇到的问题是,在用户选择一个代码段并保存之后,Joomla立即忘记了用户的选择,什么也不显示。自定义参数类型生成的代码示例如下:

<select name="ucr_content_id">
    <option value="0">None</option>
    <option value="8">Resort Page --  Atrium</option>
    <option value="14">Resort Page -- Blue Heron</option>
    <option value="15">Resort Page -- Blue Ridge Village </option>
    <option value="16">Resort Page --  Cabins at Green Mountain</option>
    <option value="17">Resort Page -- Church Street Inn</option>

    <option value="18">Resort Page -- Ellington</option>
    <option value="19">Resort Page -- Festiva Sailing Vacations</option>
    <option value="20">Resort Page -- Frenchmen Orleans</option>
    <option value="21">Resort Page -- Main Street Inn</option>
    <option value="22">Resort Page -- Mirror Lake/Tamarack</option>
</select>

没有一个
度假村页面-中庭
佩奇度假村——蓝鹭酒店
佩奇度假村——蓝岭村
度假村页面——青山小屋
佩奇度假酒店
佩奇度假村——埃灵顿
度假区网页-节日帆船度假
佩奇度假村——法国人奥尔良
佩奇度假村——主街酒店
度假村页面——镜湖/塔马拉克
我的自定义类型的代码是:

<?php
class JElementSnippetList extends JElement {

var $_name = "snippetList";
function fetchElement($name, $value, &$node, $control_name) {
    // Base name of the HTML control.
    $ctrl = $control_name . '[' . $name . ']';
    $data = array();
    // Construct the various argument calls that are supported.
    if ($v = $node -> attributes('snippettype')) {
        $data["type"] = $v;
    }
    $startTag = '<select name="'.$name.'"><option value="0">None</option>'.PHP_EOL;
    $list_response = JElementSnippetList::post_request("http://path.to.repository/fetchSnippetList.php", $data);
    if($list_response["status"] == 'ok'){
        return $startTag.$list_response['content'];
    }
}

public static function post_request($url, $data) {
    $output = array();
    foreach ($data as $key => $value) {
        if(is_object($value) || is_array($value)){
            $data[$key] = serialize($value);
        }
    }
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    $result = curl_exec($ch);
    if ($result) {
        $output['status'] = "ok";
        $output['content'] = $result;
    } else {
        $output['status'] = "failure";
        $output['error'] = curl_error($ch);
    }
    curl_close($ch);
    return $output;
}
}
?>

通用内容存储库


好的,我找到了解决问题的方法。显然,您必须使用$value参数在getSnippetContent()函数中指定一个值

<?xml version="1.0" encoding="utf-8"?>
<install type="module" version="1.5.0">
<name>Universal Content Repository</name>
<author>Brendon Dugan</author>
<version>1.5.0</version>
<description>A module to allow the insertion of UCR Snippets into a Joomla site.</description>
<files>
    <filename>mod_ucr.xml</filename>
    <filename module="mod_ucr">mod_ucr.php</filename>
    <filename>index.html</filename>
    <filename>helper.php</filename>
    <filename>tmpl/default.php</filename>
    <filename>tmpl/index.html</filename>
    <filename>elements/snippetList.php</filename>
    <filename>elements/index.html</filename>
</files>
<params addpath="/modules/mod_ucr/elements">
    <param name="ucr_repository" type="text" default="http://path.to.repository/" label="Repository Fetch URL" description="" size="40" />
    <param name="ucr_script_id" type="snippetList" snippettype="js" default="" label="Script ID" description="" />
    <param name="ucr_css_id" type="snippetList" snippettype="css" default="" label="CSS ID" description="" size="10" />
    <param name="ucr_content_id" type="snippetList" snippettype="content" default="" label="Content ID" description="" size="10" />
</params>
</install>