Тема: Сортировка тегов по алфавиту
Список на странице тегов выводится по дате добавления тега. А есть способ сделать, чтобы они по алфавиту выводились?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Список на странице тегов выводится по дате добавления тега. А есть способ сделать, чтобы они по алфавиту выводились?
Там сортировка не по дате. Они выводятся в порядке уменьшения количества элементов.
Я не буду включать в ядро возможность сортировки, но это легко можно сделать расширением. Могу помочь с этим.
Я имел ввиду страницу самого тега site.ru/tags/some-tag, где список статей с датами, которым этот тег присвоен.
Сейчас я пока переношу все текст со своего сайта на движок. Как только закончу, возможно, обращусь к вам за помощью с расширением. В данный момент это не приоритет.
А, понял. Всё равно это решается расширением на 10 строк.
Понятно.
Вот само расширение. Код ниже нужно поместить в файл _extensions/my_test/manifest.xml.
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE extension SYSTEM "ext-1.0.dtd">
<extension for="S2" engine="1.0">
<id>my_test</id>
<title>Test extension</title>
<version>1.0a</version>
<description>Change sort order in tags</description>
<author>Roman Parpalak</author>
<minversion>1.0a5</minversion>
<maxtestedon>1.0a5</maxtestedon>
<hooks>
<hook id="fn_make_tags_pages_pre_get_arts_qr"><![CDATA[
$sort_var = 'titles';
$sort_desc = false;
]]></hook>
</hooks>
</extension>
Да, чтобы оно заработало, опять нужно взять самую последнюю версию:
http://s2cms.ru/downloads/development/
Ух ты, супер. Сейчас все попробую. Позже отпишусь.
Попробовал. Работает. Но не все.
Оказалось, что мне требуется сортировка всех списков, где есть классы article и subsection. Плюс к этому, чтобы не выводились даты и выдержки, только заголовки. Не указывать время и не заполнять выдержку - не вариант.
Пытался сделать расширение по аналогии с вашим, но ничего не получилось. В админке выдает ошибку.
18.08.2011 20:04:21. Текст был изменен (tataRen).
Оказалось, что мне требуется сортировка всех списков, где есть классы article и subsection.
Всех - это не только в тегах, но и в разделах?
А почему вы не хотите даты и выдержки делать пустыми? Из-за RSS? Их нужно тоже убрать в тегах и разделах?
Если бы вы написали текст ошибки, у меня была бы возможность сказать, что там не в порядке.
Да, везде.
Да, из-за РСС. Даты и выдержки мне вообще не нужны, кроме как в РСС. В принципе, я могу просто не заполнять время и выдержки, а рсс вручную составлять. Это не сложно. Кстати, а в рсс сколько статей попадает?
Уже удалил то, что сам сделал. Было что-то типа: "Обнаружено новое расширение. Не может быть установлено, потому что что-то там не найдено."
p.s. Установить удалось. А вот нужный параметр для хука, который надо изменить, так и не смог найти. Точнее, нашел место в коде, которое создает список, но что именно там надо изменить, не знаю.
18.08.2011 22:15:36. Текст был изменен (tataRen).
Вот как сейчас выглядет у меня:
и
Даты и выдержки разделов можно убрать сейчас (я добавил второй хук в расширение):
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE extension SYSTEM "ext-1.0.dtd">
<extension for="S2" engine="1.0">
<id>my_test</id>
<title>Test extension</title>
<version>1.0a</version>
<description>Change sort order in tags</description>
<author>Roman Parpalak</author>
<minversion>1.0a5</minversion>
<maxtestedon>1.0a5</maxtestedon>
<hooks>
<hook id="fn_make_tags_pages_pre_get_arts_qr"><![CDATA[
$sort_var = 'titles';
$sort_desc = false;
]]></hook>
<hook id="fn_s2_parse_page_url_add_subarticle"><![CDATA[
$subarticles[count($subarticles) - 1]['time'] = $subarticles[count($subarticles) - 1]['excerpt'] = '';
]]></hook>
</hooks>
</extension>
С остальным я вам помогу потом, скорее всего на выходных. Нужно привести в порядок код в articles.php, а то я добавлял функциональность кусками, и похожие вещи в разделах и тегах реализованы разными способами.
В крайнем случае можно лишние элементы скрыть через CSS (display: none;).
Спасибо. Про (display: none;) мог бы и сам догадаться :( — как-то не подумал. Проверил — оба варианта работают нормально.
Я доработал articles.php, его нужно взять из архива с последней версией:
http://s2cms.ru/downloads/development/
После этого можно обновить расширение, которое удаляет выдержки и даты и сортирует элементы по заголовку, а не по дате:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE extension SYSTEM "ext-1.0.dtd">
<extension for="S2" engine="1.0">
<id>my_test</id>
<title>Test extension</title>
<version>1.0a</version>
<description>Change sort order in tags</description>
<author>Roman Parpalak</author>
<minversion>1.0a5</minversion>
<maxtestedon>1.0a5</maxtestedon>
<hooks>
<hook id="fn_s2_make_tags_pages_pre_get_arts_qr, fn_s2_parse_page_url_pre_get_children_qr"><![CDATA[
$sort_order = SORT_ASC;
$test_articles_count = 0;
]]></hook>
<hook id="fn_s2_make_tags_pages_add_subarticle, fn_s2_parse_page_url_add_subarticle"><![CDATA[
$sort_array[$test_articles_count] = $row['title'];
$subarticles[$test_articles_count]['time'] = $subarticles[$test_articles_count]['excerpt'] = '';
$test_articles_count++;
]]></hook>
</hooks>
</extension>
Также начал делать расширение для seo. Сейчас оно умеет добавлять произвольное содержимое в тег title. Можно скачать здесь (ссылка Zip Archive внизу страницы): http://s2cms.ru/trac/browser/extensions/trunk/s2_seo
Сортировка не везде получилась. Вот скриншот страницы с тегом: http://dl.dropbox.com/u/19042430/screen3.JPG
В остальном все ок. Спасибо.
А сео расширение будет еще дорабатываться? ил уже можно в таком виде ставить?
И сколько статей в рсс добавляются? Есть ограничения?
Я позже посмотрю, что не в порядке с сортировкой.
Сейчас с s2_seo я ничего делать не буду. В будущем может добавлю туда sitemap. Так что можете сейчас устанавливать.
Сейчас в RSS попадают 10 последних страниц. Нужно больше?
Не могу воспроизвести у себя, чтобы подразделы на странице тега шли в обратном порядке.
Вы уверены, что изменения из manifest.xml были загружены? Удалите и установите это расширение заново (удалять можно, так как это расширение никаких ценных данных не собирало).
Удалил/установил. Никаких изменений. Они располагаются в порядке добавления. Удалил все разделы из тега и добавил в другом порядке - на странице они стали в новом порядке.
А, понял. Вам опять нужно обновить articles.php. И теперь расширение стало таким:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE extension SYSTEM "ext-1.0.dtd">
<extension for="S2" engine="1.0">
<id>my_test</id>
<title>Test extension</title>
<version>1.0a</version>
<description>Change sort order in tags</description>
<author>Roman Parpalak</author>
<minversion>1.0a5</minversion>
<maxtestedon>1.0a5</maxtestedon>
<hooks>
<hook id="fn_s2_make_tags_pages_pre_get_arts_qr, fn_s2_parse_page_url_pre_get_children_qr"><![CDATA[
$sort_order = SORT_ASC;
$test_articles_count = 0;
]]></hook>
<hook id="fn_s2_make_tags_pages_add_subsection"><![CDATA[
$test_subsection_sort[] = $row['title'];
]]></hook>
<hook id="fn_s2_make_tags_pages_pre_merge"><![CDATA[
array_multisort($test_subsection_sort, $sort_order, $subsections);
]]></hook>
<hook id="fn_s2_make_tags_pages_add_subarticle, fn_s2_parse_page_url_add_subarticle"><![CDATA[
$sort_array[$test_articles_count] = $row['title'];
$subarticles[$test_articles_count]['time'] = $subarticles[$test_articles_count]['excerpt'] = '';
$test_articles_count++;
]]></hook>
</hooks>
</extension>
Надеюсь, на этом всё заработает как надо.
Надеюсь, на этом всё заработает как надо.
Да, теперь, вроде, все работает как надо. Спасибо.
25.08.2011 18:56:07. Текст был изменен (tataRen).
Оказалось, не все в порядке. Вот такие ошибки выдает вверху страницы:
Warning: array_multisort() [function.array-multisort]: Argument #1 is expected to be an array or a sort flag in Z:\home\s2.ru\www\_include\articles.php(444) : eval()'d code on line 10
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\s2.ru\www\_include\articles.php(444) : eval()'d code:10) in Z:\home\s2.ru\www\_include\functions.php on line 547
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\s2.ru\www\_include\articles.php(444) : eval()'d code:10) in Z:\home\s2.ru\www\_include\functions.php on line 548
и такое внизу:
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\s2.ru\www\_include\articles.php(444) : eval()'d code:10) in Z:\home\s2.ru\www\index.php on line 188
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\s2.ru\www\_include\articles.php(444) : eval()'d code:10) in Z:\home\s2.ru\www\index.php on line 189
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\s2.ru\www\_include\articles.php(444) : eval()'d code:10) in Z:\home\s2.ru\www\index.php on line 190
Исправил:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE extension SYSTEM "ext-1.0.dtd">
<extension for="S2" engine="1.0">
<id>my_test</id>
<title>Test extension</title>
<version>1.0a</version>
<description>Change sort order in tags</description>
<author>Roman Parpalak</author>
<minversion>1.0a5</minversion>
<maxtestedon>1.0a6</maxtestedon>
<hooks>
<hook id="fn_s2_make_tags_pages_pre_get_arts_qr, fn_s2_parse_page_url_pre_get_children_qr"><![CDATA[
$sort_order = SORT_ASC;
$test_articles_count = 0;
]]></hook>
<hook id="fn_s2_make_tags_pages_add_subsection"><![CDATA[
$test_subsection_sort[] = $row['title'];
]]></hook>
<hook id="fn_s2_make_tags_pages_pre_merge"><![CDATA[
if (!empty($test_subsection_sort))
array_multisort($test_subsection_sort, $sort_order, $subsections);
]]></hook>
<hook id="fn_s2_make_tags_pages_add_subarticle, fn_s2_parse_page_url_add_subarticle"><![CDATA[
$sort_array[$test_articles_count] = $row['title'];
$subarticles[$test_articles_count]['time'] = $subarticles[$test_articles_count]['excerpt'] = '';
$test_articles_count++;
]]></hook>
</hooks>
</extension>
Теперь уже точно все ок. Замучил я вас. Спасибо вам, что там оперативно откликаетесь на чужие проблемы.
Роман, а возможно ли задать свой стиль для ссылок тегов на странице вывода всех тегов?
Сейчас, похоже, нет. А нужно?
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форум работает на движке PunBB, поддерживаемом Informer Technologies, Inc.