2012-01-04 5 views
0

私はJoomlaの開発には新しく、私の問題を解決する方法についてはまったくまともな文書を見つけることができないようです。ここで私の目標は次のとおりです。ユーザーがリポジトリからコンテンツをプルしてモジュールの位置に表示できるようにするJoomlaモジュールを作成したい(私の会社はリゾートのウェブサイトを50カ所以上運営しています。サイト単位で維持するために消費する)。中央のコンテンツリポジトリからコンテンツアイテムを表示できるモジュールを作成しました。中央のリポジトリから利用できるすべてのスニペットからコンテンツスニペットを選択できるようにします。カスタムタイプを作成し、ユーザーが選択できるすべてのスニペットのタイトルとIDを含む選択ボックスを作成します。私が抱えている問題は、ユーザーがスニペットを選択して保存した後、Joomlaはすぐにユーザーの選択を忘れて何も表示しないということです。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> 

と私のカスタムタイプのコードは次のとおりです:私のカスタムパラメータの種類によって生成されたコードの例がある

<?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> 
:また

<?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; 
} 
} 
?> 

、ここに私のXML設定ファイルであります

アイデア私は、次のチュートリアルを見てきたが、Joomlaののドキュメントのほとんどと同じように、彼らは重要な情報を除外するように見える:

Custom Parameter Types

Multi-Item Select Parameter Type

SQLMultiSelectX

答えて

0

[OK]を、ので、私は解決策を発見しました問題にどうやら、$ valueパラメータを使用してgetSnippetContent()関数の値を指定する必要があります。

関連する問題