Как убрать ссылку ARTIO JoomSEF из компонентов Joomla?

Для того чтобы избавиться от ссылок на artio.net необходимо закомментировать строку
задания/обновления значения переменной $buf:

Для Joomla 1.0.x
1. Файл /administrator/components/com_sef/sef.class.php
2. Комментируем

//$buf = '<'.'d'.'i'.'v'.'>'.'<'.'a'.' '.'h'.'r'.'e'.'f'.'='.'"ссылка"'.'"'.'><'.'/'.'a'.'>'.'<'.'/'.'d'.'i'.'v'.'>';

Для Joomla 1.5.x
1. Файл /components/com_sef/joomsef.php
2. Комментируем

//$buf. = '<'.'d'.'i'.'v'.'>'.'<'.'a'.' '.'h'.'r'.'e'.'f'.'='.'"ссылка"'.'"'.'><'.'/'.'a'.'>'.'<'.'/'.'d'.'i'.'v'.'>';

Artio JoomSEF 3.5.0:
1. Файл тот же.
2. Надо обнулить переменную $cacheBuf2 = '';

Условия публикации модулей в Joomla 1.5.x

Мне встречались следующие условия вывода:

<?php if($this->countModules('позиция_для_публикации')) : ?>
	<div id="search2">
		<jdoc:include type="modules" name="позиция_для_публикации" />
	</div>
<?php endif; ?>

Стандартное условие вывода модулей. Дословный смысл:
Если есть опубликованный модули в позиции «позиция_для_публикации», то выводить контейнер div с модулем внутри.

<?php if(!$tmpTools->isFrontPage()) : ?>
	<div id="pathway">
		<jdoc:include type="module" name="позиция_для_публикации" />
	</div>
<?php endif ; ?>

Это условие на главную страницу. То есть если мы загрузили/не загрузили главную страницу, то выводить/не выводить
модуль в позиции «позиция_для_публикации».

Примеры:

<?php if(!$tmpTools->isFrontPage()) : ?>
	<div id="pathway">
		<jdoc:include type="module" name="breadcrumbs_advanced" />
	</div>
<?php endif ; ?>

Смысл: не выводить «pathway» (он же «путь по сайту») на главной странице, что вполне логично.

<?php if(!$tmpTools->isFrontPage()) : ?>
	<jdoc:include type="component" />
<?php endif ; ?>

Не выводить компоненты на главной. Например, для создания вместо «главной» промо-страницы, без статей, блогов и прочего.

Как скрыть колонку и показать модуль только на страницах определенного типа

Небольшая инструкция:
В начальной части index.php шаблона (можно сразу после тега и обязательно после строчки defined( '_JEXEC' ) or die( 'Restricted access' );) объявить следующие параметры:

<?php
$option = JRequest::getVar('option', null);
$view = JRequest::getVar('view', null);
$task = JRequest::getVar('task', null);
$layout = JRequest::getVar('layout', null);
?>

Эти переменные могут быть использованы для распознавания компонентов их «задач», вьюх и шаблонов вывода.
Определив колонку которую необходимо скрыть и соответствующие для это условия можно добавить в шаблон сайта следующий блок кода:

<?php if( ($this->countModules('right') ) && ($option!='com_fireboard' && $option!=
'com_artforms' && !($view=='article' && $task=='edit') && !($option=='com_content' 
&& $view=='article' && $layout=='form'))) : ?>
<div id="right"><jdoc:include type="modules" name="right" style="xhtml" /></div></div>
<?php endif; ?>

В результате правая колонка не показывается если активный компонент либо FireBoard либо ArtForms или статья находится в режиме редактирования.

Этот пример может быть применен во многих других ситуациях если разобраться какие части URL определяют параметры option, task, view and/or layout. Для примера приведем URL с параметрами использованными в нашем условии чуть выше:

/index.php?Itemid=62&option=com_fireboard
/index.php?task=edit&Itemid=71&option=com_content&id=56%3Amyarticletitle&view=article

Версия на английском: Hide column to avoid width issues

Еще пример: как показать модуль только на странице полного просмотра статьи:

<?php if ($view != 'article') { ?>
<jdoc:include type="modules" name="footer" />
<?php } else {} ?>

Заголовок модуля в виде ссылки в Joomla 1.5.x

Зачастую появляется желание сделать заголовок модуля ссылкой.

Реализовать это в Joomla 1.5.x довольно просто:

  • Найти файл /templates/имя_шаблона/html/modules.php. Насколько я понял он отвечает за стили отображения модулей.
  • Добавить в него функцию следующего вида:
    <?php
    function modChrome_xhtmlwithlink($module, &$params, &$attribs)
    { 
    $headerLevel = "3";
    	if (!empty ($module->content)) : ?>
    		<div class="moduletable<?php echo $params->get('moduleclass_sfx'); ?>">
    			<?php if ($module->showtitle) : ?>
    				<?php if($module->id == 43) : ?>
    					<h<?php echo $headerLevel; ?>>
    						<a href="любая_ссылка">
    							<?php echo $module->title;?>
    						</a>
    					</h<?php echo $headerLevel; ?>>
    				<?php elseif($module->id == 56) : ?>
    					<h<?php echo $headerLevel; ?>>
    						<a href="любая_ссылка">
    							<?php echo $module->title;?>
    						</a>
    					</h<?php echo $headerLevel; ?>>
    				<?php elseif($module->id == 46) : ?>
    					<h<?php echo $headerLevel; ?>>
    						<a href="/articles/faqs/">
    							<?php echo $module->title;?>
    						</a>
    					</h<?php echo $headerLevel; ?>></br>
    				<?php else : ?>
    					<h<?php echo $headerLevel;?>>
    						<?php echo $module->title; ?>
    					</h<?php echo $headerLevel; ?>>
    				<?php endif; ?>
    			<?php endif; ?>
    			<?php echo $module->content; ?>
    		</div>
    	<?php endif;
    }
    ?>
    , где $module->id == 43 — id модуля, для которого вы хотите сделать заголовок в виде ссылки.
  • Как видите модулей в условии может быть несколько, а все не упомянутые выводятся в обычном режиме.

  • Далее в блоках вывода модулей необходимо вписать нужный стиль отображения, например так:
    <jdoc:include type="modules" name="left" style="xhtmlwithlink" />

2-ой метод:
Метод годится только для модулей содержащих произвольный html/javascript-код. Суть: скрыть заголовок модуля в настройках, а в коде содержимого модуля над содержимым сделать нужный заголовок.

Проблема с русским поиском в Kunena

Сборка Kunena 1.5.3 RE от Адептуса работает хорошо, но возможны необъяснимые на скорую руку проблемы с поиском на русском языке. Например у меня при нажатии на кнопку «Найти» кириллические символы преобразовывались в знаки вопроса.

Путь решения:
1. Включить системную отладку в Joomla.
2. Увидеть сообщение при попытке поиска:

500 - JDatabaseMySQL::query: 1267 - Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' SQL=SELECT `sefurl` FROM `jos_sefurls` WHERE `origurl` = 'index.php?option=com_kunena&func=search&q=тема'

3. Привести кодировку таблицы jos_sefurls в порядок:

ALTER TABLE jos_sefurls CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci

4. PROFIT.

 css.php