SPIPを使用して、毎日ランダムに記事を選択するシステムを作ろうとしています。今日の記事を保存する必要がある主な理由は 2 つあります。
- 誰もがその日の同じ記事を持っていることを確認してください
- 別の日に同じ記事が 2 回選ばれるのを避ける
選択したアイテムを保存できるようにするために、汎用テーブルを作成しました。
CREATE TABLE IF NOT EXISTS `spip_random` (
`id_random` bigint(21) NOT NULL AUTO_INCREMENT,
`object` varchar(25) NOT NULL,
`id_object` bigint(21) NOT NULL DEFAULT '0',
`type` text NOT NULL,
`date_picked` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id_random`),
KEY `object` (`object`,`id_object`),
KEY `id_random` (`id_random`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
格納できる行の束を次に示します。
(1, 'article', 54, 'article_of_the_day', '2014-11-29 00:03:54')
(2, 'article', 198, 'article_of_the_day', '2014-11-30 09:32:03')
(3, 'article', 113, 'article_of_the_day', '2014-12-01 14:11:04')
(4, 'article', 3, 'article_of_the_day', '2014-12-02 11:52:28')
今日の記事を選択するスクリプトはうまく機能します。
現在、SPIP ループでこの記事を取得しようとすると、問題に直面しています。私はこの種のループを使用することを考えていました:
<BOUCLE_day(ARTICLES spip_random) {par date_picked} {inverse} {0,1}>
#ID_ARTICLE
</BOUCLE_day>
SPIP ドキュメント ( EN / FR ) で説明されているように、次の 2 つのフィールドがあるため、結合は と の間spip_articles
で行う必要があります。spip_random
object
id_object
しかし、何も返されません。
この単純なループを試すと、次のように表示されます#ID_OBJECT
。
<BOUCLE_day(spip_random) {par date_picked} {inverse} {0,1}>
#ID_OBJECT
</BOUCLE_day>
カスタム テーブル ( ) と( ) を結合できません。何か不足していますか?spip_random
ARTICLES
spip_articles