Новости Joomla

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

error648398

  • Захожу иногда
  • 168
  • 21 / 0
Добрый день всем, нужна помощь в понимании работы компонента.

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

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

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

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

error648398

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

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

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

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
*

Sergeyy

  • Захожу иногда
  • 154
  • 3 / 0
Re: Помощь с созданием компонента
« Ответ #3 : 13.01.2016, 11:04:10 »
А что мешает на com_content это сделать? Или от туда содрать
*

error648398

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

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Помощь с созданием компонента
« Ответ #5 : 13.01.2016, 11:53:27 »
Добрый день всем, нужна помощь в понимании работы компонента.

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

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


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

error648398

  • Захожу иногда
  • 168
  • 21 / 0
Re: Помощь с созданием компонента
« Ответ #6 : 13.01.2016, 11:56:17 »
Там свое поле не создаеться, только набор стандартных полей!
Но собственные поля создаются довольно просто!
Создаете в components/ваш_компонент/models/fields/  файл с нужным именем например myfield.php! А тут есть описание как создавать поле http://ссылка вырезана, так как домен распространяет вирусы/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, 12:01:35 от error648398 »
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Помощь с созданием компонента
« Ответ #7 : 13.01.2016, 11:57:59 »
Блок информации #1 это категория, а Блок информации #1-1,   Блок информации #1-2,  Блок информации #1-3 это материалы категории?
*

Sergeyy

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

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Помощь с созданием компонента
« Ответ #9 : 13.01.2016, 12:05:02 »
Ваша задача, как я понял спокойно решается стандартными средствами
а если надо вывести список и в них список материалов прикрепленных к этим категориям, то как стандартными средствами это сделать?!
*

error648398

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

error648398

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

robert

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

Arkadiy

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

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Помощь с созданием компонента
« Ответ #14 : 13.01.2016, 12: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>
*

Sergeyy

  • Захожу иногда
  • 154
  • 3 / 0
Re: Помощь с созданием компонента
« Ответ #15 : 13.01.2016, 12:23:52 »
а если надо вывести список и в них список материалов прикрепленных к этим категориям, то как стандартными средствами это сделать?!
Пропустил. Тогда да не как.

*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Помощь с созданием компонента
« Ответ #16 : 13.01.2016, 12:48:02 »
Модифицировать стандартные компоненты нельзя, затрется при обновлении.
Да, там ни одной точки для плагина.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Re: Помощь с созданием компонента
« Ответ #17 : 13.01.2016, 12:58:09 »
ну вообще то я сильно подозреваю что в com_content можно сделать свой вид и модель и с помощью их все вывести, и скорее всего ничего при обновлении не затрется, но на 100% не уверен )
*

error648398

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

robert

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

error648398

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

error648398

  • Захожу иногда
  • 168
  • 21 / 0
Re: Помощь с созданием компонента
« Ответ #21 : 19.01.2016, 01: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

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

error648398

  • Захожу иногда
  • 168
  • 21 / 0
Re: Помощь с созданием компонента
« Ответ #23 : 19.01.2016, 10:28:39 »
Какие виды вы создалимна фронте?

через сайт http://ссылка вырезана, так как домен распространяет вирусы/sozdanie-komponenta.html

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

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

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

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Re: Помощь с созданием компонента
« Ответ #24 : 19.01.2016, 13: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 / 0
Re: Помощь с созданием компонента
« Ответ #25 : 19.01.2016, 13: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

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

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

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

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

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

error648398

  • Захожу иногда
  • 168
  • 21 / 0
Re: Помощь с созданием компонента
« Ответ #27 : 19.01.2016, 13:48:22 »
Я правильно понимаю?(или не понимаю)

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

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

*

Sergeyy

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

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

error648398

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

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