Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 13 Ответов
  • 1020 Просмотров
*

cvasilyev

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Всем привет.

J3.6.4 + K2.7.1
Перенес контент с самописного движка на K2. Критично сохранить урлы. И тут обнаружилось, что K2 запрещает создание одинаковые псевдонимы материалов, находящихся в разных категориях.

Например:

Категория #1 "Женские имена" (псевдоним: woman-names)
Материал "Мария" (псевдоним: maria)

Категория #2 "Люди" (псевдоним: people)
Материал: Мария (псевдоним: maria)

На второй Марии на псевдоним "maria" ругается матом, мол дубль - не положено.

Робя, это так и есть? Дерево жеж! Как так?
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Все правильно, вы можете со временем перенести материалы с одним алиасом в одну категорию.
*

cvasilyev

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Все правильно, вы можете со временем перенести материалы с одним алиасом в одну категорию.

Дорогой Аркадий. В рамках одной категории точно нельзя создавать материалы с одинаковыми алиасами. Я то написал о том, что K2 не позволяет создать материалы с одинаковыми алиасами даже в разных категориях, в отличие от чистой Joomla.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Вы неправильно меня поняли. Допустим ситуация, сделал две статьи с одинаковыми алиасами в разных категориях, потом перенес их в одну категорию - случился коллапс. Алиас рассматривается в к2 как уникальный идентификатор статьи вне зависимости от ее категории т.к. категория - вещь изменяемая.
*

cvasilyev

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Вы неправильно меня поняли. Допустим ситуация, сделал две статьи с одинаковыми алиасами в разных категориях, потом перенес их в одну категорию - случился коллапс. Алиас рассматривается в к2 как уникальный идентификатор статьи вне зависимости от ее категории т.к. категория - вещь изменяемая.

Логично. Тогда получается, что полностью воссоздать структуру урлов исходного сайта не получится с K2. В качестве костыля можно только использовать меню  для пересекающихся алиасов материалов.

Спасибо за ответ.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
K2 не позволяет создать материалы с одинаковыми алиасами даже в разных категориях, в отличие от чистой Joomla.
Откуда такая уверенность? Joomla не позволяет дублировать алиасы
« Последнее редактирование: 12.12.2016, 09:58:50 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

cvasilyev

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Откуда такая уверенность? Joomla не позволяет дублировать алиасы

Ну это как бы даже факт, вот проверил еще раз только что:
https://yadi.sk/i/ZQTBUGJ833AMVX
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Ну это как бы даже факт, вот проверил еще раз только что:
https://yadi.sk/i/ZQTBUGJ833AMVX
Да, точно, был не прав: в разных категориях можно это делать.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
В к2 маршрут до статьи строится без категории
Код: php
$link = 'index.php?option=com_k2&view=item&id='.$id;
По этому не разрешают одинаковые алиасы для статеей.
*

cvasilyev

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
В к2 маршрут до статьи строится без категории
Код: php
$link = 'index.php?option=com_k2&view=item&id='.$id;
По этому не разрешают одинаковые алиасы для статеей.

Да. И на этом, полагаю, вопрос исчерпывающе рассмотрен :). Всем спасибо.
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Там есть еще глюк с алиасами. Ситуация такая есть материал категории news с алиасом one и есть материал категории gallery с алисом one итого, получаеться если зайти по юрл
gallery/one то откроется news/one

P.S на днях кат раз хотел плагин плагин написать на проверку и уникальных алиас. Кому надо бетку могу в личку кинуть
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

cvasilyev

  • Осваиваюсь на форуме
  • 17
  • 0 / 0
Я так понимаю речь идет о чистой Joomla. Для K2 уже уточнили, что двух одинаковых псевдонимов в принципе быть не может.

Что плагин делает?
Прописывание категорий в меню в принципе же решает проблему неопределенности.
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Я так понимаю речь идет о чистой Joomla. Для K2 уже уточнили, что двух одинаковых псевдонимов в принципе быть не может.
Может материалы могут иметь одинаковый alias даже в одной категории. Без проблем создается (при редактировнии не работает)и есть в настройках SEF "Enable advanced SEF for K2 URLs" и вырубить "Use the item ID in the URL", ну чтобы url был красивым то два материала будет с одинаковым url.
Прописывание категорий в меню в принципе же решает проблему неопределенности.
Нет не спасает. У k2 есть удивительная штука фактически у к2 такой роут что можно попадать в материал через пункт меню даже если его нет в привязанной категории
Пример
Есть категория category1 и пукнт меню cat1 В ней материал art1 доступен по url /cat1/art1
Есть категория category2 и пукнт меню cat2 В ней материал art2 доступен по url /cat2/art2
Но так же можно спокойно открыть материал art2 по url /cat1/art2  это лечиться просто канониками и редиректами. Но вот если у вас сделано как я написал выше Enable advanced SEF for K2 URLs то два материал будут иметь один и тот же линк => работать будет только 1
Ну а если и категория одна тут вообще без вариантов, почему так ну наверное потому что по умалчаю url материала id-alias. Да и если переносите материал то с линком на него проблем нет.
Что плагин делает?
Да все просто: повешу на onBeforeK2Save запрос-проверку да и все и прибавлю -count к алаису.

UPD Припоздал с плагином. Теперь уже так Если настройки выстралнеы SEF "Enable advanced SEF for K2 URLs" = 1 "Use the item ID in the URL" = 0, то одинаковые создать не выйдет, но вот есть если по другому сделать то сохраняйте сколько угодно, и если их включить позднее то дубли алиасов ни куда не денуться.
Сам код на проверки алиса если нужно.
\administrator\components\com_k2\tables\k2item.php ~174
Код: php
		// Check if alias already exists. If so warn the user
$params = JComponentHelper::getParams('com_k2');
if ($params->get('k2Sef') && !$params->get('k2SefInsertItemId'))
{
$db = JFactory::getDBO();
$db->setQuery("SELECT id FROM #__k2_items WHERE alias = ".$db->quote($this->alias)." AND id != ".(int)$this->id);
$result = count($db->loadObjectList());
if ($result > 0)
{
$this->alias .= '-'.((int)$result + 1);
$application = JFactory::getApplication();
$application->enqueueMessage(JText::_('K2_WARNING_DUPLICATE_TITLE_ALIAS_DETECTED'), 'notice');
}
}
ТС можете добавить туда AND catid != ".(int)$this->catid и тогда в разный категориях могут быть одинаковые алиасы, материалов, но тогда глюк как я писал в примере выше, ни куда не денется.
Код: php
$db->setQuery("SELECT id FROM #__k2_items WHERE alias = ".$db->quote($this->alias)." AND id != ".(int)$this->id." AND catid != ".(int)$this->catid);

Кстати в 2.6.9 я помню такой проверки не было, тогда то и превый раз подумал о плагине. (ну да я его под другие цели заточу =), Перенесу в after и сделаю чтобы в зависимоти от категорий алиса был либо id материала либо алиас маетриала для фронт добаления пригодиться )
« Последнее редактирование: 12.12.2016, 13:45:56 от Septdir »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться