О проекте

Проект 9999p.ru создан для людей, ценящих время и средства. Он поможет вам создать качественный сайт за короткий срок и очень недорого!  Суть его - в разработке сайта на основе готовых решений, которые позволяет зарабатывать другим пользователям уже давно!

Преимущества

Преимущества такой разработки очевидны:

  1. Скорость внедрения
  2. Невысокая стоимость
  3. Высокое качество
  4. Ожидаемый результат

Все включено

В стоимость разработки сайта включены все необходимые операции разработки сайта:

  • Регистрация домена
  • Регистрация хостинга
  • Дизайн сайта
  • Верстка сайта
  • Система управления сайтом
  • Наполнение сайта
  • Публикация сайта в интернете
  • Добавление в поисковые системы

Выполненные работы

Мы создали для наших клиентов

И сейчас занимаемся разаботкой новых. Заказать сайт


Как создать модуль

Основные Hello World Модуль

Joomla! 1,5 модуль находится в своей основной форме двух файлов: файл XML-конфигурации и файл PHP контроллера. XML-файл конфигурации содержит общую информацию о модуле (как будет показано в Менеджер модулей в Joomla! Интерфейс администрирования), а также параметров модуля, которые могут быть поставлены для тонкой настройки появления / функциональность модуля. Файле PHP обеспечивает контроль логику модуля. Очень простой "Hello World" модуль может ищет что-то вроде этого.

/modules/mod_hello_world/mod_hello_world.xml:

! Примечание: Очень важно, что XML-файл имя совпадает с именем модуля. В противном случае, программа установки будет установлен модуль, но Joomla не будет показывать параметры и дополнительная информация хранится в XML.

<?xml version="1.0" encoding="utf-8"?>
<install type="module" version="1.5.0">
<!-- Name of the Module -->
<name>Hello World - Hello</name>

<!-- Name of the Author -->
<author>Ambitionality Software LLC</author>

<!-- Version Date of the Module -->
<creationDate>2008-06-23</creationDate>

<!-- Copyright information -->
<copyright>All rights reserved by Ambitionality Software LLC 2008.</copyright>

<!-- License Information -->
<license>GPL 2.0</license>

<!-- Author's email address -->
<authorEmail> Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript </authorEmail>

<!-- Author's website -->
<authorUrl>www.ambitionality.com</authorUrl>

<!-- Module version number -->
<version>1.0.0</version>

<!-- Description of what the module does -->
<description>Provides a basic "Hello World" notice</description>

<!-- Listing of all files that should be installed for the module to function -->
<files>
<!-- The "module" attribute signifies that this is the main controller file -->
<filename module="mod_hello_world">mod_hello_world.php</filename>
<filename>index.html</filename>
</files>

<!-- Optional parameters -->
<params />
</install>

В основном, этот файл XML только строки из основную информацию о модуле, например в качестве владельца, версии и т.д. для идентификации Joomla! установки, а затем предоставляет дополнительные параметры, которые могут быть установлены в модуль менеджера и доступе из логики модуля для тонкой настройки ее поведения. Кроме того, этот файл говорит установки, какие файлы должны быть скопированы и установлены. Обратите вним


/modules/mod_hello_world/mod_hello_world.php:

<?php
//не позволяют другие сценарии, чтобы захватить и выполнить наш файл
defined('_JEXEC') or die('Direct Access to this location is not allowed.');
?>
<p>
Hello World
</p>

Что происходит, когда этот модуль загружается в том, что Joomla! включает в себя (с помощью PHP включают директивы) файл mod_hello_world.php и сохраняет результат в выходной буфер, который затем отображены на странице вывода. Этот файл будет просто произвести

Hello World

на последней странице.

<html><body bgcolor="#FFFFFF"></body></html>

Это действительно просто помогает гарантировать, что страницы по умолчанию отображается, если прямой доступ к каталогу является попытка без прохождения процедуры листинга все другие файлы в каталоге. Это не необходимо, но является хорошей практикой.

Чтобы упаковать этот модуль для распространения и установки, просто ZIP файлы вместе, например,

% cd mod_hello_world
% zip mod_hello_world.zip mod_hello_world.php mod_hello_world.xml index.html

В результате mod_hello_world.zip файл может быть загружен и установлен через стандартный Joomla! 1,5 Extension Manager.


Реальный Joomla! 1,5 стиля Модуль Осуществление

Теперь, когда было легко ... слишком легко. В самом деле, что было в значительной степени простая форма модуля возможно. В действительности модуль, вероятно, будет делать что-то гораздо более значительным. Давайте предположим, что наши модули будет более сложным - нам необходимо воспользоваться MVC (Model View Controller) шаблон проектирования и рассмотреть вопрос об использовании следующий формат файла для "Hello World 2" модуль, вместо:

/modules/mod_hello_world2/index.html
/modules/mod_hello_world2/mod_hello_world2.php
/modules/mod_hello_world2/mod_hello_world2.xml
/modules/mod_hello_world2/helper.php
/modules/mod_hello_world2/en-GB.mod_hello_world2.ini
/modules/mod_hello_world2/tmpl/index.html
/modules/mod_hello_world2/tmpl/default.php

 

Различия отметить здесь, что Существуют три дополнительных файлов вне того, что "Hello World" модуль был, а именно helper.php, TMPL / default.php, и ан-GB.mod_hello_world2.ini файл. Цель сложения первых двух файлов в два раза. Во-первых, мы разделяем логику модуля в helper.php файла убедитесь, что все мысли и доступа к данным осуществляется здесь и выделить презентацию модуля / шаблон в TMPL / default.php файл ((X) HTML). Я утверждаю, что это просто хорошие программирования - разделение логики от представления. Существует Второе преимущество этого, однако, что в том, что это позволит HTML / презентация быть легко переопределен любым Joomla! 1,5 шаблон для оптимальной интеграции в любой сайт. (Переопределение модуль и компонент презентации в шаблонах выходит за рамки данной статьи, однако, он должен рассматриваться как это действительно полезно).

Давайте посмотрим, что эти файлы могут выглядеть и обсудить, что происходит.

/modules/mod_hello_world2/mod_hello_world2.php:

<?php
//не имеет прямого доступа
defined('_JEXEC') or die('Direct Access to this location is not allowed.');

// включать вспомогательные файл
require_once(dirname(__FILE__).DS.'helper.php');

// получить параметр из конфигурации модуля
$userCount = $params->get('usercount');

// получить элементов для отображения из вспомогательные
$items = ModHelloWorld2Helper::getItems($userCount);

// включить шаблон для отображения
require(JModuleHelper::getLayoutPath('mod_hello_world2'));
?>

Важные различия, которые надо запомнить, что (1), включают вспомогательные файл, который будет работать лошадь нашей логики и доступа к данным и (2) один раз у нас есть данные, мы просто загружаем шаблон, который будет использовать наши данные и сделать это, как считает нужным.

/modules/mod_hello_world2/mod_hello_world2.xml

<?xml version="1.0" encoding="utf-8"?>
<install type="module" version="1.5.0">
<!-- Name of the Module -->
<name>Hello World 2 - Hello</name>

<!-- Name of the Author -->
<author>Ambitionality Software LLC</author>

<!-- Version Date of the Module -->
<creationDate>2008-06-23</creationDate>

<!-- Copyright information -->
<copyright>All rights reserved by Ambitionality Software LLC 2008.</copyright>

<!-- License Information -->
<license>GPL 2.0</license>

<!-- Author's email address -->
<authorEmail> Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript </authorEmail>

<!-- Author's website -->
<authorUrl>www.ambitionality.com</authorUrl>

<!-- Module version number -->
<version>1.0.0</version>

<!-- Description of what the module does -->
<description>Provides a random listing of registered users</description>

<!-- Listing of all files that should be installed for the module to function -->
<files>
<!-- The "module" attribute signifies that this is the main controller file -->
<filename module="mod_hello_world2">mod_hello_world2.php</filename>
<filename>index.html</filename>
<filename>helper.php</filename>
<filename>tmpl/default.php</filename>
<filename>tmpl/index.html</filename>
</files>

<languages>
<!-- Any language files included with the module -->
<language tag="en-GB">en-GB.mod_hello_world2.ini</language>
</languages>

<!-- Optional parameters -->
<params>
<!-- parameter to allow placement of a module class suffix for the module table / xhtml display -->
<param name="moduleclass_sfx" type="text" default="" label="Module Class Suffix" description="PARAMMODULECLASSSUFFIX" />

<!-- just gives us a little room between the previous parameter and the next -->
<param name="@spacer" type="spacer" default="" label="" description="" />

<!-- A parameter that allows an administrator to modify the number of users that this module will display -->
<param name="usercount" type="text" default="5" label="LABEL USER COUNT" description="DESC USER COUNT" />
</params>
</install>

Основные различия отметить здесь, что мы добавили языку файл (мы могли бы добавить еще), и мы добавили некоторые параметры.

/modules/mod_hello_world2/helper.php:

 

<?php
defined('_JEXEC') or die('Direct Access to this location is not allowed.');

class ModHelloWorld2Helper
{
/**
* Returns a list of post items
*/

public function getItems($userCount)
{
//получить ссылку на базу данных
$db = &JFactory::getDBO();

// получить список из $ userCount случайно упорядоченное пользователей
$query = 'SELECT a.name FROM `#__users` AS a ORDER BY rand() LIMIT ' . $userCount . '';

$db->setQuery($query);
$items = ($items = $db->loadObjectList())?$items:array();

return $items;
} //конец GetItems

} //конец ModHelloWorld2Helper
?>

Это вспомогательный класс (отметим, что он назван по имени модуля, чтобы он не конфликтует с другими именами класса) просто возвращает список всех пользователей в базе данных и случайным образом выбирает подмножество тех, основываясь на количестве поставляются в $ userCount .

/modules/mod_hello_world2/tmpl/default.php:

<?php defined('_JEXEC') or die('Restricted access'); // не имеет прямого доступа ?>
<?php echo JText::_('RANDOM USERS'); ?>
<ul>
<?php foreach ($items as $item) { ?>
<li>
<?php echo JText::sprintf('USER LABEL', $item->name); ?>
</li>
<?php } ?>
</ul>

Здесь мы просто создаем неупорядоченного списка HTML, а затем перебора элементов, возвращенных наши вспомогательные (в mod_hello_world2.php), вывод сообщения с именем каждого пользователя.

/modules/mod_hello_world2/en-GB.mod_hello_world2.ini:

 

LABEL USER COUNT= количество пользователей
DESC USER COUNT=количество пользователей для отображения
RANDOM USERS=Random пользователя для Hello World2
USER LABEL=%s является случайно выбранных пользователей

 

Здесь мы просто определить строки, которые появляются в файле конфигурации модуля и модуля шаблонов, которые появляются в JText:: _ или JText:: Sprintf заявления. Это позволяет кому-то легко написать новый языковой файл без редактирования любой HTML или код для модуля.

Теперь все мы должны сделать, это ZIP эти файлы, как в:

 

% pwd
/somesite/modules/mod_hello_world2
% zip -r ../mod_hello_world2.zip *
% ls ..
mod_hello_world2.zip

В результате mod_hello_world2.zip файл готов для установки и распространения. Когда файл ZIP установлено, EN-GB.mod_hello_world2.ini файл копируется в / language/en-GB/en-GB.mod_hello_world2.ini и загружается каждый раз загружен модуль. Все другие файлы копируются в / modules/mod_hello_world2 подпапках Joomla! установки.

Joomla! 1,5 Установка базы данных использование

Модули как правило, не взаимодействуют с базой данных, за исключением обычных операций (SELECT, UPDATE, INSERT, DELETE). Но в некоторых случаях это может быть необходимо изменить или даже создавать таблицы, хотя это не рекомендуется. Существует не общепринятая практика в этом, но вот один из способов сделать именно это:

Добавить модуль параметра, что проявляется:

 

   <params group="advanced">
<param name="is_installed" type="radio" default="0" label="Is module installed?" description="Only use this if you know the consequences! Click No to recreate database">
<option value="0">No</option>
<option value="1">Yes</option>
</param>
</params>

Затем вы можете использовать параметр для переключения состояния. Поскольку параметры модуля уже загружается из базы данных на данный момент, никаких накладных не должен быть заметен этот путь.

 

// Если рассматривать это в функциональный модуль.
function myModuleReInstall() {
if (!$params->get('is_installed')) {
$database =& JFactory::getDBO();
$query = "CREATE TABLE IF NOT EXISTS `example` ( `id` INT, `data` VARCHAR(100) );";

$database->setQuery($query);
$result = $database->query();

$params->set('is_installed', 1);
}
}

Это означало, в качестве примера и может быть продлен по-разному. Однако - Если вы сделаете это, вы также должны спросить себя, если это правильный способ делать вещи. Компоненты имеют реальные инсталляторов и это может быть лучшим решением, хотя модуль может быть быстрее делать.