Основной курс по Joomla

Помощь с созданием компонента

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

error648398

  • Осваиваюсь на форуме
  • ***
  • 168
  • 21
Добрый день всем, нужна помощь в понимании работы компонента.

Собственно проблема состоит в создании своих полей для заполнении в админской части, и выводе их в пользовательскую.
Использовал такой сервис:
http://inet-reklama.com/sozdanie-komponenta.html

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

И вторая проблема, не могу понять как связать(создать) ссылку с категории (созданной в компоненте), и материалом в этой категории ?

Буду рад любым советам и материалам по данной теме.

*

error648398

  • Осваиваюсь на форуме
  • ***
  • 168
  • 21
Re: Помощь с созданием компонента
« Ответ #1 : 13.01.2016, 12:42:39 »
Возможно спонтанно описал, сейчас попробую уточнить.
Мне надо создать подобие такой структуры:

Спойлер
[свернуть]
Нужно сделать что бы на первичной странице отображался список из Блок информации #1,#2,#3, при нажатии на них переходило на страницу Блок информации #1-1... и тд и тп.

Если у кого то есть какие то идеи, то посоветуйте как это реализовать!

*

Arkadiy

  • Группа развития
  • *****
  • 5342
  • 440
  • Крепитесь, други.

*

Sergeyy

  • Осваиваюсь на форуме
  • ***
  • 147
  • 3
Re: Помощь с созданием компонента
« Ответ #3 : 13.01.2016, 13:04:10 »
А что мешает на com_content это сделать? Или от туда содрать
joomla 2.5

*

error648398

  • Осваиваюсь на форуме
  • ***
  • 168
  • 21
Re: Помощь с созданием компонента
« Ответ #4 : 13.01.2016, 13:39:10 »
Здесь все написано, почитайте. https://cmscafe.ru/docs/joomla/developer/component-joomla-2-5
К сожалению не всё, ну или я очень плохо читаю. Также написано для J2.5, хоть и есть раздел адаптации, но кажись адаптированая версия имеет битую ссылку.
А что мешает на com_content это сделать? Или от туда содрать
Наверное не опытность, достаточно трудно сдирать то, в чём не достаточно разбираешься.

*

Aleks.Denezh

  • Практически профи
  • *******
  • 2786
  • 376
Re: Помощь с созданием компонента
« Ответ #5 : 13.01.2016, 13:53:27 »
Добрый день всем, нужна помощь в понимании работы компонента.

Собственно проблема состоит в создании своих полей для заполнении в админской части, и выводе их в пользовательскую.
Использовал такой сервис:
http://inet-reklama.com/sozdanie-komponenta.html

Но там если выбрать редактируемое поле - появляется простой редактор, а вот как создать своё поле не написано.
Там свое поле не создаеться, только набор стандартных полей!
Но собственные поля создаются довольно просто!
Создаете в components/ваш_компонент/models/fields/  файл с нужным именем например myfield.php! А тут есть описание как создавать поле http://inet-reklama.com/blog/joomla/sozdanie-sobstvennogo-polya-dlya-formy-v-joomla-2-5.html, а дальше после создания поля вам если вы его назвали например myfield то в XML формы components/ваш_компонент/models/forms/название_вида.xml просто вставить свое поле:
<field name="name" type="myfield" label="Мое поле" />


И вторая проблема, не могу понять как связать(создать) ссылку с категории (созданной в компоненте), и материалом в этой категории ?
Не совсем понятно где вы хотите что то связать? В админке или пользовательской части?
Мой  блог по разработке на Joomla CMS!
Хотите отблагодарить материально? Мой WMR: R861060179016

*

error648398

  • Осваиваюсь на форуме
  • ***
  • 168
  • 21
Re: Помощь с созданием компонента
« Ответ #6 : 13.01.2016, 13:56:17 »
Там свое поле не создаеться, только набор стандартных полей!
Но собственные поля создаются довольно просто!
Создаете в components/ваш_компонент/models/fields/  файл с нужным именем например myfield.php! А тут есть описание как создавать поле http://inet-reklama.com/blog/joomla/sozdanie-sobstvennogo-polya-dlya-formy-v-joomla-2-5.html, а дальше после создания поля вам если вы его назвали например myfield то в XML формы components/ваш_компонент/models/forms/название_вида.xml просто вставить свое поле:
<field name="name" type="myfield" label="Мое поле" />

Не совсем понятно где вы хотите что то связать? В админке или пользовательской части?

По первому пункту понятно, большое спасибо за пояснения.
UPD:
Не совсем понятно как вывести информацию с созданного поля на сайте.

По второму пункту:
Возможно спонтанно описал, сейчас попробую уточнить.
Мне надо создать подобие такой структуры:

Спойлер
[свернуть]
Нужно сделать что бы на первичной странице отображался список из Блок информации #1,#2,#3, при нажатии на них переходило на страницу Блок информации #1-1... и тд и тп.

Если у кого то есть какие то идеи, то посоветуйте как это реализовать!

« Последнее редактирование: 13.01.2016, 14:01:35 от error648398 »

*

Aleks.Denezh

  • Практически профи
  • *******
  • 2786
  • 376
Re: Помощь с созданием компонента
« Ответ #7 : 13.01.2016, 13:57:59 »
Блок информации #1 это категория, а Блок информации #1-1,   Блок информации #1-2,  Блок информации #1-3 это материалы категории?
Мой  блог по разработке на Joomla CMS!
Хотите отблагодарить материально? Мой WMR: R861060179016

*

Sergeyy

  • Осваиваюсь на форуме
  • ***
  • 147
  • 3
Re: Помощь с созданием компонента
« Ответ #8 : 13.01.2016, 14:02:59 »
Неужеле проще написать компонент...
Писать, а потом всовывать туда функции которые есть в дефолт. компонентах
Ваша задача, как я понял спокойно решается стандартными средствами
joomla 2.5

*

Aleks.Denezh

  • Практически профи
  • *******
  • 2786
  • 376
Re: Помощь с созданием компонента
« Ответ #9 : 13.01.2016, 14:05:02 »
Ваша задача, как я понял спокойно решается стандартными средствами
а если надо вывести список и в них список материалов прикрепленных к этим категориям, то как стандартными средствами это сделать?!
Мой  блог по разработке на Joomla CMS!
Хотите отблагодарить материально? Мой WMR: R861060179016

*

error648398

  • Осваиваюсь на форуме
  • ***
  • 168
  • 21
Re: Помощь с созданием компонента
« Ответ #10 : 13.01.2016, 14:06:46 »
Блок информации #1 это категория, а Блок информации #1-1,   Блок информации #1-2,  Блок информации #1-3 это материалы категории?
да

*

error648398

  • Осваиваюсь на форуме
  • ***
  • 168
  • 21
Re: Помощь с созданием компонента
« Ответ #11 : 13.01.2016, 14:08:34 »
Неужеле проще написать компонент...
Писать, а потом всовывать туда функции которые есть в дефолт. компонентах
Ваша задача, как я понял спокойно решается стандартными средствами
Боюсь что не решается

*

robert

  • Профи
  • ********
  • 4007
  • 371
Re: Помощь с созданием компонента
« Ответ #12 : 13.01.2016, 14:11:56 »
Боюсь что не решается
Стандартными средствами, наверное, нет. Но, IMHO, необязательно написать целый компонент для такой задачи: можно модифицировать com_content.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

Arkadiy

  • Группа развития
  • *****
  • 5342
  • 440
  • Крепитесь, други.
Re: Помощь с созданием компонента
« Ответ #13 : 13.01.2016, 14:16:07 »
Стандартными средствами, наверное, нет. Но, IMHO, необязательно написать целый компонент для такой задачи: можно модифицировать com_content.
Модифицировать стандартные компоненты нельзя, затрется при обновлении. А если копировать в другую папку и там модифицировать - то легче воспользоваться сервисом Истана, Компонент создается вполне рабочий и без всяких ненужностей.

*

Aleks.Denezh

  • Практически профи
  • *******
  • 2786
  • 376
Re: Помощь с созданием компонента
« Ответ #14 : 13.01.2016, 14:16:57 »
1. в классе модели добавить метод:
Код: php
/**
* Формируем спискок
* @return mixed
*/
public function getList()
{
$query = $this->getDbo()->getQuery( true )
->select( 'id, title, alias' )
->from( '#__categories' )
->where( 'extension=' . $this->getDbo()->quote( 'com_ваш_компонент' ) )
->where( 'published=1' )
->order( 'lft ASC' );
$categories = $this->getDbo()->setQuery( $query )->loadObjectList( 'id' );
$cid = array();
foreach ( $categories as &$category ) {
$category->articles = array();
$cid[] = $category->id;
}

if ( count( $cid ) ) {
$query = $this->getDbo()->getQuery( true )
->select( 'id, title, alias, catid' )
->from( '#__ВАША_ТАБЛИЦА_С_ЗАПИСЯМИ' )
->where( 'catid IN(' . implode( ',', $cid ). ')' );
$articles = $this->getDbo()->setQuery( $query )->loadObjectList();
foreach ( $articles as $article ) {
if ( isset( $categories[$article->catid] ) ) {
$categories[$article->catid]->articles[] = $article;
}
}

}
return $categories;
}

2. в виде в методе display написать
Код: php
$this->categories= $this->get('List');

3. в файле шаблона вида выполнить перебор записей:
Код: php
<ul>
<?php foreach ( $this->categories as $category ): ?>
<li>
<?php echo $category->title; ?>
<?php if ( count( $category->articles ) ): ?>
<ul>
<?php foreach ( $category->articles as $article ): ?>
<li><a href="#"><?php echo $article->title; ?></a></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>
Мой  блог по разработке на Joomla CMS!
Хотите отблагодарить материально? Мой WMR: R861060179016

*

Sergeyy

  • Осваиваюсь на форуме
  • ***
  • 147
  • 3
Re: Помощь с созданием компонента
« Ответ #15 : 13.01.2016, 14:23:52 »
а если надо вывести список и в них список материалов прикрепленных к этим категориям, то как стандартными средствами это сделать?!
Пропустил. Тогда да не как.

joomla 2.5

*

robert

  • Профи
  • ********
  • 4007
  • 371
Re: Помощь с созданием компонента
« Ответ #16 : 13.01.2016, 14:48:02 »
Модифицировать стандартные компоненты нельзя, затрется при обновлении.
Да, там ни одной точки для плагина.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

Aleks.Denezh

  • Практически профи
  • *******
  • 2786
  • 376
Re: Помощь с созданием компонента
« Ответ #17 : 13.01.2016, 14:58:09 »
ну вообще то я сильно подозреваю что в com_content можно сделать свой вид и модель и с помощью их все вывести, и скорее всего ничего при обновлении не затрется, но на 100% не уверен )
Мой  блог по разработке на Joomla CMS!
Хотите отблагодарить материально? Мой WMR: R861060179016

*

error648398

  • Осваиваюсь на форуме
  • ***
  • 168
  • 21
Re: Помощь с созданием компонента
« Ответ #18 : 13.01.2016, 15:03:05 »
Спс попробую
« Последнее редактирование: 13.01.2016, 15:46:34 от error648398 »

*

robert

  • Профи
  • ********
  • 4007
  • 371
Re: Помощь с созданием компонента
« Ответ #19 : 13.01.2016, 15:03:09 »
ну вообще то я сильно подозреваю что в com_content можно сделать свой вид и модель и с помощью их все вывести, и скорее всего ничего при обновлении не затрется, но на 100% не уверен )
Точно. Совсем забыл, что сам уже проделал такое, чтобы скрестить com_content с com_tags. И ничего не стирается.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

error648398

  • Осваиваюсь на форуме
  • ***
  • 168
  • 21
Re: Помощь с созданием компонента
« Ответ #20 : 19.01.2016, 02:25:11 »
Подскажите пожалуйста.
Например я вывел список записей через JModelList, у меня вывелось n-ое количество записей, все нормально, но мне надо что бы при нажатии на одну из записей - ссылка вела на вывод единичной данной записи.

*

error648398

  • Осваиваюсь на форуме
  • ***
  • 168
  • 21
Re: Помощь с созданием компонента
« Ответ #21 : 19.01.2016, 03:04:52 »
1. в классе модели добавить метод:
Код: php
/**
* Формируем спискок
* @return mixed
*/
public function getList()
{
$query = $this->getDbo()->getQuery( true )
->select( 'id, title, alias' )
->from( '#__categories' )
->where( 'extension=' . $this->getDbo()->quote( 'com_ваш_компонент' ) )
->where( 'published=1' )
->order( 'lft ASC' );
$categories = $this->getDbo()->setQuery( $query )->loadObjectList( 'id' );
$cid = array();
foreach ( $categories as &$category ) {
$category->articles = array();
$cid[] = $category->id;
}

if ( count( $cid ) ) {
$query = $this->getDbo()->getQuery( true )
->select( 'id, title, alias, catid' )
->from( '#__ВАША_ТАБЛИЦА_С_ЗАПИСЯМИ' )
->where( 'catid IN(' . implode( ',', $cid ). ')' );
$articles = $this->getDbo()->setQuery( $query )->loadObjectList();
foreach ( $articles as $article ) {
if ( isset( $categories[$article->catid] ) ) {
$categories[$article->catid]->articles[] = $article;
}
}

}
return $categories;
}

2. в виде в методе display написать
Код: php
$this->categories= $this->get('List');

3. в файле шаблона вида выполнить перебор записей:
Код: php
<ul>
<?php foreach ( $this->categories as $category ): ?>
<li>
<?php echo $category->title; ?>
<?php if ( count( $category->articles ) ): ?>
<ul>
<?php foreach ( $category->articles as $article ): ?>
<li><a href="#"><?php echo $article->title; ?></a></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>

Спасибо за помощь, но наверное я не очень точно написал.
В идеале мне бы хотелось получить такую модель:
Категория
 |
   Блок информации #1-1
  |
   Блок информации #1-2
  |
   Блок информации #1-3
Где при нажатии на ссылку любого блока информации, открывалась страница с одиночной записью данных, данного блока.

*

Arkadiy

  • Группа развития
  • *****
  • 5342
  • 440
  • Крепитесь, други.
Re: Помощь с созданием компонента
« Ответ #22 : 19.01.2016, 07:57:59 »
Какие виды вы создалимна фронте?

*

error648398

  • Осваиваюсь на форуме
  • ***
  • 168
  • 21
Re: Помощь с созданием компонента
« Ответ #23 : 19.01.2016, 12:28:39 »
Какие виды вы создалимна фронте?

через сайт http://inet-reklama.com/sozdanie-komponenta.html

name1\tmpl\default.php
Спойлер
[свернуть]
name1\view.html.php
Спойлер
[свернуть]

name2\tmpl\default.php
Спойлер
[свернуть]
name2\view.html.php
Спойлер
[свернуть]

Хотя у меня есть подозрения что это неправильно, и надо создать один вид, и дать ему два вывода в виде списка и в виде одиночной записи

*

Arkadiy

  • Группа развития
  • *****
  • 5342
  • 440
  • Крепитесь, други.
Re: Помощь с созданием компонента
« Ответ #24 : 19.01.2016, 15:16:26 »
Вот же у вас ссылка на материал в name1\tmpl\default.php
Код
 <a href="<?php echo JRoute::_( 'index.php?view=name1&id=' . $item->id . ':' . $item->alias ); ?>"><?php echo $item->title; ?></a>
Правда неправильная немного, должно быть еще option=com_вашкомпонент

*

error648398

  • Осваиваюсь на форуме
  • ***
  • 168
  • 21
Re: Помощь с созданием компонента
« Ответ #25 : 19.01.2016, 15:27:50 »
Вот же у вас ссылка на материал в name1\tmpl\default.php
Код
 <a href="<?php echo JRoute::_( 'index.php?view=name1&id=' . $item->id . ':' . $item->alias ); ?>"><?php echo $item->title; ?></a>
Правда неправильная немного, должно быть еще option=com_вашкомпонент
Ссылка то сформирована, при нажатии на неё адресная строка принимает вид:
../name1/1-1
Но отображает всё тот же список записей, а хотелось бы одиночную запись материала.



*

Sergeyy

  • Осваиваюсь на форуме
  • ***
  • 147
  • 3
Re: Помощь с созданием компонента
« Ответ #26 : 19.01.2016, 15:39:11 »
Спасибо за помощь, но наверное я не очень точно написал.
В идеале мне бы хотелось получить такую модель:
Категория
 |
   Блок информации #1-1
  |
   Блок информации #1-2
  |
   Блок информации #1-3
Где при нажатии на ссылку любого блока информации, открывалась страница с одиночной записью данных, данного блока.

Я правильно понимаю?(или не понимаю)
На странице нужно вывести

Описание категории
--Описание материала
--Описание материала
--Описание материала

При нажатии на материал переходим на его страницу

Или нужно несколько Категорий и описаний материалов на одной странице
а если надо вывести список и в них список материалов прикрепленных к этим категориям, то как стандартными средствами это сделать?!
joomla 2.5

*

error648398

  • Осваиваюсь на форуме
  • ***
  • 168
  • 21
Re: Помощь с созданием компонента
« Ответ #27 : 19.01.2016, 15:48:22 »
Я правильно понимаю?(или не понимаю)

Или нужно несколько Категорий и описаний материалов на одной странице
Вы правильно понимаете.
Для списка категорий одна страница, для списка материалов вторая страница, и для каждого материала своя отдельная страница.

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


*

Sergeyy

  • Осваиваюсь на форуме
  • ***
  • 147
  • 3
Re: Помощь с созданием компонента
« Ответ #28 : 19.01.2016, 16:01:58 »
Тогда точно не понимаю!
Принципиально писать свой компонент?
Компонент Контакты в нем три вида:
1 список категорий
2 список контактов
3 контакт
components/com_contact/views/categories
components/com_contact/views/category
components/com_contact/views/contact

Преопределяем шаблоны tmpl/default.php под себя и готово
joomla 2.5

*

error648398

  • Осваиваюсь на форуме
  • ***
  • 168
  • 21
Re: Помощь с созданием компонента
« Ответ #29 : 19.01.2016, 16:07:46 »
Тогда точно не понимаю!
Принципиально писать свой компонент?
Компонент Контакты в нем три вида:
1 список категорий
2 список контактов
3 контакт
components/com_contact/views/categories
components/com_contact/views/category
components/com_contact/views/contact

Преопределяем шаблоны tmpl/default.php под себя и готово
Спс за наводку, просто первый раз пытаюсь сделать компонент и хотелось бы понять принципы работы некоторых моментов.
А переделка не всегда внесет ясность и понимания написанного.