ホームページ >バックエンド開発 >PHPチュートリアル >Joomla コンポーネント開発入門チュートリアル、Joomla コンポーネント入門チュートリアル_PHP チュートリアル
この記事ではjoomlaコンポーネント開発の知識ポイントを解説します。参考のために皆さんと共有してください。詳細は次のとおりです:
コーディングを開始する前に、作成する必要のあるファイルとフォルダー、および実行する必要のあるクエリがいくつかあります。コンポーネントを作成できるだけでなく、追加の構成を行わずにさまざまな機能を試すこともできます。 Joomla! のコンポーネントの整理とアクセス方法の概要も確認できます。最後に、他のコンポーネントと同様にツールバーを追加します。
Joomla!コンポーネントの構造
Joomla! のすべてのコンポーネントは、指定された命名規則に従います。各システム コンポーネントには一意の名前が付いています。名前にはスペースを含めないでください。コードは 2 つのフォルダーに分かれています。フォルダーは com_ で始まり、その後にコンポーネントの名前が続きます。したがって、同じ名前の 2 つの com_reviews フォルダーを作成する必要があります。1 つはフロントエンド コンポーネントの下に、もう 1 つはバックエンド管理者/コンポーネントの下にあります。コンポーネントがフロントエンドによって読み込まれると、Joomla! はコンポーネントにちなんで一意に名前が付けられ、.php 拡張子で終わるファイルを検索します。コンポーネント/com_reviews の下に review.php ファイルを作成します。同様に、バックエンドで作成されたファイルの前に admin を付ける必要があり、admin.reviews.php は、administrator/components/com_reviews の下に作成されます。
実行コンポーネント
Joomla! フロントエンドのすべてのリクエストは、URL GET のオプション変数を設定することで、ルート ディレクトリにあるindex.php ファイルを経由してロードされます。ローカルの joomla! サイトのアドレスが http://localhost/joomla/index.php であるとすると、ロードするコンポーネントのアドレスは http://localhost/joomla/index.php?option=reviews になるはずです。レビューを開きます。 php ファイルに次のコードを追加します:
リーリー次のようなページが表示されます:
現時点では画像表示は提供されていませんので、「Joomla!拡張機能の開発」を参照してください
そもそも、defined() 関数を呼び出す目的は何なのか疑問に思われるかもしれませんが、これは、components/com_reviews/reviews.php を通じてコードに直接アクセスされないようにするためです。
バックエンドのAdministrator/components/com_reviews/admin.reviews.phpファイルに次のコードを追加します:
リーリーアドレスを参照:
http://localhost/joomla/administrator/index.php?option=com_reviews 、ページの出力を比較します:
現時点では画像表示は提供されていませんので、「Joomla!拡張機能の開発」を参照してください
Joomla! フロントエンドとバックエンドの分離
Joomla! のすべてのコンポーネントのコードでは、バックエンド部分がフロントエンド部分から適切に分離されています。データベース テーブル クラスなどの場合、バックエンドはフロントエンドの一部のファイルを使用します。独立しています。バックエンド機能をフロントエンド コードに混在させないようにすると、セキュリティが強化されます。バックエンドとフロントエンドの構造は似ているため、これは非常に重要な機能です。次の図は、展開された Joomla! のルート フォルダーと管理者フォルダーを示しています。
現時点では画像表示は提供されていませんので、「Joomla!拡張機能の開発」を参照してください管理者フォルダーはルート ディレクトリと同様の構造であることに注意してください。 2 つを区別することが重要です。区別しないと、コードを正しい場所に戻さないと、コードを置き忘れて失敗する可能性があります。
コンポーネントをデータベースに登録します
これで、フロントエンドとバックエンドのコンポーネントにアクセスする方法がわかりました。毎回手動で URL を入力してコードを実行できますが、ユーザーはそれを受け入れません。コンポーネントをデータベースに登録すると、つまりコンポーネント データ テーブルにレコードを追加すると、ナビゲーションを使用できるようになります。次の SQL ステートメントを使用してコンポーネントを登録します:リーリー
ここでコンポーネントの名前を宣言します。スペースや句読点を含めることができ、フロントエンドとバックエンド間のリンクを指定でき、バックエンドコンポーネントメニューのアイコンを指定できます。基本ディレクトリを作成してファイルを追加すると、SQL ステートメントを作成しなくても、一部のコンポーネントを実行できるようになります。このようにして、バックエンドのコンポーネントにリンクを追加します。また、URL をハードコーディングせずに、フロントエンドの適切な場所にリンクを追加することもできます。バックエンド ページを更新し、コンポーネント メニューをプルダウンすると、コンポーネントのサブメニュー項目が表示されます:現時点では画像表示は提供されていませんので、「Joomla!拡張機能の開発」を参照してください
コンポーネントが登録されたので、フロントエンドにリンクを作成して
に移動できます。
「メニュー」 | 「メインメニュー」をクリックし、「新規」ボタンをクリックして、このページから「レストランレビュー」を選択し、次のようにリンク名を入力します。
現時点では画像表示は提供されていませんので、「Joomla!拡張機能の開発」を参照してください
「保存」をクリックしてフロントエンドに移動すると、「レビュー」リンクが表示されます:
現時点では画像表示は提供されていませんので、「Joomla!拡張機能の開発」を参照してください
PHP スキルを準備して、コンポーネントの作成を開始できます。また、すべてのフロントエンド リクエストが http://localhost/joomla/index.php?option=com_views を経由し、バックエンド リクエストが http://localhost/joomla/administrator/index.php?option=com_reviews を経由することを確認してください。 。
Joomla!是非常灵活的,可以让你做你喜欢做的事情。我们这个例子中,会教你从新建一个组件开始,然后设计工具栏、用户、数据库类和库等,一旦你理解了它们的工作原理,这些元素将会省下你大量的时间。
创建工具栏
在Joomla!的后端,所有的核心组件都实现相同的保存、删除、编辑和发布项目等按钮,你可以在你的组件中使用这些按钮以便管理员会有无缝的体验。首先,在administartor/components/com_reviews 文件夹下创建 toolbar.reviews.html.php文件,并输入一下代码:
<?php defined( '_JEXEC' ) or die( 'Restricted access' ); class TOOLBAR_reviews { function _NEW() { JToolBarHelper::save(); JToolBarHelper::apply(); JToolBarHelper::cancel(); } function _DEFAULT() { JToolBarHelper::title( JText::_( 'Restaurant Reviews' ), 'generic.png' ); JToolBarHelper::publishList(); JToolBarHelper::unpublishList(); JToolBarHelper::editList(); JToolBarHelper::deleteList(); JToolBarHelper::addNew(); } } ?>
包括输出代码的文件通常会组织成类,像这里的TOOLBAR_reviews。每个成员函数都会显示不同的工具栏。JtoolBarHelper类包含了所有创建工具栏HTML元素的函数,你也可以加入自定义的HTML。你需要明白的是工具栏是有HTML表格构建的,你可能想在你的导航上加入b6c5a531a458a2e790c1fd6421739d1c 标签。
工具栏现在被定义,但你需要加入一些代码来决定显示哪些按钮。Joomla!会自动加载以组件名开始,以 .reviews.php 结束的文件。加入以下的代码到administrator/components/com_reviews 下的 toolbar.reviews.php 文件:
<?php defined( '_JEXEC' ) or die( 'Restricted access' ); require_once( JApplicationHelper::getPath( 'toolbar_html' ) ); switch($task) { case 'edit': case 'add': TOOLBAR_reviews::_NEW(); break; default: TOOLBAR_reviews::_DEFAULT(); break; } ?>
这行包含 require_once(),使用 JapplicationHelper 类的成员函数 getPath() 来获取toolbar.reviews.php 文件的路径,而不用包括组件的名称,即使你改变了组件的名称,你不需要修改代码还是可以正常加载文件。
说明:
你可能想知道为什么一开始就创建 toolbar.reviews.php 和 toolbar.reviews.html.php 这两个文件。组件开发人员首选的编码风格是让处理逻辑与输出完全分离,这样以后加入特性和与别人分享代码就非常容易了。
toolbar.reviews.php 用输出类加载文件后,你需要要决定显示哪个工具栏。请求的变量 $task会自动注册成为全局变量并有来导向组件的逻辑流。现在刷新后端的页面,进入 Restaurant Reviews组件,然后你应该能看到以下的工具栏:
暂时不提供图片显示,请参考《Joomla! extension development》
要看其它的工具栏,在URL后面加上 &task=add ,重新加载页面,你应该看到以下的工具栏:
暂时不提供图片显示,请参考《Joomla! extension development》
当你的用户要使用你的组件的时候,他们当然不想自己手动地在URL后添加 task 变量,那么他们怎么才能使用第二个工具栏呢?每个工具栏都对应着不同的 task ,当一个按钮被点击,相关的 task 就会加入到表单中并自动提交。
一旦适合的表单在适合的位置时,单击“新建”按钮会看到第二个工具栏,既然我们没有任何的表单在后端,这些工具栏按钮是不会工作的。下一章将会教你怎么让这些按钮生效。
有效的工具栏按钮
Joomla!允许你使用自己的 task 和 label 覆盖任何的按钮,分别传入第一个和第二个参数来覆盖。以下是Joomla!标准版本提供的有效的按钮:
暂时不提供图片显示,请参考《Joomla! extension development》
说明:
如果你想创建想核心按钮一样的自定义按钮,可以使用 JtoolBarHelper 的成员函数 custom() ,并传递 task、icon、mouse-over 图片和文本描述作为参数。
更多关于joomla相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《ThinkPHP常用方法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于joomla程序设计有所帮助。