2012-05-09 12 views
1

ここにその状況があります。以前のウェブサイトからの古いニュースを、新しいLiferay 6.1サイトのアセット・パブリッシャー・ポートレットに追加したいと考えています。問題は、私が過去に追加したかのように見せたいということです。Liferay API(Liferayジャーナル記事(Webコンテンツ))のcreateDateの変更

だから、createDateを変更するのはどれほど難しいのですか?以来、私はMySQLデータベースに直接アクセスし、記事オブジェクトのcreateDateフィールドの更新を実行することができました。ただし、キャッシュのクリア、検索インデックスの再インデックス付け、およびLiferayの再起動に関係なく、Liferayの展開には反映されていないようです。データベースはそれを私がそれを変更した値として示すにもかかわらず、Webコンテンツはまだそれを '元の' createDateに維持します。

ここで私が使用したクエリです:

mysql> UPDATE JournalArticle SET createDate='2012-03-08 15:17:12' WHERE ArticleID = 16332; 

私は以来、直接データベースを操作するには、no-noでないことを学んできた、データベースのダイナミクスとして/ Liferayはのようにまっすぐ進むのLiferayの実行などではありませんルックアップ。だから、hereのように、Liferay API、つまりsetCreateDateを使用する必要があるようです。

しかし、私はどこでどのようにAPIを活用するかについて全く考えていません。このAPI呼び出しを使用する唯一の目的でダミーのポートレットを作成する必要がありますか?または、私のLiferayデプロイメントを実行しているサーバ上のどこかに.javaファイルを作成し、このメソッドを利用するために実行することができますか?

私はこれを行うために必要な15の記事しかありません。私はArticleIDとGroupIDを参照することでそれらを見つけることができます。

ご協力いただければ幸いです。私はgrepをLiferayのデプロイメントに利用し、setCreateDateがknowledge-base-portlet内の.javaファイル内で頻繁に使用されていることを発見しましたが、ポートレットを作成せずに直接使用する方法はわかりません。

一方、私のデータベースを伝播させる方法を誰かが知っていれば、それがLiferayの展開に変更されていることがわかります。汚いハックだとわかっていても、おそらく最も簡単でしょう。

ありがとうございます。ほんとうにありがとう。

答えて

3

Liferay APIの使用はもちろん明らかに優れていますが、15個の記事ではデータベースを介して直接変更しようとします。

データベースを確認したところ、Liferayはこれらのテーブルにデータを格納しているようです:JOURNALARTICLEASSETENTRY

これらの両方のテーブルで作成日を変更してください。

次に、コントロールパネル - >サーバー管理 - >データベースキャッシュのクリアを実行して、キャッシュを再ロードします。

+0

これで解決しました。ニース!私は、AssetEntryテーブルにも関連するフィールドが含まれていることを認識していませんでした。私が両方の点でそれを変更した場合、それは動作します! – HodorTheCoder

0

アプリケーション起動イベントのフックを書くことができます。 liferayが最初に開始されるたびにこの方法で作成日が変更されます。後でフックを外したい場合は、簡単に行うことができます。フックを作成して展開する方法については、こちらを参照してください。

http://www.liferay.com/community/wiki/-/wiki/Main/Portal+Hook+Plugins

また、データベースに変更自体は全くさえ1つの値/記事のために推奨されません。常にLiferayのサービスAPIを使用して変更してください。

関連する問題