はじめに
私は、このシステムが面白い被験者のサイトで需要があることに注目したいと思います。 理解しやすく、システムは使いやすく、十分な数のモジュールとテンプレートを備えています。 はい、必要なものはほとんどすべてすぐに使用できます。 ただし、何かが欠落していることが起こります。 この問題を解決しようとします。
なぜDLEなのか?
おそらく、この特定のCMSを選んだ理由に興味があるでしょう。 答えは簡単です。エンジン自体のかなり論理的な構造、コードからのテンプレートの分離、かなり単純なテンプレートエンジン、そして内部のすべてのもののかなり論理的な配置です。 さらに、システムは比較的軽量で便利です。 たとえば、Drupalほど機能的ではありませんが、それでも気に入っています。
構造
まず、エンジンの構造について何かを知る必要があります。 サーバーを台無しにすることはできないため、すべてをフォルダーに保存します。
通常、エンジンのモジュールは/ engine / modules /フォルダーに配置されます。
/ engine / inc /フォルダーには、管理パネルファイルがあります。
バージョン8.x以降、プラグインはテンプレートに直接表示されました。 テンプレートは/ templates / template_name /フォルダーにあります。 このフォルダにはmain.tplファイルがあり、これはテンプレートのルートファイルであり、通常はテンプレートのメイン構造がそこにあります。 通常、モジュールは次のように接続できます。
{include file = "engine / modules / mod_category.php"}
mod_category.phpは、/ engine / modules / categoryにあるファイルです。 これですべてが明確になったと思います。
キャッシュされた最新のコメントを表示するモジュールを作成しましょう。 これを行うには、/ engine / modules /フォルダーにファイルを作成し、mod_lastcomm.phpと呼びます。次に、このファイルのコードリストと詳細なコメントを提供します。
コード
<?php /* '<i>DATALIFEENGINE</i>'. index.php TRUE , include/require, . */ if(!defined('DATALIFEENGINE')) { die("Hacking attempt!"); } /* api, . */ include ('engine/api/api.class.php'); /* , lastcomm. , . <b>lastcomm</b> – <i>/engine/cache/</i>, <b>60</b> – . , , 60 , . */ $lastcomm=$dle_api->load_from_cache( "lastcomm", 60); /* – . , . */ if (!$lastcomm) { /* . $db. PREFIX , cms. , . $sql. */ $sql = $db->query("SELECT comments.post_id, comments.text, comments.autor, post.id, post.flag, post.category, post.date as newsdate, post.title, post.alt_name FROM " . PREFIX . "_comments as comments, " . PREFIX . "_post as post WHERE post.id=comments.post_id ORDER BY comments.date DESC LIMIT 0,20"); /* get_row() $db . $row */ while ($row = $db->get_row($sql)) { /* */ if (strlen($row['title']) > 50) { $title = substr($row['title'], 0, 50)."..."; } else { $title = $row['title']; } /* . */ $aname=urlencode($row['autor']); $name= "<a href=\"".$config['http_home_url']."user/".$aname."/\">". $row['autor'] .'</a>'; /* */ $text = htmlspecialchars($row['text']); if (strlen($text) > 1024) $text= substr($text, 0, 1024)."..."; /* . $config . $config['http_home_url'] - . */ $newslink = $config['http_home_url'].$row['post_id']."-".$row['alt_name'].".html"; $hint = "onMouseover=\"showhint('$text', this, event, '');\""; $title = "<a title=\"".$text."\" href=\"".$newslink."\">".stripslashes($title)."</a>"; /* */ $lastcomm.=" $name : <br /> $title <br /><br />"; } $db->free(); /* . , 'engine/api/api.class.php' */ $dle_api->save_to_cache ( "lastcomm", $lastcomm); } /* */ echo $lastcomm; ?>
おわりに
このコードは完全に機能しています。 そしてもちろん、そこには欠陥があります。 たとえば、リンクのチェックは行われません-CNCが有効になっているかどうか。 または、ユーザーのプロフィールへのリンクをクリックすると、簡単な情報が表示されたjQueryウィンドウではなく、すぐにプロフィールにアクセスします。 一般に、変更するものがあります。 しかし、これらすべてがここに含まれているのは1つの理由だけです-初心者を混乱させないためです。 また、topnews.phpなどの他のファイルを分析することもお勧めします。 モジュールの作成やシステムに関する一般的な質問がある場合は、喜んでお答えします。
このトピックが誰にとっても興味深いと思われる場合は、cms Datalide Engine(DLE)に関する一連の記事を作成します。
ああ、これはHabréに関する私の最初の記事ですので、何かおかしいならごめんなさい。