Форум русской поддержки Joomla!® CMS
28.07.2017, 19:05:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Основной курс по Joomla
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Рекурсия в модуле

 (Прочитано 519 раз)
0 Пользователей и 1 Гость смотрят эту тему.
alpha_ru
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 25


« : 17.07.2017, 16:17:57 »

Joomla 3.7.3
В модуле нужно вывести древовидный контент. Есть две связанные функции. Как организовать их взаимодействие в классе? Подскажите принцип вывода.
Записан
SmokerMan
Профи
********

Репутация: +710/-26
Offline Offline

Пол: Мужской
Сообщений: 5366



« Ответ #1 : 17.07.2017, 16:39:49 »

Есть две связанные функции.
связанные чем?)
рекурсия в классе можно сделать, например, через статические методы, принцип ничем не отличается если использовать обычные функции
или просто прописать эти функции в том же выводе (default.php) и юзать их
« Последнее редактирование: 17.07.2017, 16:43:00 от SmokerMan » Записан
alpha_ru
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 25


« Ответ #2 : 17.07.2017, 16:56:06 »

Тестовый файл вне CMS отлично выводит контент из базы Joomla:

Показать текстовый блок


Записан
passer
Живу я здесь
******

Репутация: +73/-3
Offline Offline

Пол: Мужской
Сообщений: 947



« Ответ #3 : 17.07.2017, 17:31:21 »

http://joomlaforum.ru/index.php/topic,315216.msg1567711.html#msg1567711
Записан
alpha_ru
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 25


« Ответ #4 : 18.07.2017, 11: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
Профи
********

Репутация: +710/-26
Offline Offline

Пол: Мужской
Сообщений: 5366



« Ответ #5 : 18.07.2017, 12:01:48 »

переменная $category_arr  не видима в функции function outTree.
ну так можно передать массив в качестве первого аргумента, например
Код:
outTree($category_arr, ...)
ну и в рекурсии тоже не забыть поставить
Записан
alpha_ru
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 25


« Ответ #6 : 18.07.2017, 12:56:07 »

outTree($category_arr, ...) - не работает, результат тот же.

Сам массив отображается на странице при применении print_r  для метода в helper.
Записан
passer
Живу я здесь
******

Репутация: +73/-3
Offline Offline

Пол: Мужской
Сообщений: 947



« Ответ #7 : 18.07.2017, 18:25:08 »

В mod_komp.php после $category_arr = modKompHelper::getCategory();
var_dump($category_arr); что показывает?
Записан
alpha_ru
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 25


« Ответ #8 : 18.07.2017, 18: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(Cool............ и т.д.

не так красиво как здесь получилось, а все в строку.
Записан
alpha_ru
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 25


« Ответ #9 : 19.07.2017, 14:31:28 »

Подвох был в global. Почему-то не работает в Joomla. Нужно явно прописывать функцию в переменной.  Helper задействовать не удалось.
Записан
robert
Профи
********

Репутация: +380/-14
Offline Offline

Пол: Мужской
Сообщений: 4166


« Ответ #10 : 19.07.2017, 18:08:00 »

Подвох был в global.
Зачем она нужна, когда переменная уже передана в функцию как аргумент?
Нужно явно прописывать функцию в переменной
Что это значит?
Helper задействовать не удалось.
Что-то не так с вашим кодом
Записан
Septdir
Практически профи
*******

Репутация: +98/-3
Offline Offline

Пол: Мужской
Сообщений: 2009


Skype: septdir


« Ответ #11 : 19.07.2017, 22:56:11 »

Врядли буду сам смотреть но все же. Кидайте сюда модуль целиком. Надо смотреть в контексте.
А вообще древовику можно и проще сделать
JHTML menu.treerecurse  в помощь. Ну и хелпер mod_menu тоже.
Записан
alpha_ru
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 25


« Ответ #12 : 20.07.2017, 08: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
Профи
********

Репутация: +380/-14
Offline Offline

Пол: Мужской
Сообщений: 4166


« Ответ #13 : 20.07.2017, 10:36:22 »

Кидайте сюда модуль целиком. Надо смотреть в контексте.
Записан
alpha_ru
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 25


« Ответ #14 : 20.07.2017, 11:07:59 »

У меня наверное нет прав на прикрепление архива. Выдаю листинг файлов.
mod_koment.php
Показать текстовый блок
tmpl/default.php
Показать текстовый блок
Результат с тестовыми данными на фото.
https://cloud.mail.ru/public/7X6e/T9mTnorQu
Записан
robert
Профи
********

Репутация: +380/-14
Offline Offline

Пол: Мужской
Сообщений: 4166


« Ответ #15 : 20.07.2017, 12:08:10 »

Цитировать
Код
<?php echo create_tree ($cats, 0);?
Где $cats определяется? Где вызываются методы из helper.php?
Записан
Septdir
Практически профи
*******

Репутация: +98/-3
Offline Offline

Пол: Мужской
Сообщений: 2009


Skype: septdir


« Ответ #16 : 20.07.2017, 12:50:40 »

У меня наверное нет прав на прикрепление архива. Выдаю листинг файлов.
Вообще-то должны быть, но даже без них выложите в облако. Иначе будем 100 лет играть в угодайку. Нужна и сама база и все функции причем в динамике.
Записан
alpha_ru
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 25


« Ответ #17 : 20.07.2017, 15:25:48 »

Helper нет в моем модуле. Я не сумел с ним подружить рекурсию и не стал терять время - сделал все одной функцией в файле default.php

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

Репутация: +380/-14
Offline Offline

Пол: Мужской
Сообщений: 4166


« Ответ #18 : 20.07.2017, 20:09:33 »

-function create_tree($cats, $parent_id) - для чего нужен $cats, если он задается внутри функции?
-Бесполезные $userId и $id.
-echo create_tree ($cats, 0); - без объяления $cats.
-Никакого стандарта Joomla: ни структуры, ни API. Зачем вы разделили свой код в таком случае? Обошлись бы одним скриптом.
Что вы еще хотели услышать?

Записан
passer
Живу я здесь
******

Репутация: +73/-3
Offline Offline

Пол: Мужской
Сообщений: 947



« Ответ #19 : 20.07.2017, 20:25:11 »

Перенесите код из default.php в mod_koment.php. Остальное удалите.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet