1. Уважаемые пользователи, прежде чем ответить в теме или создать новую,
    внимательно ознакомьтесь с правилами раздела

    Кому лень работать или руки не оттуда - пользуйтесь услугами специалистов
  2. Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.."

    Есть JED!!! Ищите там!!!

Помощь В шаблоне статьи создать позицию модуля

Тема в разделе "Joomla", создана пользователем matrixid, 16 май 2014.

Информация :
  • Уважаемые пользователи, прежде чем ответить в теме или создать новую, внимательно ознакомьтесь с правилами раздела
  • Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.." Есть JED!!! Ищите там!!!
  • Аналоги ищите там же - на JED!!!
  • Новая версия? - У кого будет - тот выложит!
Статус темы:
Закрыта.
Модераторы: arman29, DMS, Genk0
  1. matrixid

    matrixid Нарушитель

    Регистр.:
    6 ноя 2013
    Сообщения:
    250
    Симпатии:
    279
    Как в шаблоне полной статьи создать позицию модуля? Требуется в каждой статье выводить блок информации. Блок статичен и должен присутствовать в каждом материале полной новости.
    Плагины Content - Load Modules, Modules Anywhere и им подобные не подходят.
    Чуть подробнее (на демо шаблоне:(

    [​IMG]
    Цифрами проставил варианты куда хочу внести определенную информацию (модуль, блок)
    1 - на одном уровне с заголовком
    2 - в блок инструментов
    3 - между заголовком и началом текста самого материала
    Интернет курил долго и упорно, начинай от вариантов с плагинами Content - Load Modules, Modules Anywhere и заканчивая правкой шаблонов php файлов (варианты были предложены для старых версий joomla - которые сейчас не работают).
    Собственно вопрос как добавить блок/позицию в шаблон полной статьи/материала??
     
  2. matrixid

    matrixid Нарушитель

    Регистр.:
    6 ноя 2013
    Сообщения:
    250
    Симпатии:
    279
    угу копался я в этом файле как и было предложено в инете, вставлял код в каждую строчку в итоге он выводился всегда в 1 месте (до заголовка статьи), вне самого материала или вовсе не выводился немного по конкретнее бы.
    Привожу код упомянутого файла:
    Код:
    <?php
    defined('_JEXEC') or die;
    
    require_once dirname(dirname(dirname(dirname(__FILE__)))) . DIRECTORY_SEPARATOR . 'functions.php';
    
    JHtml::addIncludePath(JPATH_COMPONENT . '/helpers');
    
    Artx::load("Artx_Content");
    
    $component = new ArtxContent($this, $this->params);
    $article = $component->article('article', $this->item, $this->item->params, array('print' => $this->print));
    
    echo $component->beginPageContainer('item-page');
    if (strlen($article->pageHeading))
        echo $component->pageHeading($article->pageHeading);
    $params = $article->getArticleViewParameters();
    if (strlen($article->title)) {
        $params['header-text'] = $this->escape($article->title);
        if (strlen($article->titleLink))
            $params['header-link'] = $article->titleLink;
    }
    // Build article content
    $content = '';
    if ('above full article' === $article->paginationPosition)
        $content .= $article->pagination();
    if (!$article->introVisible)
        $content .= $article->event('afterDisplayTitle');
    $content .= $article->event('beforeDisplayContent');
    if (strlen($article->toc))
        $content .= $article->toc($article->toc);
    if (strlen($article->text)) {
        if (strlen($article->images['fulltext']['image']))
            $content .= $article->image($article->images['fulltext']);
        if ('above text' === $article->paginationPosition)
            $content .= $article->pagination();
        $content .= $article->text($article->text);
        if ('below text' === $article->paginationPosition)
            $content .= $article->pagination();
        if ($article->showLinks)
            $content .= $this->loadTemplate('links');
    }
    if ($article->introVisible)
        $content .= $article->intro($article->intro);
    if (strlen($article->readmore))
        $content .= $article->readmore($article->readmore, $article->readmoreLink);
    if ('below full article' === $article->paginationPosition)
        $content .= $article->pagination();
    $content .= $article->event('afterDisplayContent');
    $params['content'] = $content;
    
    // Render article
    echo $article->article($params);
    echo $component->endPageContainer();
    
     
  3. rudoy24

    rudoy24 Создатель Нарушитель

    Регистр.:
    20 дек 2013
    Сообщения:
    27
    Симпатии:
    2
    1. Для начала чтобы не слетали при обновлении joomlaВаши изменения копируем файл components/com_content/views/article/tmpl/default.php в используемый шаблон templates/название_шаблона/html/com_content/article/.

    2. В необходимом месте, где необходимо выводить модуль, прописываем следующий код:

    Код:
    <?php $modules = JModuleHelper::getModules( 'название позиции' );
    foreach ( $modules as $module ) {
      echo JModuleHelper::renderModule( $module, array( 'style' => 'xhtml' ) );
    }?>


    ЛИБО:

    Код:
    <?php
    jimport('joomla.application.module.helper');
      $mods = JModuleHelper::getModules('название позиции');
      echo JModuleHelper::renderModule($mods[0], array( 'style' => 'xhtml' ));
    ?>


    3. В файле templates/название_шаблона/templateDetails.xml прописываем название позиции добавив новый код между тегами:
    Код:
    <positions>
    …
      <position>название позиции</position>
    …
    </positions>


    4. Добавляем сам модуль в админке в созданную позицию!
     
    Vishez и matrixid нравится это.
  4. matrixid

    matrixid Нарушитель

    Регистр.:
    6 ноя 2013
    Сообщения:
    250
    Симпатии:
    279
    а что если у меня есть default.php уже и там и там:
    \templates\название_шаблона\html\com_content\article\default.php - размер 2кб
    \components\com_content\views\article\tmpl\default.php - размер 15кб
    тогда как выполнять пункт №1
     
  5. Genk0

    Genk0 Инквизитор из раздела J!

    Moderator
    Регистр.:
    2 июн 2010
    Сообщения:
    1.627
    Симпатии:
    1.330
    Приоритет имеет папка шаблона, значит все правки буду взяты именно оттуда
     
  6. matrixid

    matrixid Нарушитель

    Регистр.:
    6 ноя 2013
    Сообщения:
    250
    Симпатии:
    279
    попробовал как сказали - выводится но не там где надо, скриншот:
    [​IMG]
    но позиция не та! Скопировал в каждую строчку \templates\название_шаблона\html\com_content\article\default.php
    позиция не меняется. Не получается перенести в сам материал.
    Код моего файла \templates\название_шаблона\html\com_content\article\default.php
    Код:
    <?php
    defined('_JEXEC') or die;
    
    require_once dirname(dirname(dirname(dirname(__FILE__)))) . DIRECTORY_SEPARATOR . 'functions.php';
    
    JHtml::addIncludePath(JPATH_COMPONENT . '/helpers');
    
    Artx::load("Artx_Content");
    
    $component = new ArtxContent($this, $this->params);
    $article = $component->article('article', $this->item, $this->item->params, array('print' => $this->print));
    
    echo $component->beginPageContainer('item-page');
    if (strlen($article->pageHeading))
        echo $component->pageHeading($article->pageHeading);
    $params = $article->getArticleViewParameters();
    if (strlen($article->title)) {
        $params['header-text'] = $this->escape($article->title);
        if (strlen($article->titleLink))
            $params['header-link'] = $article->titleLink;
    }
    // Build article content
    $content = '';
    if ('above full article' === $article->paginationPosition)
        $content .= $article->pagination();
    if (!$article->introVisible)
        $content .= $article->event('afterDisplayTitle');
    $content .= $article->event('beforeDisplayContent');
    if (strlen($article->toc))
        $content .= $article->toc($article->toc);
    if (strlen($article->text)) {
        if (strlen($article->images['fulltext']['image']))
            $content .= $article->image($article->images['fulltext']);
        if ('above text' === $article->paginationPosition)
            $content .= $article->pagination();
        $content .= $article->text($article->text);
        if ('below text' === $article->paginationPosition)
            $content .= $article->pagination();
        if ($article->showLinks)
            $content .= $this->loadTemplate('links');
    }
    if ($article->introVisible)
        $content .= $article->intro($article->intro);
    if (strlen($article->readmore))
        $content .= $article->readmore($article->readmore, $article->readmoreLink);
    if ('below full article' === $article->paginationPosition)
        $content .= $article->pagination();
    $content .= $article->event('afterDisplayContent');
    $params['content'] = $content;
    
    // Render article
    echo $article->article($params);
    echo $component->endPageContainer();
    Как правильно сделать?
     
  7. Genk0

    Genk0 Инквизитор из раздела J!

    Moderator
    Регистр.:
    2 июн 2010
    Сообщения:
    1.627
    Симпатии:
    1.330
    А делаться должно вот так:
    $content .= вывод модуля

    // 1 и 2 - 1 позиционируй с css
    $content .= $article->event('afterDisplayTitle');
    $content .= вывод модуля - этот после названия

    // 3
    до этой строки
    $content .= $article->intro($article->intro);
    или здесь
    $content .= $article->text($article->text);

    Думаю здесь уже понятнее и разберешься
     
    matrixid нравится это.
  8. mr_denisters

    mr_denisters

    Регистр.:
    7 окт 2013
    Сообщения:
    150
    Симпатии:
    44
    Можно использовать стандартный плагин джумла типа {loadmodule} или {loadposition} в большинстве случаев решает задачу.
     
    Akadmon нравится это.
Статус темы:
Закрыта.