0 Пользователей и 1 Гость просматривают эту тему.
  • 410 Ответов
  • 88106 Просмотров
*

konstantinopol

  • Осваиваюсь на форуме
  • 67
  • 2

Народ где найти действително полезную информацию о написании компонента на Joomla 1.5 ?
Всё что находил написанно ужасно.
Спасибо.

Меня всё время приследуют умные мысли ... но я быстрее =)
*

beliyadm

  • Профи
  • 8368
  • 1527
  • Севастополь == Россия
вчера вот такой инструмент пробегал http://joomlaforum.ru/index.php/topic,59167.0/topicseen.html :)
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb
*

b2z

  • Support Team
  • 7469
  • 742
  • Разраблю понемногу
документации нормальной нет, но вы изучая параллельно можете написать эту документацию, типа "Как я написал компонент. Советы для новичка". В таких статьях все будут нуждаться.
Именно это я хотел сделать. Читаете мои мысли :) Но мне нужно сейчас понять с чего начать ;) Куда ткнутся и тд

вчера вот такой инструмент пробегал http://joomlaforum.ru/index.php/topic,59167.0/topicseen.html :)
Спасибо! Уже что-то :)



*

b2z

  • Support Team
  • 7469
  • 742
  • Разраблю понемногу
Эти программы - это только каркас. Тебе они ничего не дадут :( Ну создашь ты каркас, а дальше что? Вот это мне хочется понять: именно с чего начать и как продумать логику - классы, объекты и тд. Ведь народ с чего то же начинает? :)

Ну вот как пример, даже можно использовать этот генератор. Вот там есть закладки и в них выбор файлов нужных для твоего компонента:

FoldersViews   
   default
   form
 
Controllers   
Models   
Helpers   
Assets   
   Images
   CSS
   Javascript
   Scripts
 
 FilesController   
Helper   
Router   
 
Create your directory structure and files necessary for Backend.


FoldersViews   
   default
   form
 
Controllers   
Models   
Elements   
Helpers   
Assets   
   Images
   CSS
   Javascript
   Classes

Как понять, что тебе надо, а что нет? :) Я например не понимаю, что мне надо отметить, потому что пока не знаю логики J1.5 ... Поэтому и хочется узнать, кто и как изучал и по каким материалам.
*

konstantinopol

  • Осваиваюсь на форуме
  • 67
  • 2
Ха ты незнаешь логики 1.5 , я с Joomla работаю только месяц какая тут нафиг логика с моей стороны??

Я тоже незнаю что мне надо поэтому всё взял по минимуму.

Дело в том что программный код у меня уже есть, мне его просто надо реализовать.
Но всё не так просто как кажется ...

На данном этапе админка мне и ненужна, и я вроде нашел куда запоковать код. А вот над следующим компонентом надо будет попариться. Тав всё надо.
« Последнее редактирование: 20.03.2009, 11:56:49 от konstantinopol »
Меня всё время приследуют умные мысли ... но я быстрее =)
*

b2z

  • Support Team
  • 7469
  • 742
  • Разраблю понемногу
Я немного неверно выразился - логику MVC J1.5 я более менее начал осваивать (модифицируя модули и ползая по ним) и уже что-то мне ясно. Но все эти Assets, Router, Elements вводят меня в ступор :) Но и это не проблема, если есть где почитать.

Можно конечно (да и нужно) почитать API, там скорее всего есть ответы на вопросы. Но это имхо довольно сложный путь восприятия. Поэтому и возникла идея ОБМЕНА ОПЫТОМ. Ведь все же с чего-то начинали, как-то подступались к своим будущи компонентам ;)
*

Lex

  • Практически профи
  • 1630
  • 273
Здесь на форуме, прочитал фразу "Чтобы научиться писать компоненты. надо их писать". Составил маленькое ТЗ на каталог, для себя. Ну и пишу по две строчки по вечерам. Так что давайте попробуем составить ТЗ и написать компонент и рассказать как. По опыту знаю, что такой колхоз быстро развалится, однако хотя бы частью будет взамнополезен. Тем что успел узнать готов поделиться. Читаю Mastering Joomla! 1.5 Extension and Framework Development. (англ.) Ссылку дать не могу, откуда скачивал, там уже нет ибо варез. 10MB. Поделюсь в почте.
 
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

b2z

  • Support Team
  • 7469
  • 742
  • Разраблю понемногу
Lex я уже нашёл эту книгу. Сюдя по всему очень полезная вещь. Вот её содержание. Но она как я понял рассчитана но более менее опытных программистов или я ошибаюсь?

По поводу Т3 - да так и есть, конечно это скорее всего и есть первый шаг. Но вот как идти далее? :)
*

konstantinopol

  • Осваиваюсь на форуме
  • 67
  • 2
Давайте попробуем я только за !!!

Эх, ну на английском так на английском- Хотя я больше предпочитаю на немецком а ещё лучше на русскоm.
Вышли пожалуйста на мыло. konstantin_04@inbox.ru

А что за ТЗ? Если не сложно вышли его тоже.

Меня всё время приследуют умные мысли ... но я быстрее =)
*

b2z

  • Support Team
  • 7469
  • 742
  • Разраблю понемногу
*

Lex

  • Практически профи
  • 1630
  • 273
Re: Информация по написанию компонента
« Ответ #10 : 20.03.2009, 16:06:23 »
Но она как я понял рассчитана но более менее опытных программистов или я ошибаюсь?
Меня программистом вообще назвать нельзя, не то что опытным, ибо осваиваю английский, PHP и Joomla одновременно.
Вопросов конечно возникает куча. Тогда метод научного тыка, догадка и Coogle.
Но вот как идти далее? :)
Так пока по книжке. Дальше видно будет.
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

b2z

  • Support Team
  • 7469
  • 742
  • Разраблю понемногу
Re: Информация по написанию компонента
« Ответ #11 : 20.03.2009, 17:42:52 »
Хмм, заинтриговал с книжкой :) Я вроде и PHP & Joomla & английский неплохо знаю. Значит стоит эту книгу почитать. Ну и ещё ООП подучить.

Тогда вопро не на чтиво - мне интересно, как Вы (разработчики) продумываете структуру компонента? Имеюю ввиду продумываете ли что-то на бумаге (классы, объекты, методы, структура БД) или отталкиваетесь чисто от Т3 и из него черпаете направление движения?
*

Lex

  • Практически профи
  • 1630
  • 273
Re: Информация по написанию компонента
« Ответ #12 : 22.03.2009, 00:55:05 »
Похоже колхоз развалился не начавшись. Продолжу тему. Может кому понадобиться. Долгое время использовал форум
как справочник, попытаюсь сделать для него что-нибудь полезное, отдам долги так сказать. ;D
И так пишем компонент для J 1.5. Каталог чего-нибудь. Неограниченная вложенность категорий для начала. Дальше видно будет,
что ещё в него впихивать.
Обзовём его com_simplecatalog.

Создаем XML файл. 

Код
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE install SYSTEM "http://dev.joomla.org/xml/1.5/component-install.dtd">
<install type="component" version="1.5">
   <name>Simplecatalog</name>
   <creationDate>MonthName Year</creationDate>
   <author>Author's Name</author>
   <authorEmail>Author's Email</authorEmail>
   <authorUrl>Author's Website</authorUrl>
   <copyright>Copyright Notice</copyright>
   <license>Component License Agreement</license>
   <version>Component Version</version>
   <description>Component Description</description>
       <administration>
              <menu>Simplecatalog</menu>
       </administration>
       <install />
       <uninstall />
</install>

Называем его  simplecatalog.xml
Пакуем его в ZIP архив и устанавливаем как компонент.
Как видим, файл ничего не делает кроме записи компонента в БД и создания каталогов компонента в админке и фронтэнде. 
Должен по крайней мере. Вернее это Joomla сама делает.  Код в работе не проверяю, так что могут быть ошибки.
Компонент должен появиться в меню компонентов.
Начнём с админки. Чтобы что-то показать, это что-то надо положить, из админки естественно, поэтому с неё и начнём.
Заходим в /administrator/components/com_simplecatalog.
В каталоге только наш simplecatalog.xml. Создаем файловую систему админки компонента.
Такую, чтобы не забыть что, где лежит и чтобы она соответствовала MVC (в моем понимании).
С помощью файлового менеджера создаем каталоги и файлы.
Файловая система у меня получилась такая. Не исключено, что придется что-то менять, переделывать.

Здесь «каталог» = «папка»
«представелние» = «view»


В каталоге /administrator/components/com_simplecatalog (уже есть?) создаем каталоги и файлы.
Каталог controllers //для контроллеров
   Файл categoryes.php //контроллер категорий
Каталог views // для представлений
   Каталог categoryes //представления для категорий
      Файл  view.html.php //представление для категорий
      Каталог tmpl //для шаблонов
         Файл default.php //файл шаблона каетгорий
Каталог models //для моделей
   Файл categoryes.php //файл модели для категорий
Каталог tables
   Файл categoryes.php //файл табли, не могу подобрать русское выражение
Каталог helpers //для функций, классов, скриптов, в общем, как только появится желание
скопировать код из одного файла в другой, то ему место здесь в виде класса   
Файл simplecatalog.php //точка входа
Файл simplecatalog.xml //установщик уже есть
Файл controller.php // контроллер - дефолтным будет
Файл config.xml //для настроек.
Файл index.html //пустой, рекомендуют помещать в каждый каталог, для чего понятия не
имею. В каждом каталоге его не написал, сами дополните.

Компонент установлен, файловая система админки создана. Пустые файлы нужно заполнять.
Начнем с начала, т.е. с  simplecatalog.php. Открываем, пишем:
Код
<?php
// запрет прямого доступа
defined('_JEXEC') or die('Restricted access');

require_once JPATH_COMPONENT.DS.'controller.php'; //подключаем контроллер по умолчанию
require_once JPATH_COMPONENT.DS.'helpers'.DS.'helper.php'; //подключаем файл helper-а
If ($cont = JRequest::getVar('controller','','get')){ // если есть альтернативный контроллер
//подключается он, если нету, то дефолтный. Вот только из БД этот контроллер передается
//методом get, а из формы методом post. Че делать будем, понятия не имею. Будем решать
//проблемы по мере их поступления. Пока оставим так.
require_once JPATH_COMPONENT.DS.'controllers'.DS.$cont.'.php'; //запоминаем, что
//имя альтернативного контроллера должно соответствовать имени его файла (или
//наоборот?).
$cont = $cont.'Controller';
}else{
$cont = 'SettingController';
}
// создаем экземпляр контроллера
$controller = new $cont();

// Выполнение контроллера
$controller->execute( 'task');
$controller->redirect();
?>

Пошли в controller.php пишем:

Код
<?php
// запрет прямого доступа
defined('_JEXEC') or die('Restricted access');

jimport( 'joomla.application.component.controller' ); //подключаем библиотеку
require_once( JPATH_COMPONENT.DS.'helpers'.DS.'helper.php' ); //подключаем помощника

class SettingController extends JController {
   
    function __construct() {
     
        parent::__construct();
    }
}
?>

Ну и пробуем открыть из аминки наш компонент. И он выдает ошибку. Типа не могу найти view.
И правильно. Потому, что создавая файловую систему, мы ее создали для категорий, а для дефолта ничего не создали.
Поэтому досоздаем.
В каталоге views создаем каталог setting. Потому-что контроллер settingController, будет искать своё представление в
одноимённом каталоге в каталоге views. Ну и аналогичную категориям структуру для каталога setting. Файл  view.html.php.
Каталог tmpl. Файл default.php.
Сейчас возникает вопрос. В админках многих компонентов видел первую страницу с  кнопками с рисунками которые дублировали
ссылки субменю компонента в общем Control panel. Задумка - такую страничку на дефолтный контроллер и повесить.
Поэтому и назвал контроллер setting (не правильно только, но пусть). Вот есть сомнения — зачем она вообще нужна.
Да ладно. Пошли дальше.
Наш компонент все ещё выдает ошибку, типа не могу найти представление.
Заходим в views/setting/view.html.php, пишем:

Код
<?php
//no direct access
defined('_JEXEC') or die('Restricted access');

// Import Joomla! libraries
jimport( 'joomla.application.component.view');//подключаем библиотеку
class SettingViewSetting extends JView {
    function display($tpl = null) {
parent::display($tpl);
    }
}
?>

Переходим в views/setting/tmpl/default.php и пишем:

Код
<?php
defined('_JEXEC') or die('Restricted access');
?>
<h1>Здесь картинки настроек</h1>

Теперь должно работать. При заходе в админку компонента эта надпись должна появиться
На надпись смотреть скушно и пока нет базы данных разнообразим картину.
Заходим в контроллер категорий (controllers/categoryes.php) и пишем:

Код
<?php
// no direct access
defined('_JEXEC') or die('Restricted access');

jimport( 'joomla.application.component.controller' );
require_once( JPATH_COMPONENT.DS.'helpers'.DS.'helper.php' );

class CategoryesController extends JController {
   
    function __construct() {
     
        parent::__construct();
    }
}
   
?>
:(
В представлении категорий (views/categories/view.html.php) пишем:

Код
<?php
// no direct access
defined('_JEXEC') or die('Restricted access');

// Import Joomla! libraries
jimport( 'joomla.application.component.view');
class CategoryesViewCategoryes extends JView {
   
function display($tpl = null) {

$link = 'index.php?option=com_simplecatalog';
JSubMenuHelper::addEntry(JText::_('Setting'), $link); //Setting будет по английски,
//русификацией займемся позже
$link1 = 'index.php?option=com_simplecatalog&controller=categoryes';
JSubMenuHelper::addEntry(JText::_('Categories'), $link1);

parent::display($tpl);
    }
}
?>

В шаблоне категорий (/views/tmpl/default.php) пишем:

Код
<?php
defined('_JEXEC') or die('Restricted access');
?>
<h1>Здесь будет таблица категорий</h1>


Добавляем в представление setting (views/setting/view.html.php)

Код
$link = 'index.php?option=com_simplecatalog';
JSubMenuHelper::addEntry(JText::_('Setting'), $link); //Setting будет по английски,
//русификацией займемся позже
$link1 = 'index.php?option=com_simplecatalog&controller=categoryes';
JSubMenuHelper::addEntry(JText::_('Categories'), $link1);

Появилось субменю (должно). Пощелкаём. Текст меняется?
Видим, что копируем код из одного файла в другой, думаем о helper-e. Но это меню обычно из базы данных выводится.
Её пока нет, то так. Хотя не знаю что лучше. У меня как то не получалось русифицировать меню выводимое из базы данных
кроме как в самой базе. Через JТext  заголовки не проходят, соответственно в файле русификации не переводятся.

Если ничего не забыл и не ошибся в коде, должно работать.  Уточню сразу, готовый компонент будет едва-ли. Тоже ведь
только учусь. Наверняка   будут ошибки, что то из написанного не будет работать. Придется исправлять. Искать ошибки.
Надеюсь на обсуждение и взаимовыручку (хотя едва ли). Ну и надеюсь (не особо), что гуру поправят если вообще не
туда поведет и подскажут, если совсем уж где-то заклинит. Продолжение в следующий выходной. К сожалению, заниматься
этим могу только в выходные.

« Последнее редактирование: 24.03.2009, 15:21:48 от Lex »
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

Lex

  • Практически профи
  • 1630
  • 273
Re: Информация по написанию компонента
« Ответ #14 : 22.03.2009, 19:25:04 »
Судя по молчанию все работает.  :o
Да, в предыдущем сообщении имена файлов tables и модели нужно изменить на categoryes. Вот что значит сразу ошибку допустить в написании. Автоматом пишется categories, а не правильно. Контроллер и представление не находят модель с неправильным именем файла. Т.е. отличным от имени контроллера и представления, а они у нас с y вместо i. Предыдущее сообщение отредактировал.
Теперь нам понадобиться база данных.
Не особо заморачиваясь, просто скопируем родную таблицу Joomla - jos_categories в нашу таблицу с помощью phpMyAdmin. Есть там инструменты для этого. Перейти в таблицу которую копируем ->операции->Скопировать таблицу в (база данных.таблица). Нашу таблицу назовем jos_simplecatalog_categoryes (вот ведь, сразу допустил ошибку в слове categories — categoryes, когда увидел поздно было, теперь начнём её тиражировать)
Можно конечно пользоваться и родной таблицей, но пока, во избежание какой либо порчи родной таблицы, сделаем отдельную. Если установлены демоданные Joomla, то таблица будет иметь содержание, т.е. не нужно набивать эти данные в ручную, а можно сразу увидеть результат. Ещё таблица содержит все типовые поля, что немаловажно. По БД здесь http://kjoomla.com/lessons/35-lessons/67-database.html eсть практически полный перевод раздела книжки Mastering Joomla! 1.5  Extension and Framework  Development  по базе данных . Спасибо Котофеичу. Вообще там много чего интересного есть.

Теперь данные таблицы нужно показать в админке. Согласно MVC извлечением и изменением данных в таблице занимается Model.
Переходим в /models/categoryes.php и пишем:

Код
<?php
// no direct access
defined('_JEXEC') or die('Restricted access');

// Import Joomla! libraries
jimport('joomla.application.component.model'); //подключение библиотеки

/**
  * Categoryes Model
  */
class CategoryesModelCategoryes extends JModel
{
      /**
      * Categoryes ID
      *
      * @var int
      */
      var $_id;
      /**
      * Categoryes data
      *
      * @var object
      */
      var $_categoryes;
      /**
      * Constructor, builds object and determines the Categoryes ID
      *
      */
      function __construct()
      {
         parent::__construct();
         // get the cid array from the default request hash
         $cid = JRequest::getVar('cid', false, 'DEFAULT', 'array');
         if($cid)
         {
             $id = $cid[0];
         }
        else
         {
             $id = JRequest::getInt('id', 0);
         }
             $this->setId($id);
         }
        /**
        * Resets the Categoryes ID and data
        *
        * @param int Categoryes ID
          */
        function setId($id=0)
        {
              $this->_id = $id;
              $this->_categoryes = null;
        }
          /**
          * Gets Categoryes data
          *
          * @return object
          */
          function getCategoryes()
          {
               // if Categoryes is not already loaded load it now
               if (!$this->_categoryes)
               {
                   $db =& $this->getDBO();
                   $query = "SELECT * FROM ".$db->nameQuote('#__simplecatalog_categoryes');
                   $db->setQuery($query);
                   $this->_categoryes = $db->loadObjectList();
               }
               // return the Categoryes data
               return $this->_categoryes;
          }
   }
}
?>

На секции __construct() останавливаться пока не буду, позже, а вот на функции getCategoryes() остановимся подробней. Вообще методы модели, данные которых выводятся за ее пределы т.е. которые нужно выводить в на сайт, должны назваться getMyname(), потому что в view есть специальный метод get для извлечения данных из модели.
И это пожалуй единственное правило построения модели.
Мы получили все записи из таблицы # __myextesnion_categoryes в виде массива
key=> stdClass(). Где key цифры по порядку начиная с 0, а  stdClass это каждая запись(строка) виде объекта  stdClass, содержащего все поля таблицы .
 
Выбор методов получения данных зависит только от нас. Существуют некоторые общие методы, используемые при получении данных, они могут быть использованы  в случае необходимости.

Использовать свойства кэша при получении данных:

Var  $_categoryes;

в общем, поскольку переменная объявлена глобально, её значение можно получить в любом методе класса.

Создание частных методов загрузки данных:

Код
function _loadCategoryes()

{

   // Load the data

   if (empty($this->_categories))

   {
       
    $query = $this->_buildQuery();

    $this->_db->setQuery($query);

    $this->_categoryes = $this->_db->loadObjectList();

    return (boolean) $this->_categoryes;

  }

     return true;

}


Создание частных способов построения строки запроса:

Код
function _buildQuery() {

    $db =& $this->getDBO();

    return "SELECT * FROM "
 .$db->nameQuote('#__simplecatalog_categoryes');

}

Создание частного метода для построения пустого набора данных

Код
function initializeCategoryes()

{

   if (empty($this->_categoryes))

   {

     $categoryes = new stdClass;

     $fcategories->id = 0;

     $fcaregoryes->name = null;

     $this->_categoryes =& $fcategoryes;

   }
}

nameQuote — функция вставки строки в запрос, при построении запросов рекомендуется применять ее. Почему не понял.
Так или иначе данные из таблицы в модели получены. Теперь будем показывать их на сайте т.е. в админке.
Переходим в views/categoryes/view.html.php
Там у нас уже что-то есть. В функцию display выше строки  parent::display($tpl); дописываем:

Код
$categoryes = $this->get('Categoryes'); /*вот он этот метод get для получения данных из модели взаимосвязь названий надеюсь понятна*/
$this->assignRef('cat', $categoryes);/*передаем данные в шаблон, первый параметр - имя переменной которая будет содержать переданные данные в шаблоне, второй параметр определили строкой выше,  данные которые передаются*/

Пошли в /views/categoryes/tmpl/default.php пора чего-то уже показать.
Вместо той строки «Здесь будет таблица категорий» (там кстати лишний ?> затесался, отредактировал) пишем:

Код
<form action="index.php?option=com_simplecatalog" method="post" name="adminForm">

<table class="adminlist">
<!--начало заголовка таблицы-->
<thead>
<tr>
<th width="10px">
<?php echo JText::_( 'Num' ); ?>
</th>
<th width="20px">
<input type="checkbox" name="toggle" value=""onclick="checkAll(<?php echo count( $cat ); ?>);" />
</th>
<th nowrap="nowrap" width="20%" class="title">
<?php echo JText::_( 'Title' ); ?>
</th>
<th width="70%" nowrap="nowrap"  width="20%">
<?php echo JText::_( 'description' ); ?>
</th>
<th width="10px" nowrap="nowrap">
<?php echo JText::_( 'Publiched' ); ?>
</th>
</tr>
</thead>
<!--конец заголовка таблицы-->
<!--начало тела таблицы которая строится в цикле-->
<tbody>
<?php
$k = 0;
for ($i=0, $n=count( $this->cat ); $i < $n; $i++) {
//обратите внимание на  $this->cat вот эта переменная которую мы передавали из view
$row = &$this->cat[$i];//извлекаем объект каждой строки
$published = JHTML::_('grid.published', $row, $i );/*это картинки об опубликовании рисуются. Нажимать бесполезно, пока не работают.*/
$checked = JHTML::_('grid.checkedout',   $row, $i ); /*это чекбоксы рисуются, тоже пока не работают.
Поскольку $row у нас содержит объект, то данные из него извлекаются $row->name где «name» это название поля в нашей таблице. Открываем таблицу, смотрим заголовки полей и по аналогии тому, что ниже написано, можно все поля вывести сюда. У нас только несколько*/.
?>
<tr class="<?php echo "row$k"; ?>">
<td align="center">

</td>
<td align="center">
<?php echo $checked; ?>
</td>

<td align="left">
<?php echo $row->title;?>
</td>
<td align="left">
<?php echo $row->description;?>
</td>
<td align="center">
<?php echo $published;?>
</td>

</tr>
<?php
$k = 1 - $k;
}
?>
</tbody>
</table>
<!--скрытые поля для передачи служебных данных. Пара controller=>categoryes будет передаваться методом post, как в входном файле приниматься будет одному богу известно, но посмотрим-->
<input type="hidden" name="controller" value="categoryes" />
<input type="hidden" name="option" value="com_simplecatalog" />
<input type="hidden" name="task" value="" />
<input type="hidden" name="boxchecked" value="0" />
<?php echo JHTML::_( 'form.token' ); ?>
</form>

Ну и для общей картины в самое начало пишем так:

Код
<?php
defined('_JEXEC') or die('Restricted access');
JToolBarHelper::title(JText::_('Categories'), 'generic.png');
JToolBarHelper::editList();
JToolBarHelper::deleteList();
JToolBarHelper::preferences('com_simplecatalog');
//print_r ($this->cat);
?>

Во многих компонентах вывод кнопок управления делают в view.html.php, мне кажется, что вывод в default.php наглядней. Хотя может и не правильно. Если раскомментировать print_r ($this->cat); то можно увидеть содержимое нашей переменной $cat, которую передавали из представления. А потом можно удалить, для демонстрации сделано.
Так, картинка у нас есть, но ни одна кнопка не работает. Это потому, что контроллер пустой, он ещё не знает, что делать при нажатии.
В следующий выходной этим и займёмся. ^-^


« Последнее редактирование: 12.05.2009, 12:06:50 от Lex »
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

doxtor

  • Захожу иногда
  • 20
  • 1
Re: Информация по написанию компонента
« Ответ #15 : 23.03.2009, 01:38:28 »
Текста много, но спасибо)
*

dapmoed

  • Осваиваюсь на форуме
  • 79
  • 22
Re: Информация по написанию компонента
« Ответ #16 : 23.03.2009, 07:16:32 »
Молодцы ребята что подняли эту тему. Я вот тоже собирался писать мануал, да как-то это дело застряло на 8 статье о написании Доски объявлений.

И еще, придерживаюсь мнения чтобы написать компонент нужно как минимум перелопатить кучу уже написанных (ну для меня это самый быстрый способ понять суть MVC плюс API Joomla). А дальше писать компонент, небольшой, пусть такой уже есть, но писать. Потом просматривать его и переписывать за нова с учетом вновь найденных фишек и т.д. и в идеале так много раз пока не получится что-то реально работающее.

Поверьте мне после долгих и упорных переписываний компонента начинаешь понимать на что придуман MVC подход.
Чтобы научиться писать компоненты, нужно писать компоненты
*

b2z

  • Support Team
  • 7469
  • 742
  • Разраблю понемногу
Re: Информация по написанию компонента
« Ответ #17 : 23.03.2009, 11:05:44 »
А я решился на покупку двух книжек по изучению написания под Joomla! (pdf качать не хочу, неудобно его читать):
Mastering Joomla! 1.5 Extension and Framework Development
и
Learning Joomla! 1.5 Extension Development

Как я понял из отзывов читателей, именно Learning Joomla! 1.5 Extension Development является отправной точкой для изучения. А Mastering Joomla! 1.5 Extension and Framework Development является более углублённым и продвинутым материалом. А вместе они дают очень неплохой комплект для изучения. Английский меня не пугает абсалютно  8)

Ну и конечно не надо забывать про ООП (Объектно Ориентированное Программирование). Без него ох как непросто будет освоить написание компонентов :) Вообщем пищи для ума навалом.
*

Lex

  • Практически профи
  • 1630
  • 273
Re: Информация по написанию компонента
« Ответ #18 : 23.03.2009, 11:15:59 »
Угу. Mastering Joomla! общее описание. Learning Joomla! на примере конкретного проекта. Подходы несколько разные. Отлично друг друга дополняют.
Жизнь заставила учиться.
В личке на вопросы не отвечаю.
*

Magys

  • Осваиваюсь на форуме
  • 32
  • 1
Re: Информация по написанию компонента
« Ответ #19 : 23.03.2009, 12:42:42 »
вопрос, в этих книжках описывается для чего нужны различные коды, например вот этот
<th nowrap="nowrap" width="20%" class="title">
            <?php echo JText::_( 'Title' ); ?>
         </th>
и что такое nowrap для чего служит , что делает, где применяется.

Просто в кодах вообще ноль полный
*

era

  • Администратор
  • 1679
  • 383
  • В туалете лучше быть пользователем, чем админом.
Re: Информация по написанию компонента
« Ответ #20 : 23.03.2009, 12:44:28 »
Просто в кодах вообще ноль полный
ну дак HTML книжку открыть нужно тогда. Этот параметр указывает браузеру что не переносить текст на следующую строчку
*

Magys

  • Осваиваюсь на форуме
  • 32
  • 1
Re: Информация по написанию компонента
« Ответ #21 : 23.03.2009, 12:52:14 »
а html книжке есть такие коды типа:
$sefConfig = & shRouter::shGetConfig();
  if (!empty($dest) && $dest != $incomingUrl) {  // redirect to alias
    if ($dest == sh404SEF_HOMEPAGE_CODE) {
      if (!empty($sefConfig->shForcedHomePage)) {
        $dest = shFinalizeURL($sefConfig->shForcedHomePage);
      } else {
        $dest = shFinalizeURL($GLOBALS['shConfigLiveSite']);
      }
    } else {
      $shUri = null;
      $dest = shSefRelToAbs($dest, '', $shUri);
    }
со всякими знаками долларов, некоторые теги а вот некоторые вообще непонятны, это наверно джумловский язык :)
*

era

  • Администратор
  • 1679
  • 383
  • В туалете лучше быть пользователем, чем админом.
*

Magys

  • Осваиваюсь на форуме
  • 32
  • 1
Re: Информация по написанию компонента
« Ответ #23 : 23.03.2009, 13:02:38 »
вопрос в том в этих книгах есть подробно, что данный код обозначает для чего он и как его...?
*

Magys

  • Осваиваюсь на форуме
  • 32
  • 1
Re: Информация по написанию компонента
« Ответ #24 : 23.03.2009, 13:05:54 »
в книжке по ПХП программированию за 2000 год нашел подобные символы, мда там 1000 страниц иероглифов, глаза уже испугались.......
*

era

  • Администратор
  • 1679
  • 383
  • В туалете лучше быть пользователем, чем админом.
Re: Информация по написанию компонента
« Ответ #25 : 23.03.2009, 13:13:03 »
что данный код обозначает для чего он и как его...?
не... дак видишь-ли в каждом компоненте они могут отличаться :)
вот приведённый тобой код я догадываюсь что взят из компонента sh404SEF
*

Magys

  • Осваиваюсь на форуме
  • 32
  • 1
Re: Информация по написанию компонента
« Ответ #26 : 23.03.2009, 13:22:25 »
не сложно было догадаться :)
набор всех кодов же все равно есть и их описание хотя бы, что делает тот или иной код, чтобы хотя бы мысленно представить, что у тебя в итоге получится, мне это не для написания нужно разработчиков различных компонентов много, мне просто знать нужно, чтобы подправить например шаблон оптимизировать убрать лишние коды... Или знать, где что подправить...

А так зачем лезть в чащу, где итак уже всего по несколько экземпляров...
*

era

  • Администратор
  • 1679
  • 383
  • В туалете лучше быть пользователем, чем админом.
Re: Информация по написанию компонента
« Ответ #27 : 23.03.2009, 13:28:21 »
смотри в поддиректориях views соответствующих тебе компонентов. + в шаблоне в диреткории html - туда кладутся изменения выидов для компонентов.
*

Magys

  • Осваиваюсь на форуме
  • 32
  • 1
Re: Информация по написанию компонента
« Ответ #28 : 23.03.2009, 13:31:59 »
спасибо, чтобы плюс поставить у меня не хватает очков, как я понимаю
*

b2z

  • Support Team
  • 7469
  • 742
  • Разраблю понемногу
Re: Информация по написанию компонента
« Ответ #29 : 23.03.2009, 13:32:55 »
Ребят, давайте не об изучении PHP и иероглифах - это оффтоп. Здесь о разработке своего компонента.

Спасибо!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывод компонента в качестве модуля

Автор fMichail

Ответов: 4
Просмотров: 1840
Последний ответ 06.08.2014, 15:16:29
от anar4ik
Переменные, доступные из любого компонента

Автор Serjo_man

Ответов: 3
Просмотров: 561
Последний ответ 03.02.2014, 05:22:00
от Arkadiy
Работа компонента Ninja RSS 1.1.11 на Joomla 1.5.26

Автор Adam.K

Ответов: 1
Просмотров: 615
Последний ответ 16.12.2013, 21:26:31
от Adam.K
Доработка компонента - нужна помощь

Автор wfire

Ответов: 5
Просмотров: 487
Последний ответ 24.09.2013, 13:17:28
от robert
Доработка компонента com_users в админке.

Автор dolphin_al

Ответов: 2
Просмотров: 1173
Последний ответ 04.02.2013, 08:45:12
от SolopoV