|
Taatshi
|
 |
« : 31.10.2011, 12:09:34 » |
|
Как можно вставить новую позицию в шаблоне - знаю.
Нужно: вставить новую позицию после контента, но так, чтобы она отражалась ПЕРЕД jcomments. Я так понимаю, если вставить ее просто после подключения контента, она высветитеся ПОСЛЕ комментариев, а хотелось бы ПЕРЕД...
Спасибо.
|
|
|
|
« Последнее редактирование: 01.11.2011, 02:29:11 от Taatshi »
|
Записан
|
|
|
|
|
beliyadm
|
 |
« Ответ #1 : 31.10.2011, 12:13:38 » |
|
вставь позицию в шаблон jcomment перед комментариями
|
|
|
|
|
Записан
|
|
|
|
|
Efanych
|
 |
« Ответ #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
|
 |
« Ответ #3 : 31.10.2011, 12:26:06 » |
|
В комментарии пробовала - страницы убила нафиг. Даже шаблон всего сайта исчез(( С наскоку не получилось. Потому и тема.
Вставляла в файл tpl_comment.php Может, не сюда нужно? Попробую еще раз и вот сюда попробую.. jcomments.php
Ефаныч, попробую - отпишусь.
|
|
|
|
« Последнее редактирование: 31.10.2011, 12:31:36 от Taatshi »
|
Записан
|
|
|
|
|
Taatshi
|
 |
« Ответ #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
Пол: 
Сообщений: 4616
За мной уже выехали
|
 |
« Ответ #5 : 01.11.2011, 00:53:33 » |
|
Поставь в шаблон com_content.
|
|
|
|
|
Записан
|
|
|
|
|
Efanych
|
 |
« Ответ #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
|
 |
« Ответ #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
|
 |
« Ответ #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
|
 |
« Ответ #9 : 01.11.2011, 03:29:47 » |
|
<?php if($this->countModules('main_bar') and JRequest::getCmd('layout')!= 'form') { ?>
<?php } else { ?>
<?php } ?> у меня вот такая надпись есть, но я почти ничего не понимаю в ней.
|
|
|
|
|
Записан
|
|
|
|
|
Taatshi
|
 |
« Ответ #10 : 01.11.2011, 03:40:32 » |
|
эт не то((
|
|
|
|
|
Записан
|
|
|
|
|
Efanych
|
 |
« Ответ #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
|
 |
« Ответ #12 : 01.11.2011, 09:55:56 » |
|
Ну и тут же возможно ответ на вопрос. Как скрыть пустую позицию? Но не знаю, сработает ли if (!empty ($module->content))
|
|
|
|
|
Записан
|
|
|
|
|
Taatshi
|
 |
« Ответ #13 : 03.11.2011, 10:29:17 » |
|
Все работает, кодировка в позиции слетела. Все файлы, что правила, перевела как полагается в utf8 без bom. Не помогло. Какой еще нужно перекодировать - есть соображения? Все комментарии - это много(( Вроде все ключевые перевела...
|
|
|
|
|
Записан
|
|
|
|
|
Taatshi
|
 |
« Ответ #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
|
 |
« Ответ #15 : 03.11.2011, 12:16:36 » |
|
$str = mb_convert_encoding($str, "UTF-8", "windows-1251"); Вот такую строчку нагуглил. Перекодирует с windows-1251 в UTF-8. Только куда вставить не знаю. 
|
|
|
|
|
Записан
|
|
|
|
|
SmokerMan
|
 |
« Ответ #16 : 03.11.2011, 12:18:06 » |
|
Либо кодировка в БД не верная, либо это косяк самого модуля. Вот такую строчку нагуглил. Перекодирует с windows-1251 в UTF-8. Только куда вставить не знаю.  все гораздо проще  iconv("windows-1251", "UTF-8", $module->content)
|
|
|
|
« Последнее редактирование: 03.11.2011, 12:21:22 от SmokerMan »
|
Записан
|
|
|
|
|
Taatshi
|
 |
« Ответ #17 : 03.11.2011, 22:10:43 » |
|
Так... Колян, я про функцию посмотрела, а вот синтаксис и расположение в коде ты уж подскажи пожалуйста)) Хотя, думаю, не в этом дело.
Что интересно: такой косяк только в фоксе, в опере нормально.
дописка позже..
Проблему решили - исходники, как я и думала. Опера кодировку каждого блока определяет автоматом, что не делается фоксом. Опера умнее, во как))
Но я все равно хотела бы посмотреть как функцию iconv правильно вставить в этот блок. Жду подсказок, метод тыка в синтаксисе не прокатывает... увы...
|
|
|
|
« Последнее редактирование: 03.11.2011, 22:22:20 от Taatshi »
|
Записан
|
|
|
|
|
Taatshi
|
 |
« Ответ #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
|
 |
« Ответ #19 : 10.01.2012, 16:05:38 » |
|
в Joomla 1.7 не работает(( Или должно? Что я упустила?
Хз. Проверил - работает.
|
|
|
|
|
Записан
|
|
|
|
|
Taatshi
|
 |
« Ответ #20 : 10.01.2012, 18:41:29 » |
|
Хз. Проверил - работает.
ок, значит, где-то накосячила. Буду искать.
|
|
|
|
|
Записан
|
|
|
|
|