Новости Joomla

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!Файловый менеджер Quantum — одно...

Файловый менеджер Quantum — одно из самых популярных решений для Joomla, созданное разработчиком из сообщества Joomla, Дмитрием Цымбалом (@tsymbalmitia). Он делает Quantum удобным, безопасным и современным, обновляет его, исправляет уязвимости и отвечает пользователям — всё это в свободное от основной работы время.

Теперь настал момент для следующего шага: развитие проекта требует больше времени и ресурсов.

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

slepoy

  • Давно я тут
  • 753
  • 24 / 0
  • Тотальная шизофазия
Здравствуйте.

раньше я использовал в шаблоне файл /templates/мой_шаблон/html/modules.php, а в нем между div'ами фрагмент запроса с extra2:

Код: php
		<?php if($params->get('extra2')) : ?>
<?php echo $params->get('extra2'); ?>
<?php endif; ?>

на данный момент я перешел на другой шаблон, для которого вывод модулей осуществляется иначе (в другом файле). Приведу фрагмент из него:

Код: php
ya udalil koe-chto neinteresnoe
else {

    $classes = array($panel);

    // Set display
    if ($display) {
        foreach ($display as $device => $visible) {
            if (!$visible) {
                $classes[] = 'uk-hidden-'.$device;
            }
        }
    }

    if ($class)  $classes[] = $class;
    if ($suffix) $classes[] = $suffix;
    if ($icon)   $classes[] .= 'tm-panel-icon';

    echo '<div class="'.implode(' ', $classes).'">'.$icon.$badge.$title.$content.'ZDES-NUZHEN-KOD</div>';
}

Если вместо текста "ZDES-NUZHEN-KOD" вписать любой набор символов, то они будут отображаться внизу каждого модуля, как мне и нужно.

Но как на это место вставить указанный выше extra-код перед закрывающимся div'ом?
Необходимо нечто похожее на?
Код: php
if($params->get('extra2')){
$params->get('extra2');
}

Спасибо.
« Последнее редактирование: 21.10.2014, 14:08:28 от slepoy »
Помог? Поставь(те) плюс в репутацию.
*

midav

  • Давно я тут
  • 926
  • 115 / 1
Код: php
$extra2 = '';
if($params->get('extra2')){
$extra2 = $params->get('extra2');
}

echo '<div class="'.implode(' ', $classes).'">'.$icon.$badge.$title.$content.$extra2.'</div>';
Ответы на вопросы по CSS . Откройте для себя Firebug
*

slepoy

  • Давно я тут
  • 753
  • 24 / 0
  • Тотальная шизофазия
Спасибо.

Это то, что нужно. По крайней мене, если указать для эксперимента
Код: php
$extra2 = '123456789';
echo '<div class="'.implode(' ', $classes).'">'.$icon.$badge.$title.$content.$extra2.'</div>';
, то выводится то, что нужно.

А при условии
Код: php
if($params->get('extra2')){
$extra2 = $params->get('extra2');
}
по каким-то причинам страница сообщает об ошибке в строке с "if":
Цитировать
Fatal error: Call to a member function get() on a non-object in /var/www/***/data/www/домен.ru/templates/шаблон/layouts/widget.php on line 93

п.с: поле "extra2" заполняется в настройках модуля, но не думаю, что это важно.

Можно ли еще что-то предпринять в этом случае?

В оригинальном файле (во вложении) есть иные или похожие примеры условий, но следуя им мне не удалось ничего добиться.

Спасибо.
Помог? Поставь(те) плюс в репутацию.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Код: php
$extra2 = ( isset($params->getString('extra2')) || !empty($params->getString('extra2')) )? $params->getString('extra2') : '';
*

slepoy

  • Давно я тут
  • 753
  • 24 / 0
  • Тотальная шизофазия
К сожалению, в этом случае страница подгружается лишь до первого модуля - далее кода нет.
Помог? Поставь(те) плюс в репутацию.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Какие ошибки?
*

slepoy

  • Давно я тут
  • 753
  • 24 / 0
  • Тотальная шизофазия
Прошу прощения, что не опубликовал сразу - отображение ошибок было отключено на тот момент:

Цитировать
Fatal error: Can't use method return value in write context in /var/www/***/data/www/сайт.ru/templates/шаблон/layouts/widget.php on line 101
Помог? Поставь(те) плюс в репутацию.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
закомментируйте вышепредложенный код и покажите, что показывает var_dump($params);
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Получить параметры модуля можно так:
Код: php
$module = JModuleHelper::getModule('mod_modulename');
$params = new JRegistry($module->params);
Если есть копии этого модуля то вторым параметром в метод getModule передается заголовок модуля.
« Последнее редактирование: 21.10.2014, 12:24:38 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Прям чуть-чуть меня опередили, тоже обратил внимание. что параметры модуля нигде не получены в файле.
*

slepoy

  • Давно я тут
  • 753
  • 24 / 0
  • Тотальная шизофазия
К сожалению, мне так и не удалось скомпоновать все предложенные варианты в рабочий.
На сайте установлен компонент Advanced Module Manager, который в административной части позволяет в настройках модуля заполнять дополнительные поля. Когда был установлен простой шаблон, то достаточно было добавить в файл /templates/мой_шаблон/html/modules.php код для вывода содержимого этого поля:
Код
<?php if($params->get('extra2')) : ?>
<?php echo $params->get('extra2'); ?>
<?php endif; ?>
исходя из документации и рекомендаций разработчика компонента:
Цитировать
You can get the value of these fields in the module chrome functions via php with values extra1 - extra5, like $params->get('extra1');"
Но теперь, когда шаблон другой и вместо modules.php необходимо использовать widget.php, то я в растерянности.

Что еще можно предпринять в этой ситуации? Спасибо.
Помог? Поставь(те) плюс в репутацию.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Хмм, параметры модуля внутри widget.php подключить пробовали?
*

slepoy

  • Давно я тут
  • 753
  • 24 / 0
  • Тотальная шизофазия
Не думаю, что понимаю как это сделать.
Код
	$module = JModuleHelper::getModule('mod_modulename');
$params = new JRegistry($module->params);
$extra2 = '';
if($params->get('extra2')){
$extra2 = $params->get('extra2');
}
 
echo '<div class="'.implode(' ', $classes).'">'.$icon.$badge.$title.$content.$extra2.'</div>';
И насколько это необходимо?
« Последнее редактирование: 21.10.2014, 13:06:27 от slepoy »
Помог? Поставь(те) плюс в репутацию.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
у вас что модуль 'modulename' называется? Синдром copy-paste ?)
интернет-блог: http://websiteprog.ru
*

slepoy

  • Давно я тут
  • 753
  • 24 / 0
  • Тотальная шизофазия
Да, так и есть ;]
Я не понимаю одного. Раньше содержимое поля выводил modules.php, теперь - другой файл. Ведь ничего кардинального не должно было поменяться? Модулей десятки. Некоторые - одного и того же типа (копии). И изначальный код был прост:
Код
<?php if($params->get('extra2')) : ?>
<?php echo $params->get('extra2'); ?>
<?php endif; ?>
А теперь что же? :[
Помог? Поставь(те) плюс в репутацию.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
приведите полный код вашего widget.php под спойлером.
интернет-блог: http://websiteprog.ru
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
:)
А теперь изменилась вся структура и требуются дополнительные мозго-тело-движения
*

slepoy

  • Давно я тут
  • 753
  • 24 / 0
  • Тотальная шизофазия
Во вложении оба файла - новый и modules.php от старого шаблона, где выводится поле extra2. Спасибо.
Помог? Поставь(те) плюс в репутацию.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
думаю будет работать один из этих вариантов(а может оба). Первый:
Код: php
$extra2 = isset($params['extra2'])? $params['extra2'] : '';
echo '<div class="'.implode(' ', $classes).'">'.$icon.$badge.$title.$content.$extra2.'</div>';
Второй:
Код: php
$params = new JRegistry($widget->params);
$extra2 = $params->get('extra2');
echo '<div class="'.implode(' ', $classes).'">'.$icon.$badge.$title.$content.$extra2.'</div>';
« Последнее редактирование: 21.10.2014, 13:54:53 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

slepoy

  • Давно я тут
  • 753
  • 24 / 0
  • Тотальная шизофазия
Спасибо. Но, к сожалению, в обоих случаях отображается сообщение с ошибкой:

Цитировать
Parse error: syntax error, unexpected 'echo' (T_ECHO) in /var/www/slepoy/data/www/сайт.ru/templates/шаблон/layouts/widget.php on line 102
Второй:
Цитировать
Fatal error: Can't use method return value in write context in /var/www/slepoy/data/www/сайт.ru/templates/шаблон/layouts/widget.php on line 102
« Последнее редактирование: 21.10.2014, 13:49:52 от slepoy »
Помог? Поставь(те) плюс в репутацию.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Поправил код выше.Вобще в вашем примере:
Код: php
$extra2 = '';
if($params->get('extra2')){
   $extra2 = $params->get('extra2');
}
куча лишнего кода, так как метод get класса JRegistry возвращает null если не параметр не существует, а null приводится к пустой строке('')  при приведении типов. Так что всю эту лабуду можно записать как:
Код: php
$extra2 = $params->get('extra2');
« Последнее редактирование: 21.10.2014, 14:05:31 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

slepoy

  • Давно я тут
  • 753
  • 24 / 0
  • Тотальная шизофазия
zomby6888, большое спасибо - этот код помог. Обязательно опубликую решение и на форуме компонента.
Код: php
$params = new JRegistry($widget->params);
$extra2 = $params->get('extra2');
echo '<div class="'.implode(' ', $classes).'">'.$icon.$badge.$title.$content.$extra2.'</div>';

Всем спасибо за помощь и участие.
Помог? Поставь(те) плюс в репутацию.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывести модуль в модуле

Автор jimka

Ответов: 2
Просмотров: 1657
Последний ответ 18.04.2025, 15:39:36
от fbr
[Решено] Вывод значений из custom fields материала в модуле по имени поля

Автор goga_pgasovav

Ответов: 3
Просмотров: 1491
Последний ответ 30.12.2024, 13:22:11
от goga_pgasovav
[Решено] Получить category description image в index.php шаблона

Автор goga_pgasovav

Ответов: 6
Просмотров: 1495
Последний ответ 12.07.2024, 17:06:14
от goga_pgasovav
[Решено] Перестали работать переходы по меню сайта

Автор AlexP750

Ответов: 12
Просмотров: 2147
Последний ответ 06.02.2024, 12:42:26
от AlexP750
Вывод дополнительного поля материала в модуле

Автор timofe

Ответов: 10
Просмотров: 2641
Последний ответ 06.10.2023, 14:02:24
от Mitriy