Информация о модификациях и работе модуля Cooluri



Скачать 65.65 Kb.
Дата20.10.2012
Размер65.65 Kb.
ТипРешение
Информация о модификациях и работе модуля CoolURI



Информация о модификации модуля CoolURI 1

Причины модификации модуля 1

Решение и альтернативы ему 1

О том, как самостоятельно назначать URL страницы 2

Первый способ: 2

Второй способ: 3

Пояснения и код модифицированной функции 3



Информация о модификации модуля CoolURI



Пятого апреля 2011, модуль CoolURI был модифицирован для того, чтобы он правильно автоматически создавал URL страницы (конкретно для shgpi.edu.ru). Для этого была модифицирована одна функция, которая отвечает за построение pagepath страницы – массива значений с заголовками текущей страницы, страницы родителя… - и так до корня сайта.

Функция эта находится в файле typo3conf/ext/cooluri/class.tx_cooluri.php и называется getPageTitleBE($conf,$value)

Код функции с пояснениями и указанием модификации будет в конце данного документа.

Причины модификации модуля



С момента переноса shgpi.edu.ru на TYPO3, с этим модулем возникли сложности – его автоматическое обновление URL адресов страниц не работало корректно для shgpi.edu.ru – несколько страниц (напр. «Новости» у факультетов) получали одинаковый адрес или же кусок URL, обозначающего раздел (напр. /uch_sov/ для Ученого совета), был в URL пропущен. На момент летней практики, эти проблемы были обойдены (блокированы) изменением срока, через который должны обновляться страницы (задается в CoolURIConf.xml)

Вообще, как сейчас уже известно, данные сложности возникли из-за шаблонов, которые есть у разных разделов. А точнее из-за галочки в поле «rootlevel» - составление пути прекращалось по достижении страницы, на которой находился шаблон с данным свойством.

Решение и альтернативы ему



Для того чтобы достичь приемлемого уровня автоматизации создания URL есть 3 пути:

  1. Модифицировать текущией шаблоны. У данного подхода есть один существенный минус – текущие шаблоны – это самый быстрый способ создания структуры сайта shgpi.edu.ru, в том виде в котором он находится с 2006 года. Чтобы структуру сохранить и, заодно, URL правильные строить надо много экспериментировать с TypoScript – а это требует времени и умений – этот путь был признан нерациональным.

  2. Использовать альтернативу модулю CoolURI – модуль RealURL – этот вариант очень трудоемок и требует много времени на изучение модуля RealURL и его возможностей.

  3. Задать «правильную» конфигурацию в CoolURIConf.xml – синтаксис достаточно сложен и, даже прочитав документацию, лично я, не нашел решения данной проблемы.


  4. Модифицировать функцию, которая строит pagepath – модуль написан на php, функцию разобрать не сложно – это был самый быстрый и рациональный путь. У него есть только один недостаток – необходимо не забывать также модифицировать данную функцию при обновлении модуля.


О том, как самостоятельно назначать URL страницы



URL страницы можно назначить 2мя способами:

  1. Задавая метки страниц

  2. Непосредственно через интерфейс модуля CoolURI



Первый способ:



На портале используется модуль CoolURI преобразовывающий имена страниц в из вида index.php&id=xxx в читаемый (или любой другой по желанию пользователя) адрес (URL). Если не задавать создаваемой Вам странице определенных полей, то её адрес (URL), будет создан автоматически при первом обращении к странице через сайт (т.е. вне админки) (попасть на эту страницу можно набрав в адресной строке браузера http://shgpi.edu.ru/index.php?id=[id_страницы]).
Чтобы самостоятельно задать URL, необходимо у задать данной странице определенные поля: «Speaking URL path segment:» «Exclude this page from middle of a page path», «Always exclude this page from a page path (dangerous!)».
Значения этих полей следует задавать маленькими латинскими буквами!

Вообще, можно задавать и кириллицей, но! – она будет преобразована в транслит, и только создаст лишнюю нагрузку на модуль. Ну а буквы различного регистра в URL многими браузерами будут преобразованы к нижнему регистру и это может вызвать проблемы с отображением страницы (будет не найдена и т.д.).
Поясню предназначение этих полей:
Speaking URL path segment самое важное поле – собственно здесь указывается метка данной страницы в общем URL (URL формируется также из меток всех предыдущих страниц или папок).
Exclude this page from middle of a page path это поле указывает – исключать ли метку данной страницы или папки из общего URL (галочка - исключать)
Always exclude this page from a page path (dangerous!) поле указывает что данная страница или папка всегда будет исключаться из общего URL. Опасно это тем, что данная опция исключает метку из общего URL даже если этот URL пуст (т.е. можно создать несколько ссылок на http://shgpi.edu.ru/ и, шаблон будет применен, тот, что на этой странице, а не на главной странице сайта)

Второй способ:



URL страницы можно назначить через интерфейс модуля CoolURI непосредственно. Для этого.

  1. Первое, что нам надо сделать – наведите указатель мыши на иконку созданной вами страницы. Вы должны увидеть что то типа - эта контекстная подсказка о идентификаторе страницы – нам нужно его на пару минут запомнить или записать, для чего, будет написано ниже. Также можно перейти на созданную Вами страницу и посмотреть её id в правом верхнем углу в её Path . Также, найдите и запомните таким же образом id страницы родителя.

  2. Далее, перейдите в раздел Admin Tools -> CoolURI. Нажмите на кнопку Cached Links, затем на ссылку all. Появится список соответствия id страниц и их читаемых адресов. Нажимаем Ctrl+F и ищем id=(номер родительской страницы) – это нужно затем, чтобы узнать её читаемый адрес, и соответственно правильно назвать созданную Вами страницу. Копируем этот адрес. Скролим до верха страницы и нажимаем там кнопку New link. На появившейся странице, в верхнее поле ввода вставляете скопированный адрес и дописываете название страницы (латиницей, в нижнем регистре) в нужном Вам виде. В нижнее поле ввода записываете id=(номер созданной Вами страницы). На sticky поставьте галочку – это заставит модуль CoolURI не обновлять автоматически заданный Вами URL. После этого жмем на кнопку Save new URI.


Пояснения и код модифицированной функции



Для начала поясню алгоритм функции.

В неё передается текущая конфигурация из файла CoolURIConf.xml – точнее из раздела pagepath и id текущей страницы (функция срабатывает, когда страница в первый раз запрашивается через сайт). Из конфигурации определяется, значение какой колонки из таблицы pages будет использоваться для создания URL метки страницы, потом в цикле извлекаются данные текущей страницы и проверяется (- эта проверка и была модифицирована), есть ли у этой страницы шаблоны с установленным «rootlevel» - если есть – то цикл прекращается и возвращается URL-путь. Если же таких шаблонов нет, то проверяется, есть ли версия страницы на этом языке и не исключена ли страница из построения URL-пути, после чего URL-метка страницы преобразуется и заносится в массив pagepath, а цикл повторяется для родительской страницы текущей. И так до того момента, пока не найден корень сайта, либо шаблон с свойством «rootlevel».

function getPageTitleBE($conf,$value) {

if ($GLOBALS['TSFE']->showHiddenPage || self::isBEUserLoggedIn()) {

$enable = ' AND deleted=0';

} else {

$enable = ' AND deleted=0 AND hidden=0';

}

$db = &$GLOBALS['TYPO3_DB'];

// выбирается из какого параметра конфиг файла будет строиться URL метка страницы

if (empty($conf->alias)) $sel = (string)$conf->title;

else $sel = (string)$conf->alias;

//первоначальный id страницы от которой URL-путь начинает строиться

$id = (int)$value[(string)$conf->saveto];

$confArray = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['cooluri']);

$langVar = $confArray['LANGID'];

// langId будет пуст (т.е. 0) ввиду того, что на портале не передается код языка

$langId = empty($value[$langVar])?false:$value[$langVar];

$langId = (int)$langId;

$pagepath = Array();


if (empty($conf->alias)) $sel = (string)$conf->title;

else $sel = (string)$conf->alias;

$sel = t3lib_div::trimExplode(',',$sel);

$max = 15;

while ($max>0 && $id) {

// проверка на то, был ли передан id и подстраховка

if (!is_numeric($id)){

$id = $GLOBALS['TSFE']->sys_page->getPageIdFromAlias($id);

}
// вытаскивается все поля относящиеся к текущей странице пути.

$q = $db->exec_SELECTquery('*','pages','uid='.$id.$enable);

$page = $db->sql_fetch_assoc($q);

// вытаскивается количество принадлежащих странице шаблонов с уст полем "rootlevel"

// собственно заремаривание этой выборки и замена условия выхода из цикла – это и есть

// модификация

/*

$temp = $db->exec_SELECTquery('COUNT(*) as num','sys_template','pid='.$id.' AND root=1'.$enable);

$count = $db->sql_fetch_assoc($temp);

if ($count['num']>0 || $page['is_siteroot']==1) { return $pagepath; }

*/

if ($page['is_siteroot']==1) { return $pagepath; }

if ($langId) {

$q = $db->exec_SELECTquery('*','pages_language_overlay','pid='.$id.' AND sys_language_uid='.$langId.$enable);

$lo = $db->sql_fetch_assoc($q);

if ($lo) {

unset($lo['uid']);

unset($lo['pid']);

$page = array_merge($page,$lo);

}

}

if (!$page) break;

// Проверка на исключение страницы из пути

if (($page['tx_cooluri_exclude']==1 && !empty($pagepath)) || $page['tx_cooluri_excludealways']) {

++$max;

$id = $page['pid'];

continue;

}

// вытаскивается значения поля, которое будет служить меткой страницы

foreach ($sel as $s) {

$trimmed = trim($page[$s]);

if (!empty($trimmed)) {

$title = $trimmed;

break;

}

}

// обработка полученой метки

if (!empty($conf->sanitize) && $conf->sanitize==1) {

$pagepath[] = Link_Func::sanitize_title_with_dashes($title);

} elseif (!empty($conf->t3conv) && $conf->t3conv==1) {

$pagepath[] = Link_Func::specCharsToASCII($title);

} elseif (!isset($conf->urlize) || $conf->urlize!=0) {

$pagepath[] = Link_Func::URLize($title);

} else {

$pagepath[] = urlencode($title);

}

//родительская страница текущей

$id = $page['pid'];

--$max;

if (!empty($conf->maxsegments) && count($pagepath)>=(int)$conf->maxsegments) $max = 0;

}

return $pagepath;

}



Похожие:

Информация о модификациях и работе модуля Cooluri iconБазовое содержание модуля научно-тематический обзор содержания модуля
На основе обобщения материала модуля 1 выстраивается историческая последовательность этапов эволюции материальной Вселенной от ее...
Информация о модификациях и работе модуля Cooluri iconИнформация о работе с обращениями граждан, поступившими в Администрацию Кемеровской области в I квартале 2012 года
Аналитическая информация о работе с обращениями граждан, поступившими в Администрацию Кемеровской области
Информация о модификациях и работе модуля Cooluri iconУчебной дисциплины (модуля) Наименование дисциплины (модуля) Старославянский язык Рекомендуется для направления подготовки
Б. Общепрофессиональный цикл. Базовая часть. Профиль «Отечественная филология»
Информация о модификациях и работе модуля Cooluri iconУчебной дисциплины (модуля) Наименование дисциплины (модуля) Общая дидактика Рекомендуется для направления подготовки
«Преподавание филологических дисциплин (с указанием языка / языков и литературы/литератур)»
Информация о модификациях и работе модуля Cooluri iconУчебной дисциплины (модуля) Наименование дисциплины (модуля) Славянский язык (чешский) Рекомендуется для направления подготовки
Б. Профессиональный цикл. Вариативная часть. Профиль «Отечественная филология»
Информация о модификациях и работе модуля Cooluri iconИнструкция по установке модуля Для установки модуля поиска требуется специалист со знанием html и Java Script
Переменной actualPage требуется задать абсолютный путь к странице актуализации
Информация о модификациях и работе модуля Cooluri iconУчебной дисциплины (модуля) Наименование дисциплины (модуля) Стилистика основного изучаемого языка Рекомендуется для направления подготовки
Конкретные задачи курса, способствующие реализации поставленной цели, предполагают
Информация о модификациях и работе модуля Cooluri iconУчебной дисциплины (модуля) Наименование дисциплины (модуля) Риторика Рекомендуется для направления подготовки
«Отечественная филология», основ теории текста и дискурса, стилистики и культуры речи, философии, культурологи
Информация о модификациях и работе модуля Cooluri iconНазвание модуля
Реализованный с помощью этого модуля серверный процесс будет обладать стандартным набором интерфейсных функций, включая отладку и...
Информация о модификациях и работе модуля Cooluri iconРабочая программа дисциплины (модуля) Этнология (Наименование дисциплины (модуля) Направление подготовки
Целью изучения курса «этнология» является формирование систематизированных знаний у студентов по данной отрасли науки
Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org