В продолжение темы с теперь уже старого форума, вниманию товарища sourpuss ) Поменял местами заголовок и псевдоним категорий, в итоге система мне теперь выдаёт title типа "ulpl / Добролюбова проспект". Возник вопрос. В следующем коде: function setPageTitle( $title=null , $pageparams=null ) { if (@$GLOBALS['mosConfig_pagetitles']) { $title = trim( htmlspecialchars( $title ) ); if ( $pageparams!=null ) { $pageownname = trim( htmlspecialchars( $pageparams->get('page_name') ) ); $this->_head['title'] = $pageparams->get('no_site_name') ? ( $pageownname ? $pageownname : ( $title ? $title : $GLOBALS['mosConfig_sitename'] ) ) : ( $pageparams->get('arrange_by') ? ( $pageownname ? $pageownname : $title ) . ' - ' . $GLOBALS['mosConfig_sitename'] : $GLOBALS['mosConfig_sitename'] . ' - '. ( $pageownname ? $pageownname : $title ) ); } else { $pageownname = null; $this->_head['title'] = $title ? $title . ' - '. $GLOBALS['mosConfig_sitename'] : $GLOBALS['mosConfig_sitename']; } } } если я всё верно понимаю, тут упоминаний ни о псевдониме категории и о её заголовке нет. А если так, то логично предположить что title для статей создаётся где то ещё. Какое выражение может выдать в title псевдоним категории? В каких файлах оно может быть? Я готов перерыть их, дабы отыскать причину такого поведения Джумлы.
Ответ: Заставляем работать хак для titile Точно подмечено. Развивай мысль Псевдоним не трогай. Кто хакал джумлу до тебя?
Ответ: Заставляем работать хак для titile До меня джумлу никто не хакал, всё моих рук дело. В этом самом коде заменил "-" на "*" при выключенном кэше - получил title вида "uilpl / Добролюбова проспект * -". А ведь этот символ выводится при $pageownname=null !!! Не в этом ли дело?
Ответ: Заставляем работать хак для titile В файле sefpatch.php принадлежащем OpenSEF отковырял вот чего: function setPageTitle( $title=null ) { if (@$GLOBALS['mosConfig_pagetitles']) { $title = trim( htmlspecialchars( $title ) ); $this->_head['title'] = $title ; } } заменил эту функцию на function setPageTitle( $title=null , $pageparams=null ) { if (@$GLOBALS['mosConfig_pagetitles']) { $title = trim( htmlspecialchars( $title ) ); if ( $pageparams=null ) { $pageownname = trim( htmlspecialchars( $pageparams->get('page_title') ) ); $this->_head['title'] = $pageparams->get('no_site_name') ? ( $pageownname ? $pageownname : ( $title ? $title : $GLOBALS['mosConfig_sitename'] ) ) : ( $pageparams->get('arrange_by') ? ( $pageownname ? $pageownname : $title ) . ' - ' . $GLOBALS['mosConfig_sitename'] : $GLOBALS['mosConfig_sitename'] . ' - '. ( $pageownname ? $pageownname : $title ) ); } else { $pageownname = null; $this->_head['title'] = $title ? $title . ' * '. $GLOBALS['mosConfig_sitename'] : $GLOBALS['mosConfig_sitename']; } } } пока без результата. Но думается, я уже близко к решению проблемы. Вопрос. Передаётся ли $pageownname этому файлу? Да и возникают вопросы, почему же тогда хак не начинает работать при выключенном сефе...
Ответ: Заставляем работать хак для titile Чтож, я кажется нашёл подставу. Мамбот ContentTemplater нагло переписывал title. Вырезал из кода мамбота соответствующий кусок - теперть просто title не меняется вне зависимости от настроек хака Надо попробовать хак переустановить...
Ответ: Заставляем работать хак для titile Для тех, кто сильно менял код Joomla - простая замена файлов может повлечь к потере изменений, поэтому предлагаю один .diff - файл который можно применить следуюшим образом: 1. Скачиваем и ложим его в корень Joomla. 2. gunzip Joomla_1.0.12-RE-FullSEOPatch.diff.gz 3. patch -p1 < Joomla_1.0.12-RE-FullSEOPatch.diff Был успешно применён на "CMS Joomla! RE 1.0.13" со своими доработками.
Ответ: Заставляем работать хак для titile Простите, но не могу не уточнить: пункт 2 - распаковать архив в корень джумлы? пункт 3 - что имеется в виду вообще? это в командную строку вводить, или что ещё?
Ответ: Заставляем работать хак для titile Да Да (для unix-подобных ОС) При этом программа "patch" - может ругаться на "HUNK-и" - но это простительно, если же Joomla - правилась очень сильно, то могут появиться *.rej - файлы, в которых сохранены неприменённые части патча (которые прийдётся применять вручную). Подробнее о программах patch и diff здесь