ID у Джумлы в адресной строке появляется в случае если созданная страница не привязана к меню.
Случаев когда страница не привязывается к меню достаточно много.
Для разных версии придумано много решений. Мне они не помогли.
Вот решения что я нашел в интернете они касаются в основном если все страницы привязаны к меню
У меня финальная версия 2.5.28. Если делать по 1 варианту то в настройках материала ничего не добавляется (т.е. кнопка удаления ID)
во 2 варианте не генерируется ссылка.
Попробуйте после выполнения 2 варианта вставить решение вопроса в 1 варианте который указан.
В моей версии Джумла не катит нету этой строчки, но есть вот это - похожее, выкладываю код что нужно изменить в генегации ссылок не знаю
Вот что я нашел в интернете
Отключение ID материала в Joomla 2.5 и Joomla 3 - Вариант 1
Для всего этого нам нужно будет лишь сделать некоторые модификации файлов движка, которые помогут нам добиться нужного результата. В самой Joomla (начиная с версии 1.6) уже предусмотрена функция отключения ID материала из адреса ссылок, но для открытия этой возможности нам нужно добавить в файле: корень_сайта/administrator/components/com_content/config.xml строки:
В принципе, эти строки можно добавить в любое место в данном файле, даже в самое начало (только не забудьте сохранить файл в кодировке UTF-8 без BOM, иначе вместо русских символов Вы увидите иероглифы). После добавления этих строк кода, Вы получили возможность включать и отключать ID из ссылок прямо из административной панели своего сайта. Для этого Вам нужно перейти в менеджер материалов и нажать "Настройки". И в настройках теперь у Вас будет находиться строка: "Удалить ID материала в ссылке?":
[IMG]
Нажимаете "Да". После этого очистите кэш сайта. Теперь ссылки в Joomla 2.5 будут отображаться без ID.
Если на некоторых ссылках выскакивает 404 ошибка, то следует в файле _ваш-сайт/components/com_content/router.php найти строку:
И заменить её на:
Внимание: Обратите внимание, что данный параметр может отличаться в разных версиях Joomla. Например, в Joomla 3 у меня было так:
Поэтому старайтесь быть очень внимательными, чтобы не пришлось потом долго искать ошибку.
Важно: все категории должны быть привязаны к пунктам меню - если этого не будет, то могут возникнуть ошибки при генерации ссылок. Так же обратите внимание, что не будут работать ссылки, если название материала состоит из одного слова. Для решения этого косяка нужно опять открыть файл _ваш-сайт/components/com_content/router.php и найти строку:
В Джумле 2.5.28 подругому:mad: - этой строчки нету Выше указан код который надо изменить как не знаю.
И заменить её на:
Только не забудьте, что при обновлении Joomla этот файл будет заменен! Поэтому настоятельно рекомендую сохранить его в отдельном месте, чтобы потом заново не вносить изменения.
Отключение ID материала в Joomla 2.5 и Joomla 3 - Вариант 2
Второй метод так же работает на Joomla 2.5 и Joomla 3. Но его минус в том, что при каждом обновлении движка нужно будет заново вносить эти изменения или просто перезаписывать файл роутера поверх нового. Итак, в этом способе мы будем работать только с файлом _ваш-сайт/components/com_content/router.php.
Для начала найдите строку (примерно 27 строка):
И замените её на:
Затем найдите вот эту строку (в Joomla 2.5 - 228 строка, в Joomla 3 - 250):
И замените её на:
Теперь опускайтесь чуть ниже (в Joomla 2.5 - строка 228, в Joomla 3 - строка 272) и находите вот этот кусок кода:
И закомментируйте его (при комментировании, код перестает обрабатываться), чтобы получилось вот так:
Ну или полностью удалите, тут уже решать Вам. Но лучше закомментировать его, чтобы с случае чего можно было вернуть все на место.
Теперь ссылки на Вашем сайте в Joomla 2.5 и Joomla 3 будут отображаться без ID материалов. Но в Joomla 3 могут появиться ошибки 404 при использовании данного способа - чтобы избежать этого, читайте примечание ниже.
Важное примечание для Joomla 3: если при переходе по ссылкам без ID у Вас возникает 404 ошибка, то найдите в файле _ваш-сайт/components/com_content/router.php строку 376 (в разных версиях Joomla эта строка может отличаться):
И замените её на:
Теперь все ссылки должны заработать и отображаться правильно и без ошибок. Я проверил ссылки, состоящие из одного слова, цифр и нескольких слов - все открывается и работает отлично без глюков и ошибок!
Если данная статья оказалась для Вас полезна, то подписывайтесь на получение материалов
Случаев когда страница не привязывается к меню достаточно много.
Для разных версии придумано много решений. Мне они не помогли.
Вот решения что я нашел в интернете они касаются в основном если все страницы привязаны к меню
У меня финальная версия 2.5.28. Если делать по 1 варианту то в настройках материала ничего не добавляется (т.е. кнопка удаления ID)
во 2 варианте не генерируется ссылка.
Попробуйте после выполнения 2 варианта вставить решение вопроса в 1 варианте который указан.
В моей версии Джумла не катит нету этой строчки, но есть вот это - похожее, выкладываю код что нужно изменить в генегации ссылок не знаю
Код |
---|
if ($found == 0) { if ($advanced) { $db = JFactory::getDBO(); $query = 'SELECT id FROM #__content WHERE catid = '.$vars['catid'].' AND alias = '.$db->Quote($segment); $db->setQuery($query); $cid = $db->loadResult(); } else { $cid = $segment; } |
Вот что я нашел в интернете
Отключение ID материала в Joomla 2.5 и Joomla 3 - Вариант 1
Для всего этого нам нужно будет лишь сделать некоторые модификации файлов движка, которые помогут нам добиться нужного результата. В самой Joomla (начиная с версии 1.6) уже предусмотрена функция отключения ID материала из адреса ссылок, но для открытия этой возможности нам нужно добавить в файле: корень_сайта/administrator/components/com_content/config.xml строки:
Код |
---|
<field name="sef_advanced_link" type="radio" default="1" label="SEF: Удалить ID материала в ссылке?" description="Удалить ID материала в ссылке?"> <option value="0">JNO</option> <option value="1">JYES</option> </field> |
В принципе, эти строки можно добавить в любое место в данном файле, даже в самое начало (только не забудьте сохранить файл в кодировке UTF-8 без BOM, иначе вместо русских символов Вы увидите иероглифы). После добавления этих строк кода, Вы получили возможность включать и отключать ID из ссылок прямо из административной панели своего сайта. Для этого Вам нужно перейти в менеджер материалов и нажать "Настройки". И в настройках теперь у Вас будет находиться строка: "Удалить ID материала в ссылке?":
[IMG]
Нажимаете "Да". После этого очистите кэш сайта. Теперь ссылки в Joomla 2.5 будут отображаться без ID.
Если на некоторых ссылках выскакивает 404 ошибка, то следует в файле _ваш-сайт/components/com_content/router.php найти строку:
Код |
---|
// then we assume it is a category. If they don't we assume it is an article if ($count === 1) { |
И заменить её на:
Код |
---|
// then we assume it is a category. If they don't we assume it is an article if ($count === 1 && !$advanced) { |
Внимание: Обратите внимание, что данный параметр может отличаться в разных версиях Joomla. Например, в Joomla 3 у меня было так:
Код |
---|
if ($count === 1 { |
Код |
---|
[/CODE][CODE]А в Joomla 2.5 может быть вот так: |
Код |
---|
if ($count == 1 { |
Поэтому старайтесь быть очень внимательными, чтобы не пришлось потом долго искать ошибку.
Важно: все категории должны быть привязаны к пунктам меню - если этого не будет, то могут возникнуть ошибки при генерации ссылок. Так же обратите внимание, что не будут работать ссылки, если название материала состоит из одного слова. Для решения этого косяка нужно опять открыть файл _ваш-сайт/components/com_content/router.php и найти строку:
В Джумле 2.5.28 подругому:mad: - этой строчки нету Выше указан код который надо изменить как не знаю.
Код |
---|
->where($db->quoteName('alias'). ' = ' . $db->quote($db->quote($segment))); |
Код |
---|
->where($db->quoteName('alias'). ' = ' . $db->quote($segment) ); |
Только не забудьте, что при обновлении Joomla этот файл будет заменен! Поэтому настоятельно рекомендую сохранить его в отдельном месте, чтобы потом заново не вносить изменения.
Отключение ID материала в Joomla 2.5 и Joomla 3 - Вариант 2
Второй метод так же работает на Joomla 2.5 и Joomla 3. Но его минус в том, что при каждом обновлении движка нужно будет заново вносить эти изменения или просто перезаписывать файл роутера поверх нового. Итак, в этом способе мы будем работать только с файлом _ваш-сайт/components/com_content/router.php.
Для начала найдите строку (примерно 27 строка):
Код |
---|
$advanced = $params->get('sef_advanced_link', 0); |
И замените её на:
Код |
---|
$advanced = $params->get('sef_advanced_link', 1); |
Затем найдите вот эту строку (в Joomla 2.5 - 228 строка, в Joomla 3 - 250):
Код |
---|
$advanced = $params->get('sef_advanced_link', 0); |
Код |
---|
$advanced = $params->get('sef_advanced_link', 1); |
Теперь опускайтесь чуть ниже (в Joomla 2.5 - строка 228, в Joomla 3 - строка 272) и находите вот этот кусок кода:
Код |
---|
if (strpos($segments[0], ':') === false) { $vars['view'] = 'article'; $vars['id'] = (int) $segments[0]; return $vars; } |
И закомментируйте его (при комментировании, код перестает обрабатываться), чтобы получилось вот так:
Код |
---|
/*if (strpos($segments[0], ':') === false) { $vars['view'] = 'article'; $vars['id'] = (int) $segments[0]; return $vars; }*/ |
Ну или полностью удалите, тут уже решать Вам. Но лучше закомментировать его, чтобы с случае чего можно было вернуть все на место.
Теперь ссылки на Вашем сайте в Joomla 2.5 и Joomla 3 будут отображаться без ID материалов. Но в Joomla 3 могут появиться ошибки 404 при использовании данного способа - чтобы избежать этого, читайте примечание ниже.
Важное примечание для Joomla 3: если при переходе по ссылкам без ID у Вас возникает 404 ошибка, то найдите в файле _ваш-сайт/components/com_content/router.php строку 376 (в разных версиях Joomla эта строка может отличаться):
Код |
---|
->where($db->quoteName('alias') . ' = ' . $db->quote($db->quote($segment))); |
И замените её на:
Код |
---|
->where($db->quoteName('alias') . ' = ' . $db->quote($segment)); |
Теперь все ссылки должны заработать и отображаться правильно и без ошибок. Я проверил ссылки, состоящие из одного слова, цифр и нескольких слов - все открывается и работает отлично без глюков и ошибок!
Если данная статья оказалась для Вас полезна, то подписывайтесь на получение материалов
Изменено:
Александр Черкасов - 24 Февраля 2015 12:36