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

alpha_ru

  • Осваиваюсь на форуме
  • 78
  • 0
Рекурсия в модуле
« : 17.07.2017, 15:17:57 »
Joomla 3.7.3
В модуле нужно вывести древовидный контент. Есть две связанные функции. Как организовать их взаимодействие в классе? Подскажите принцип вывода.
*

SmokerMan

  • Профи
  • 5333
  • 689
Re: Рекурсия в модуле
« Ответ #1 : 17.07.2017, 15:39:49 »
Есть две связанные функции.
связанные чем?)
рекурсия в классе можно сделать, например, через статические методы, принцип ничем не отличается если использовать обычные функции
или просто прописать эти функции в том же выводе (default.php) и юзать их
« Последнее редактирование: 17.07.2017, 15:43:00 от SmokerMan »
*

alpha_ru

  • Осваиваюсь на форуме
  • 78
  • 0
Re: Рекурсия в модуле
« Ответ #2 : 17.07.2017, 15:56:06 »
Тестовый файл вне CMS отлично выводит контент из базы Joomla:

Спойлер
[свернуть]


*

passer

  • Живу я здесь
  • 875
  • 70
*

alpha_ru

  • Осваиваюсь на форуме
  • 78
  • 0
Re: Рекурсия в модуле
« Ответ #4 : 18.07.2017, 10:48:21 »
Раскидал функции:

function getCategory() - helper.php

function outTree - default.php

$category_arr = modKompHelper::getCategory(); - прописана в mod_komp.php

Проблема с $category_arr в default.php:

переменная $category_arr  не видима в функции function outTree.

global $category_arr; - не работает.

Гуру Joomla, помогите разобраться!
*

SmokerMan

  • Профи
  • 5333
  • 689
Re: Рекурсия в модуле
« Ответ #5 : 18.07.2017, 11:01:48 »
переменная $category_arr  не видима в функции function outTree.
ну так можно передать массив в качестве первого аргумента, например
Код
outTree($category_arr, ...)
ну и в рекурсии тоже не забыть поставить
*

alpha_ru

  • Осваиваюсь на форуме
  • 78
  • 0
Re: Рекурсия в модуле
« Ответ #6 : 18.07.2017, 11:56:07 »
outTree($category_arr, ...) - не работает, результат тот же.

Сам массив отображается на странице при применении print_r  для метода в helper.
*

passer

  • Живу я здесь
  • 875
  • 70
Re: Рекурсия в модуле
« Ответ #7 : 18.07.2017, 17:25:08 »
В mod_komp.php после $category_arr = modKompHelper::getCategory();
var_dump($category_arr); что показывает?
*

alpha_ru

  • Осваиваюсь на форуме
  • 78
  • 0
Re: Рекурсия в модуле
« Ответ #8 : 18.07.2017, 17:59:06 »
В mod_komp.php после $category_arr = modKompHelper::getCategory();
var_dump($category_arr); что показывает?

array(3) {
  • => array(4) {
  • => array(10) {
  • => string(2) "77" ["id"]=> string(2) "77" [1]=> string(8)............ и т.д.


не так красиво как здесь получилось, а все в строку.
*

alpha_ru

  • Осваиваюсь на форуме
  • 78
  • 0
Re: Рекурсия в модуле
« Ответ #9 : 19.07.2017, 13:31:28 »
Подвох был в global. Почему-то не работает в Joomla. Нужно явно прописывать функцию в переменной.  Helper задействовать не удалось.
*

robert

  • Профи
  • 4074
  • 376
Re: Рекурсия в модуле
« Ответ #10 : 19.07.2017, 17:08:00 »
Подвох был в global.
Зачем она нужна, когда переменная уже передана в функцию как аргумент?
Нужно явно прописывать функцию в переменной
Что это значит?
Helper задействовать не удалось.
Что-то не так с вашим кодом
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

Septdir

  • Практически профи
  • 2272
  • 112
  • JoomlaZen
Re: Рекурсия в модуле
« Ответ #11 : 19.07.2017, 21:56:11 »
Врядли буду сам смотреть но все же. Кидайте сюда модуль целиком. Надо смотреть в контексте.
А вообще древовику можно и проще сделать
JHTML menu.treerecurse  в помощь. Ну и хелпер mod_menu тоже.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
________
Мои Контакты | JoomlaZen
*

alpha_ru

  • Осваиваюсь на форуме
  • 78
  • 0
Re: Рекурсия в модуле
« Ответ #12 : 20.07.2017, 07:38:54 »
1. Вариант с 2 функциями удалось запустить разместив их в default. Связка их через аргумент не сработала. Работающий код:
Цитировать
function getCategory() {
.......
}
function outTree($category_arr, $parent_id, $level) {
 global   $category_arr = getCategory();
.......
}
2. Далее остановился на варианте с 1 функцией в default.
Спойлер
[свернуть]
Как видите весь модуль сводится к одной функции.
Задача минимум была получить вывод, задача максимум - привести все к стандарту Joomla.
Во 2 варианте столкнулся с проблемой привязки отзывов к статье. Из 7-ми выводится 3. Нужно корректировать цикл.

Буду признателен за любую помощь.
*

robert

  • Профи
  • 4074
  • 376
Re: Рекурсия в модуле
« Ответ #13 : 20.07.2017, 09:36:22 »
Кидайте сюда модуль целиком. Надо смотреть в контексте.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

alpha_ru

  • Осваиваюсь на форуме
  • 78
  • 0
Re: Рекурсия в модуле
« Ответ #14 : 20.07.2017, 10:07:59 »
У меня наверное нет прав на прикрепление архива. Выдаю листинг файлов.
mod_koment.php
Спойлер
[свернуть]
tmpl/default.php
Спойлер
[свернуть]
Результат с тестовыми данными на фото.
https://cloud.mail.ru/public/7X6e/T9mTnorQu
*

robert

  • Профи
  • 4074
  • 376
Re: Рекурсия в модуле
« Ответ #15 : 20.07.2017, 11:08:10 »
Цитировать
Код: php-brief
<?php echo create_tree ($cats, 0);?
Где $cats определяется? Где вызываются методы из helper.php?
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

Septdir

  • Практически профи
  • 2272
  • 112
  • JoomlaZen
Re: Рекурсия в модуле
« Ответ #16 : 20.07.2017, 11:50:40 »
У меня наверное нет прав на прикрепление архива. Выдаю листинг файлов.
Вообще-то должны быть, но даже без них выложите в облако. Иначе будем 100 лет играть в угодайку. Нужна и сама база и все функции причем в динамике.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
________
Мои Контакты | JoomlaZen
*

alpha_ru

  • Осваиваюсь на форуме
  • 78
  • 0
Re: Рекурсия в модуле
« Ответ #17 : 20.07.2017, 14:25:48 »
Helper нет в моем модуле. Я не сумел с ним подружить рекурсию и не стал терять время - сделал все одной функцией в файле default.php

Модуль без установщика с базой (внутри) в облаке:
https://cloud.mail.ru/public/DNFG/4ozYBdE7x
*

robert

  • Профи
  • 4074
  • 376
Re: Рекурсия в модуле
« Ответ #18 : 20.07.2017, 19:09:33 »
-function create_tree($cats, $parent_id) - для чего нужен $cats, если он задается внутри функции?
-Бесполезные $userId и $id.
-echo create_tree ($cats, 0); - без объяления $cats.
-Никакого стандарта Joomla: ни структуры, ни API. Зачем вы разделили свой код в таком случае? Обошлись бы одним скриптом.
Что вы еще хотели услышать?

  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.
*

passer

  • Живу я здесь
  • 875
  • 70
Re: Рекурсия в модуле
« Ответ #19 : 20.07.2017, 19:25:11 »
Перенесите код из default.php в mod_koment.php. Остальное удалите.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Дополнительное поле в модуле

Автор paskal

Ответов: 21
Просмотров: 740
Последний ответ 27.08.2016, 00:59:55
от robert
Запись в БД из формы в плагине (модуле). Как!

Автор Sergeyy

Ответов: 13
Просмотров: 483
Последний ответ 13.11.2015, 11:01:18
от Sergeyy
Ошибка 1005 при sql-запросах в своем модуле

Автор dv-cto

Ответов: 2
Просмотров: 476
Последний ответ 07.02.2015, 21:30:50
от dv-cto
Не выводит инфо в модуле

Автор baskethome

Ответов: 2
Просмотров: 299
Последний ответ 22.01.2015, 14:05:58
от baskethome
Как запустить событие onContentPrepare в модуле?

Автор Telnet

Ответов: 3
Просмотров: 964
Последний ответ 17.01.2015, 18:20:12
от Telnet