タグ付けされた質問 「development」

このタグは、Joomlaの機能や拡張機能の開発に関する質問です。

1
MVCモデルを使用してレコードをロード、変更、保存するにはどうすればよいですか?
グーグル後など すべてのプラグインイベントなどが行われるように、Joomlaに新しいカテゴリを追加する以下のコードに到達しました。 $basePath = JPATH_ADMINISTRATOR.'/components/com_categories'; require_once $basePath.'/models/category.php'; $catmodel = new CategoriesModelCategory(array('table_path' => $basePath.'/tables')); $myArrayOfData = array('id'=>'0','title'='my title'...); $catmodel->save($myArrayOfData); 現状では、同じコードを使用してレコードを更新していますが、追加するデータ配列の新しいコピーの代わりに、SQLを使用して既存のレコードを配列として取得し、同じ方法で変更して保存しています。 これは「機能」しますが、正しい方法とは思えないため、CategoryのIDを使用してモデルをロードし、そのメソッドを使用して変更/保存する方法に興味があります。私は、Category Componentが実行するときに実行されるコードを試してみましたが、それがどのように行われるかを詳しく説明するには、あまりにも多くのことが起こっています。

1
JUri :: base()の問題、サブドメインを失う
これはバグである可能性がありますが、私は何かを見落としているに違いないと確信しています。 基本的にJUri::base()はサブドメインパスを削除しています。これはJoomlaステージング環境のあるサイトグラウンドにあるため、取得する必要があるドメインはhttp://staging1.domain.com取得されhttp://domain.comますが、代わりに取得されます。 JUri::base()テンプレートファイルでテストしましたが、正しく機能しましたが、サイト用に構築されたカスタムコンポーネントでは機能しませんでした。 以下にその使用方法を示します。 $tmpFileName = md5($id.$Itemid.time()).'.pdf'; file_put_contents( JPATH_SITE.'/tmp/'.$tmpFileName, file_get_contents( JUri::base() .'index.php?option=com_component&view=finish&format=pdf&tmpl=component&data=' .$id .'&Itemid=' .$Itemid ) ); 上記のコードは、生成されたpdfファイル(pdfビュー)を開き、それをtmpディレクトリーに保存します。その後、スクリプトの後半にそれを添付ファイルとして含めます(後から削除します)。 この領域でJUri::base()電子メールに追加すると(送信された電子メールに従ってそれが何であるかを確認できるため)、サブドメインが削除されます。この機能を実行するコントローラーへのリダイレクトが正しいことを確認しましたが、URLが表示される理由この関数だけで不適切なアウトを回避できます(正常にJRoute動作します)。 JUri::base(true)サーバーがファイルのコンテンツを取得しようとしているため使用できません。URLがないと、ファイルを正しく取得できません。また$live_site、configuration.phpファイルで変数を確認しましたが、これが要因ではないことを確認しました。 ほとんどの場合、私が見落としている愚かなことである可能性が高く、おそらく私の目の前にあります。調査結果が出たら、質問を更新します。これを引き起こす可能性のあるものはありますか?または誰かが似たようなことに遭遇しましたか? バージョンは3.3.1です 更新: より深く潜り、ここに私の発見があります。 私はそれがJUri::base()完全に間違っていると考えていましたが、間違った変数を取得しているのを見てきましたが、証拠はありません。結果は同じですが、ステージングサイトではなくライブサイトから情報を取得しています。 私はすべてのコードの実行をテストし、生成したURLに直接移動したときに生成されたpdfを確認します。PDFは完全に作成されますが、file_get_contents関数を実行すると、完全に異なる処理を実行します(間違った場所からpdfを取得します) URLは正しいようですが、テストは機能しました)。 私はサイトでhtpasswdを使用していることに気付きました。file_get_contents関数はサーバー自体からURLにアクセスするため、認証する必要があるため、このステージング環境で最初にPDFを生成する方法はありませんでした。これにより、htpasswdのないライブサイトからPDFが生成されていることが確認できます。

1
ページネーションの混乱-ページネーションはstartを使用し、PopulateStateはlimitstartを使用しますか?
少し混乱しています。 フロントエンドのページネーションによって作成されたリンクを見ると、個々のページ番号リンクと開始リンクと終了リンクに含まれているstartというクエリパラメーターが表示されて います。 ただし、populateState基本JModelListクラスのメソッドはlimitstartifに$this->contextがあるかどうかを探しnon null valueます。 JModelListセットの基本コンストラクター$this->contextが等しい<component_name>.<model_name>場合のデフォルトの場合$this->contextはnullにはならないため、populateStateは通常、$_GET['limitstart']使用さgetUserStateFromRequest()れる値を割り当てられます。 $value = $app->getUserStateFromRequest($this->context . '.limitstart', 'limitstart', 0); $limitstart = ($limit != 0 ? (floor($value / $limit) * $limit) : 0); $this->setState('list.start', $limitstart); なぜこのように処理が行われるのか、およびページを開始する行を保持する変数について合意するために、populateStateとページネーションを取得するために何をしなければならないかを誰かが説明できたら、本当にありがたいです。 TIA。

3
安全なJoomla拡張機能を開発する方法は?
最初の拡張機能を作成する前に、できる限り脆弱でないように設計する方法を理解したいと思います。 安全なJoomla拡張機能を作成するための一連のルールはありますか? 私はSQLインジェクションだけが脅威の可能性があると想像できるので、フォームの入力をそのままSQLコマンドに直接挿入することはできません。 カスタムモジュールまたはプラグインを作成するときに注意する必要のある他の攻撃ベクトルは何ですか?

1
view.raw.phpを適切に使用するにはどうすればよいですか
JToolbarリストの内容をExcelにエクスポートするカスタムボタンをリストビューに追加しようとしています。リストコントローラーに新しいタスクを作成して、rawビュークラスをview.raw.phpというファイルにレンダリングしました。ただし、生データのみをロードするコンテンツを取得できません。 関連するコントローラーコードをcom_bannerstracks.raw.phpコントローラーからコピーしました コントローラー方式: public function exportToExcel() { // Get the document object. $document = JFactory::getDocument(); $vName = 'Mylist'; $vFormat = 'raw'; // Get and render the view. if ($view = $this->getView($vName, $vFormat)) { // Get the model for the view. $model = $this->getModel($vName); // Push the model into the view …


3
Joomlaのバージョン間で異なるメソッドシグネチャの「厳格な標準」警告を解決する方法
Joomla 3.xをサポートするように拡張機能を更新する際に、関数のシグネチャが2.5以降に変更され、Strict standards警告が表示されるいくつかのケースに遭遇しました。 たとえば、JTableクラスで_getAssetParentId()は、 protected function _getAssetParentId($table = null, $id = null) { ... } Joomla 3.xでこれを行うには: protected function _getAssetParentId(JTable $table = null, $id = null) { ... } それは小さな違いですが、警告をスローするのに十分です。 単一のクラスファイルを使用してJoomla 2.5および3.0をサポートする他の拡張機能を見ると、問題を無視しているように見えます。 明らかに、3.xの警告を修正すると、2.5がインストールされ、警告がスローされます… 私たちの選択肢ではない「ソリューション」には、次のものがあります。 2つの個別のバージョン固有のクラスファイルを使用する 警告をオフにする この競合をどのように解決しますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.