LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
27.05.2012, 13:58:56 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Новая позиция в шаблоне - после jcomments  (Прочитано 1009 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Taatshi
Профи
********

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

Сообщений: 3210


« : 31.10.2011, 12:09:34 »

Как можно вставить новую позицию в шаблоне - знаю.

Нужно: вставить новую позицию после контента, но так, чтобы она отражалась ПЕРЕД jcomments.  Я так понимаю, если вставить ее просто после подключения контента, она высветитеся ПОСЛЕ комментариев, а хотелось бы ПЕРЕД...

Спасибо.
« Последнее редактирование: 01.11.2011, 02:29:11 от Taatshi » Записан
beliyadm
Профи
********

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

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


Севастополь==Россия


« Ответ #1 : 31.10.2011, 12:13:38 »

вставь позицию в шаблон jcomment перед комментариями
Записан
Efanych
Группа развития
*****

Репутация: +344/-3
Online Online

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



« Ответ #2 : 31.10.2011, 12:14:13 »

Проще вставить в шаблон вывода материала. Вставляется такой конструкцией
Цитировать
<?php
$modules = JModuleHelper::getModules('Указать позицию модулей');
if ($modules && is_array($modules)) {
   foreach ($modules as $module) {
      //заголовок
      echo $module->title;
      //контент
      echo JModuleHelper::renderModule($module);
   };
}
?>
За вывод комментариев и прочих там какая-то строчка  типа aftercontent
P.S. Ну да, или в комментарии
Записан
Taatshi
Профи
********

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

Сообщений: 3210


« Ответ #3 : 31.10.2011, 12:26:06 »

В комментарии пробовала - страницы убила нафиг. Даже шаблон всего сайта исчез(( С наскоку не получилось. Потому и тема.

Вставляла в файл tpl_comment.php  Может, не сюда нужно? Попробую еще раз и вот сюда попробую.. jcomments.php

Ефаныч, попробую - отпишусь.
« Последнее редактирование: 31.10.2011, 12:31:36 от Taatshi » Записан
Taatshi
Профи
********

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

Сообщений: 3210


« Ответ #4 : 01.11.2011, 00:43:31 »

вставила в tpl_index.php  комментов - позиция появилась. Там, где и нужно. Но. Модули в ней публиковаться не хотят(( Если прямо в див вписать текст - его видно, а модуль не отображается...

<?php
         // IMPORTANT: Do not rename this div's id! Some JavaScript functions references to it!
?>

<div id="jc">

<div id="new">
<jdoc:include type="modules" name="new"/>
</div>


<div id="comments"><?php echo $comments; ?></div>
<?php

Записан
NightGuard
Группа развития
*****

Репутация: +286/-43
Online Online

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


За мной уже выехали


« Ответ #5 : 01.11.2011, 00:53:33 »

Поставь в шаблон com_content.
Записан
Efanych
Группа развития
*****

Репутация: +344/-3
Online Online

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



« Ответ #6 : 01.11.2011, 01:01:15 »

Цитировать
<jdoc:include type="modules" name="new"/>
Taatshi, так и не должно работать.
Вписывай так
Цитировать
<?php
$modules = JModuleHelper::getModules('Указать позицию модулей');
if ($modules && is_array($modules)) {
   foreach ($modules as $module) {
      //заголовок
      echo $module->title;
      //контент
      echo JModuleHelper::renderModule($module);
   };
}
?>
Записан
Taatshi
Профи
********

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

Сообщений: 3210


« Ответ #7 : 01.11.2011, 01:08:36 »

Уф.  Сделала...

Опять спс Ефанычу)) Но не совсем отсюда - поиском нашла...

будет работать, если выводить модуль в позиции в комментах следующим образом:

Код:
<div id="new">
<?php $document   = JFactory::getDocument();
$renderer   = $document->loadRenderer('module');
$modules   = JModuleHelper::getModules('new');
$params      = array('style' => 'xhtml');
foreach ($modules as $module)
{
   echo $renderer->render($module, $params);
} ?>
</div>

Вот, а пока сообщение писала - ты уже снова подсказал... Так, как здесь - тоже работает. Принцип один, вижу, а вот чем варианты отличаются... А... поняла)))

Вот когда все уже просекаешь - сам себе таким дураком пять минут назад кажешься - даже стыдно((

« Последнее редактирование: 01.11.2011, 01:36:07 от Taatshi » Записан
Taatshi
Профи
********

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

Сообщений: 3210


« Ответ #8 : 01.11.2011, 02:13:28 »

Остался косяк. Если оформить как нужно - там паддинги и пр. Даже при отсутствии модуля в позиции их видно. Получается полоса. Стандартный метод отключения по условию наличия модуля выдает ошибку...

Пишу так:

Код:
<?php if($this->countModules('newcom')) : ?>
<div id="newcom">
<?php
$modules = JModuleHelper::getModules('newcom');
if ($modules && is_array($modules)) {
   foreach ($modules as $module) {
      //заголовок
      echo $module->title;
      //контент
      echo JModuleHelper::renderModule($module);
   };
}
?>
</div>
<?php endif; ?>

Выдает на первую строчку

Fatal error: Call to undefined method jtt_tpl_index::countModules() in Y:\home\sayt\www\components\com_jcomments\tpl\default\tpl_index.php on line 55

Как скрыть пустую позицию?
Записан
Pazys
Живу я здесь
******

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

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


<a>А где я ошибся-то?</b>


« Ответ #9 : 01.11.2011, 03:29:47 »

<?php if($this->countModules('main_bar') and JRequest::getCmd('layout')!= 'form') { ?>

<?php } else { ?>

<?php } ?>
у меня вот такая надпись есть, но я почти ничего не понимаю в ней.
Записан
Taatshi
Профи
********

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

Сообщений: 3210


« Ответ #10 : 01.11.2011, 03:40:32 »

эт не то((
Записан
Efanych
Группа развития
*****

Репутация: +344/-3
Online Online

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



« Ответ #11 : 01.11.2011, 09:45:23 »

Другой вариант могу предложить. В templates/system/html/modules.php есть такой код
Цитировать
/*
 * XHTML (divs and font headder tags)
 */
function modChrome_xhtml($module, &$params, &$attribs)
{
   if (!empty ($module->content)) : ?>
      <div class="moduletable<?php echo $params->get('moduleclass_sfx'); ?>">
      <?php if ($module->showtitle != 0) : ?>
         <h3><?php echo $module->title; ?></h3>
      <?php endif; ?>
         <?php echo $module->content; ?>
      </div>
   <?php endif;
}

/*
Он отвечает за шаблон вывода модуля - XHTML. Сделай так: скопируй этот код, добавь в него свой див и по другому назови.
Цитировать
/*
 * XHTML (divs and font headder tags)
 */
function modChrome_new($module, &$params, &$attribs)
{
   if (!empty ($module->content)) : ?><div id="new">
      <div class="moduletable<?php echo $params->get('moduleclass_sfx'); ?>">
      <?php if ($module->showtitle != 0) : ?>
         <h3><?php echo $module->title; ?></h3>
      <?php endif; ?>
         <?php echo $module->content; ?>
      </div></div>
   <?php endif;
}

/*
Теперь, если поставиш стиль вывода new, он будет выводиться уже с дивом.
Записан
Efanych
Группа развития
*****

Репутация: +344/-3
Online Online

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



« Ответ #12 : 01.11.2011, 09:55:56 »

Ну и тут же возможно ответ на вопрос.
Цитировать
Как скрыть пустую позицию?
Но не знаю, сработает ли
Цитировать
if  (!empty ($module->content))
Записан
Taatshi
Профи
********

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

Сообщений: 3210


« Ответ #13 : 03.11.2011, 10:29:17 »

Все работает, кодировка в позиции слетела. Все файлы, что правила, перевела как полагается в utf8 без bom. Не помогло. Какой еще нужно перекодировать - есть соображения? Все комментарии - это много(( Вроде все ключевые перевела...
Записан
Taatshi
Профи
********

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

Сообщений: 3210


« Ответ #14 : 03.11.2011, 12:06:23 »

Сделала по совету NightGuard, убрала позицию из комментов, вставила в com-content  вот в этот файл components\com_content\views\article\tmpl\default.php

может, кому понадобится код...

Код:

вот отсюда.....


<?php echo $this->article->text; ?>
</td>
</tr>
<tr>
<td>


<div id="newcom">
<?php $document   = JFactory::getDocument();
$renderer   = $document->loadRenderer('module');
$modules   = JModuleHelper::getModules('newcom');
$params      = array('style' => 'xhtml');
foreach ($modules as $module)
{
   echo $renderer->render($module, $params);
} ?>
</div>



</td>
</tr>
<?php if ( intval($this->article->modified)!=0 && $this->params->get('show_modify_date')) : ?>
<tr>
<td class="modifydate">
<?php echo JText::sprintf('LAST_UPDATED2', JHTML::_('date', $this->article->modified, JText::_('DATE_FORMAT_LC2'))); ?>
</td>
</tr>

<?php endif; ?>
</table>

Все равно нифига с кодировкой... Начинаю подозревать, что дело не в позиции, а в самом содержимом... Если в браузере выставить кодировку 1251 - модуль отображается нормально, весь сайт - кракозябрами. Если в браузере utf-8 - весь сайт нормально, модуль кракозябрами...

Блииин...

« Последнее редактирование: 10.03.2012, 19:21:15 от Taatshi » Записан
Efanych
Группа развития
*****

Репутация: +344/-3
Online Online

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



« Ответ #15 : 03.11.2011, 12:16:36 »

Цитировать
$str = mb_convert_encoding($str, "UTF-8", "windows-1251");
Вот такую строчку нагуглил. Перекодирует с windows-1251 в UTF-8.
Только куда вставить не знаю. Azn
Записан
SmokerMan
Профи
********

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

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



« Ответ #16 : 03.11.2011, 12:18:06 »

Либо кодировка в БД не верная, либо это косяк самого модуля.
Вот такую строчку нагуглил. Перекодирует с windows-1251 в UTF-8.
Только куда вставить не знаю. Azn
все гораздо проще Smiley
Код:
iconv("windows-1251", "UTF-8", $module->content)
« Последнее редактирование: 03.11.2011, 12:21:22 от SmokerMan » Записан
Taatshi
Профи
********

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

Сообщений: 3210


« Ответ #17 : 03.11.2011, 22:10:43 »

Так... Колян, я про функцию посмотрела, а вот синтаксис и расположение в коде ты уж подскажи пожалуйста)) Хотя, думаю, не в этом дело.

Что интересно: такой косяк только в фоксе, в опере нормально.


дописка позже..

Проблему решили - исходники, как я и думала. Опера кодировку каждого блока определяет автоматом, что не делается фоксом. Опера умнее, во как))

Но я все равно хотела бы посмотреть как функцию iconv правильно вставить в этот блок. Жду подсказок, метод тыка в синтаксисе не прокатывает... увы...
« Последнее редактирование: 03.11.2011, 22:22:20 от Taatshi » Записан
Taatshi
Профи
********

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

Сообщений: 3210


« Ответ #18 : 10.01.2012, 14:34:05 »

Код:
<div id="newcom">
<?php $document   = JFactory::getDocument();
$renderer   = $document->loadRenderer('module');
$modules   = JModuleHelper::getModules('newcom');
$params      = array('style' => 'xhtml');
foreach ($modules as $module)
{
   echo $renderer->render($module, $params);
} ?>

в Joomla 1.7 не работает(( Или должно? Что я упустила?
Записан
Efanych
Группа развития
*****

Репутация: +344/-3
Online Online

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



« Ответ #19 : 10.01.2012, 16:05:38 »

в Joomla 1.7 не работает(( Или должно? Что я упустила?
Хз. Проверил - работает.
Записан
Taatshi
Профи
********

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

Сообщений: 3210


« Ответ #20 : 10.01.2012, 18:41:29 »

Хз. Проверил - работает.

ок, значит, где-то накосячила. Буду искать.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | 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