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

sasha_klimenchuk

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Прочитала тему Как вставить модуль в контент  компонента. Нужен было выводить модуль после 3, 6, 9, 12 и так далее материала. Вот какой код у меня получился.
<?php $leadingcount = 1; ?>
<?php
jimport( 'joomla.application.module.helper' );
$module = JModuleHelper::getModules('position-2');
$attribs['style'] = 'none';
?>
......
      <?php
         if($leadingcount%3 == 0){
            foreach($modules as $moduleitem){
               echo JModuleHelper::renderModule($moduleitem, $attribs);
            }
         }
      ?>
      <?php $leadingcount++; ?>
   <?php endforeach; ?>
</div>
<?php endif; ?>
Создала переопределение файла /components/com_content/views/category/tmpl/blog.php и в параметрах категории указала альтернативный макет. Модуль опубликован. Но ничего не отображается( Помогите, пожалуйста!
*

draff

  • Живу я здесь
  • 3525
  • 227 / 6
  • Ищу работу
Позиция уникальная, нет в шаблоне, модуль опубликован для всех страниц, тестовый текст выводит в переопределенном макете ?
Удалю вирус с сайта. Обновление Joomla!, JoomShopping, Virtuemart -> Коммерческий раздел     |    Отзывы
Создам плагин , модуль под заказ для VirtueMart , JoomShopping
*

sasha_klimenchuk

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Позиция уникальная, нет в шаблоне, модуль опубликован для всех страниц, тестовый текст выводит в переопределенном макете ?
Позиция пользовательская не из шаблона, модуль опубликован для всех страниц, тестовый текст не пробовала. Сейчас сделаю и отпишусь
*

sasha_klimenchuk

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
<?php
         if($leadingcount%3 == 0){
            echo "Привет мир!";
         }
      ?>
не выводит
*

sasha_klimenchuk

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Без if тоже не выводит
*

Aleks.Denezh

  • Живу я здесь
  • 3371
  • 417 / 4
Потому что вы модули получили в переменную $module, а перебираете в цикле переменную $modules

Но оптимальне так что бы каждый раз не делать перебор!
$modules = JModuleHelper::getModules('position-2');
$moduleContent = '';
foreach($modules as $module){
$moduleContent .=  JModuleHelper::renderModule($module, array('style'=>'none'));
}

.....

if(!($leadingcount % 3)){
echo $moduleContent;
}
*

sasha_klimenchuk

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Потому что вы модули получили в переменную $module, а перебираете в цикле переменную $modules

Но оптимальне так что бы каждый раз не делать перебор!
$modules = JModuleHelper::getModules('position-2');
$moduleContent = '';
foreach($modules as $module){
$moduleContent .=  JModuleHelper::renderModule($module, array('style'=>'none'));
}

.....

if(!($leadingcount % 3)){
echo $moduleContent;
}
Не выводит
Прикрепила скрины с настройками
*

beliyadm

  • Легенда
  • 8936
  • 1625 / 63
  • Севастополь == Россия
Вы перебираете массив $leadingcount, но обычно все материалы выводятся через только введения http://tinyurl.com/ycottk32
Может у вас аналогичные настройки либо в "всю ширину" (это и есть $leadingcount) меньше трех вот условие и не отрабатывает.
Я бы рекомендовал там поставить 0, указывать количество в введениях и работать с массивом $this->intro_items
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb
*

Aleks.Denezh

  • Живу я здесь
  • 3371
  • 417 / 4
сделайте сразу после цикла foreach($modules as $module)  echo $moduleContent; будет ли какой то вывод? если будет то ошибка в цикле вывода
« Последнее редактирование: 24.01.2018, 19:06:05 от Aleks.Denezh »
*

sasha_klimenchuk

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Вы перебираете массив $leadingcount, но обычно все материалы выводятся через только введения http://tinyurl.com/ycottk32
Может у вас аналогичные настройки либо в "всю ширину" (это и есть $leadingcount) меньше трех вот условие и не отрабатывает.
Я бы рекомендовал там поставить 0, указывать количество в введениях и работать с массивом $this->intro_items
Действительно, у меня у самой только введения выводятся. Попытаюсь привязаться к intro_items.
*

sasha_klimenchuk

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Всё получилось! Проблема была в том, что альтернативный макет, созданный мной не цеплялся. Joomla подхватывает только файл /html/com_content/category/blog.php из шаблона, а любые другие, что я там создаю - не подхватывает, хотя и отражаются в списке альтернативных макетов категории. Внесла изменения в файл /html/com_content/category/blog.php в шаблоне и всё заработало. Всем спасибо!
*

sasha_klimenchuk

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Теперь другая проблема) При переходе на 2 страницу блога, модули начинают выводиться с первого, а нужно, чтоб продолжали с 3.

$countofmodules=0;//количество модулей
$modulenumber=0;  //порядковый номер модуля
jimport( 'joomla.application.module.helper' );
$modules = JModuleHelper::getModules('position-2');
foreach($modules as $moduleitem) $countofmodules++;
$countforblock=1;//номер строки в блоге
// Article columns
foreach ($intro as $i => $item) {
    $columns[$i % $count][] = $item;
}
.....

<?php foreach ($columns as $column) : ?>
    <div><?php foreach ($column as $item)
{
echo $article($item);
echo $countofmodules;
echo $modulenumber;
if($countforblock%3 == 0 && $modulenumber < $countofmodules)
{        echo JModuleHelper::renderModule($modules[$modulenumber], $attribs);
           $modulenumber++;
         }
$countforblock++; 
 }
?>
  </div>
 
    <?php endforeach ?>
*

beliyadm

  • Легенда
  • 8936
  • 1625 / 63
  • Севастополь == Россия
Тогда придется дополнительно плясать от пагинации, от переменной $this->pagination->pagesCurrent, если не 1 то добавлять какое-то условие для изменения позиции модуля
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb
*

Aleks.Denezh

  • Живу я здесь
  • 3371
  • 417 / 4
что бы отображались не с первого нужно:
if(!($countforblock%3) && $countforblock)
*

sasha_klimenchuk

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Все работает, как надо. На первой странице вывод начинается с 1 модуля, всего выводится 2 модуля, на второй странице вывод начинается с 3 модуля.
Только на 2 странице к url добавляется /?start=6. Не могу понять, что это. Это может быть номер статьи? Потому, что у меня количество статей, отображающихся, как вводные равно 6. Код, который получился:

jimport( 'joomla.application.module.helper' );
jimport( 'joomla.html.pagination' );
$modules = JModuleHelper::getModules('position-2');
$countofmodules=count($modules);//количество модулей
$countforblock=1;//номер строки в блоге
$pagenumber =  $this->pagination->pagesCurrent;//текущая страница
$introcount=count($this->intro_items);//количество вводных статей на странице
$itemsbeforblock=3; //количество статей между вставными блоками;
$newp=floor($introcount/$itemsbeforblock);
$modulenumber=($pagenumber-1)*$newp;  //порядковый номер модуля из position-2, с которого начнется вывод на странице

...

<?php foreach ($columns as $column) : ?>
    <div>
     <?php foreach ($column as $item)
      { echo $article($item);
         if($countforblock%$itemsbeforblock==0 && $modulenumber < $countofmodules)
         {
            echo JModuleHelper::renderModule($modules[$modulenumber], $attribs);
            $modulenumber++;
         }       
        $countforblock++; 
       }
     ?>
  </div>
 
<?php endforeach ?>
« Последнее редактирование: 25.01.2018, 22:32:27 от sasha_klimenchuk »
*

beliyadm

  • Легенда
  • 8936
  • 1625 / 63
  • Севастополь == Россия
Цитировать
Только на 2 странице к url добавляется /?start=6.
Это нормально, работа пагинации, чтобы можно было передать прямую ссылку кому-нибудь и попасть именно на эту страницу, обычный GET параметр
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb
*

sasha_klimenchuk

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Это нормально, работа пагинации, чтобы можно было передать прямую ссылку кому-нибудь и попасть именно на эту страницу, обычный GET параметр
а можно сделать так, чтоб выводился номер страницы?
*

beliyadm

  • Легенда
  • 8936
  • 1625 / 63
  • Севастополь == Россия
Скорей всего нет, номер страницы же генерируется автоматически исходя из кол-ва материалов, потому может меняться. А параметр start скажет скрипту пагинации с какого места начинать вывод.
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb
*

sasha_klimenchuk

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Скорей всего нет, номер страницы же генерируется автоматически исходя из кол-ва материалов, потому может меняться. А параметр start скажет скрипту пагинации с какого места начинать вывод.
Понятно) Спасибо!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вход через заглушку или модуль

Автор cmd2017

Ответов: 3
Просмотров: 195
Последний ответ 05.12.2018, 08:37:19
от cmd2017
После обновления на 3.9 не могу вставить модуль в материал

Автор polezniy

Ответов: 2
Просмотров: 206
Последний ответ 28.11.2018, 13:12:59
от polezniy
Добавить переменную в модуль "Материалы - Последние новости"

Автор kik84

Ответов: 1
Просмотров: 170
Последний ответ 28.11.2018, 02:19:10
от NewUsers
Как поставить модуль только на главной странице?

Автор Taras_678

Ответов: 2
Просмотров: 143
Последний ответ 26.11.2018, 00:08:50
от Taras_678
Модуль связи с помощью мессенджеров

Автор possum

Ответов: 1
Просмотров: 88
Последний ответ 23.11.2018, 20:10:09
от beliyadm