4

私は Joomla を初めて使用し (率直に言って、Joomla を使用する可能性を検討し始めたばかりです)、Joomla のバックエンド テーブルに記事をプログラムで追加する際に助けが必要です (以下の詳細を参照してください)。また、同じように、列の値をどのようにすべきかを理解したいと思います:

  • 親ID
  • リフト
  • rgt
  • レベル

テーブルjos_assets( #__assets) 用に生成され、それらの機能的役割は何か (たとえば、ファイルを一意に識別するための OS i ノードに類似した「ポインタ/インデックス」であるか、カテゴリ、サブカテゴリなどの識別などのより機能的な属性であるか)

私がやろうとしていることを説明するために、次の簡略化された例を使用すると役立つ場合があります。Web 記事の著者名、記事の主題の種類、記事の日付、記事へのリンクなど、さまざまな重要な情報を収集するプログラムがあるとします。このプログラムを拡張して、この情報をプログラムで Joomla に保存できるようにしたいと考えています。現在、この情報はカスタム テーブルに格納されており、ユーザーはカスタム php Web ページを介して、著者名などの検索基準を特定の日付範囲で使用して、関心のある記事を見つけることができます。この検索の結果は、実際の記事へのハイパーリンクとともに表示されます。記事は Web サーバーにローカルに保存され、外部リンクではありません。

Author   date         type    html_file
Tom      08-14-2011   WEB     /tech/11200/ar_324.html
Jim      05-20-2010   IND     /tech/42350/ar_985.html

Joomla が提供するすべての利点により、カスタム php 検索およびプレゼンテーション ページを作成したり、トレンディングなどを行ったりすることができるため、Joomla に切り替えたいと考えています。たとえば、既存の php プログラム (データのコンパイルに使用される) から Joomla にデータを入力し、Joomla を使用するためにプログラムでデータを入力できるテーブルなどが#__assetsあります。#__content

例、提案、ヘルプは大歓迎です

宜しくお願いします ガル

4

2 に答える 2

5

最初のメモ: Joomla 1.6/1.7 はかなり似ています。1.5 あまりない。1.6/1.7 を想定します。これは、新しいプロジェクトのベースとして推奨するものです。

まず、Joomla フレームワークにアクセスできる状態で実行する必要があります。これは、コンポーネント、モジュール、またはそれをブートストラップする cron などを通じて行うことができます。その方法については行きません。

しかし、それができれば、記事の作成はかなり簡単です。

<?php
require_once JPATH_ADMINISTRATOR . '/components/com_content/models/article.php';

$new_article = new ContentModelArticle();

$data = array(
    'catid' => CATEGORY_ID,
    'title' => 'SOME TITLE',
    'introtext' => 'SOME TEXT',
    'fulltext' => 'SOME TEXT',
    'state' => 1,
);
$new_article->save($data);

フィールドの実際のリストはそれよりも少し長くなりますが (必須フィールドなど)、それを明らかにする Joomla フレームワークから適切なエラー メッセージなどを取得する必要があります。

要約すると:

  • Joomla フレームワークをロードして、DB、コンポーネント、モデルなどにアクセスできるようにします
  • 検証、データベースへの保存などを処理する com_content article クラスを含めます。
  • 必要に応じて入力された必須フィールドで記事インスタンスを作成します
  • save() を呼び出す

考えてみれば、それはおそらく1.5で動作します...

于 2011-09-05T22:29:31.053 に答える
2

エラーなしでこれを行うためのより良い方法を見つけました Joomla を作成してください! プログラムによる記事

$table = JTable::getInstance('Content', 'JTable', array());

$data = array(
    'catid' => 1,
    'title' => 'SOME TITLE',
    'introtext' => 'SOME TEXT',
    'fulltext' => 'SOME TEXT',
    'state' => 1,
);

// Bind data
if (!$table->bind($data))
{
    $this->setError($table->getError());
    return false;
}

// Check the data.
if (!$table->check())
{
    $this->setError($table->getError());
    return false;
}

// Store the data.
if (!$table->store())
{
    $this->setError($table->getError());
    return false;
}
于 2012-09-28T17:09:21.757 に答える