1

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_randomARTICLESspip_articles

4

2 に答える 2

1

私はついに答えを見つけます。

SPIP は、関数、キーワード、および SQL 列を含むデフォルト言語としてフランス語を使用します!

objetこのコードを使用して動作させる必要がありid_objetました(欠落していることに注意してcください):

CREATE TABLE IF NOT EXISTS `spip_random` (
  `id_random` bigint(21) NOT NULL AUTO_INCREMENT,
  `objet` varchar(25) NOT NULL,
  `id_objet` 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 `objet` (`objet`,`id_objet`),
  KEY `id_random` (`id_random`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
于 2014-12-09T16:36:56.827 に答える
0

発行日を使わないのはなぜですか?そして、その日の記事を表示するだけです。

于 2015-12-14T16:01:44.610 に答える