форум общения русскоязычных пользователей CMS Текстпаттерн
Вы не зашли.
Если я нахожусь в категории и в этой категории пока только одна статья, возможно ли написать так, чтобы в таком случае Txp выдавал не список из одной статьи, а сразу переходил к содержанию данной статьи из списка. Т.к. получается человек делает одну лишнюю операцию - щелкает два раза (один раз на категорию, потом на на название статьи из списка, НО в списке только одна статья!).
Помогите пожалуйста составить тэги которые бы справились с этой задачей, если это возможно. Спасибо заранее.
Отредактированно evgenius777 (02-09-2007 16:53:16)
Неактивен
хм.. интересная задачка...
стандартными средствами вроде сделать так нельзя.
нужно искать плагин, который считает количество статей в категории + условный тэг к этому плагину.
Может пойти по более простому пути?
Сразу добавить несколько статей во все категории?
Неактивен
А что если сделать форму вывода списка статей в данной категории, например такую:
форма: forma
<txp:title />
<body />
А выводить так:
<txp:article_custom allowoverride="0" category="mycategory" form="forma" limit="1" offset="0" pgonly="0" section="mysektion" sort="Posted desc" status="4" />
Тогда тхр выведет "список статей" в данной категории в виде заглавия и содержания единственной статьи.
Но это подходит только, если в данной категории всегда будет только одна статья.
Неактивен
спасибо
Неактивен
Vожно так (в форме вывода статьи):
<txp:if_first_article>
<txp:if_last_article>
<!--тут выводим статью целиком-->
<txp:else />
<!-- тут -- выводим только заголовок и выдержку-->
</txp:if_last_article>
<txp:else />
<!-- тут -- выводим только заголовок и выдержку-->
</txp:if_first_article>
Можно причесать как-то покрасивее...
Отредактированно glebotr (07-09-2007 14:07:03)
Неактивен
glebotr написал:
Vожно так (в форме вывода статьи):
<txp:if_first_article>
<txp:if_last_article>
<!--тут выводим статью целиком-->
<txp:else />
<!-- тут -- выводим только заголовок и выдержку-->
</txp:if_last_article>
<txp:else />
<!-- тут -- выводим только заголовок и выдержку-->
</txp:if_first_article>
Можно причесать как-то покрасивее...
Поддерживаю. Так универсальнее.
Неактивен
glebotr написал:
Vожно так (в форме вывода статьи):.........
Глеб! отличное решение! Красиво!
А я тут панику навожу...
Evgeny написал:
стандартными средствами вроде сделать так нельзя.
К счастью- оказался неправ.
Неактивен
Вообще, если я правильно понял, то пример Глеба не сработает, тк условия if_first_article & ...last... срабатывают только на странице с индивид.статьей, а мы пока что находимся на странице со списком из одной статьи, а на такой странице эти услвия всегда false.
Поправьте если я не прав. Спасибо
Неактивен
Не прав 8) При выводе списка они срабатывают. У меня они многократно применяются именно в списке.
Отредактированно glebotr (16-09-2007 19:12:14)
Неактивен
Отличный пример - достоен занесения его во все справочники
Неактивен
У меня была схожая задача, только мне нужно было, чтобы при выводе списка категорий выводились статьи принадлежащие этим категориям, а если в категории одна статья, то название категории становилось бы ссылкой на эту статью. Вообщем, пока можно посмотреть тут
Сделал с помощью пхп в форме, так как плагин писать было лень. Да, используется только первая категория.
<txp:php> /////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Форма создаёт список категорий и статей текущей секции. // Если в категории более одной статьи, то сначала выводится название категории, а за ней // ссылки на статьи этой категории. // Если статья в категории одна, то название статьи не выводится, а название категории // оформляется в виде ссылки на статью. /////////////////////////////////////////////////////////////////////////////////////////////////////////////// $activeClass = "active"; $active = 0; // Получить текущую секцию global $thispage, $thisarticle, $s; // Получить текущую секцию if(isset($thisarticle)){ $curSection = $thisarticle['section']; $active = $thisarticle['thisid']; } else { $curSection = $s; } // Получить список категорий $catList = safe_rows("name, title", "txp_category", "type='article' order by name"); // Получить все статьи в текущей категории, отсортированные по категории1 $articles = safe_rows("*", "textpattern", "Status=4 AND Section='$curSection' order by Category1"); //print_r($catList); // Посчитать количество статей в категории и заполнить новый массив $newCat = array(array()); for($i = 0; $i < count($catList); $i++) { $counter = 0; for($e = 0;$e < count($articles); $e++) { if($catList[$i]['name'] == $articles[$e]['Category1']) $counter++; } $newCat[$i]['name'] = $catList[$i]['name']; $newCat[$i]['title'] = $catList[$i]['title']; $newCat[$i]['count'] = $counter; } // Прошвырнуться по новому массиву if(count($articles)>0) { echo "<ul>\n"; for($i = 0; $i < count($newCat); $i++) { if($newCat[$i]['count'] != 0) { if($newCat[$i]['count'] == 1){ for($e = 0;$e < count($articles); $e++) { if($newCat[$i]['name'] == $articles[$e]['Category1']){ if($articles[$e]['ID'] == $active) echo "\t<li><a class='".$activeClass."' href=\"".permlinkurl($articles[$e])."\">".$newCat[$i]['title']."</a></li>\n"; else echo "\t<li><a href=\"".permlinkurl($articles[$e])."\">".$newCat[$i]['title']."</a></li>\n"; } } } if($newCat[$i]['count'] > 1){ echo "<li>".$newCat[$i]['title']."\n"; echo "<ul>"; for($e = 0;$e < count($articles); $e++) { if($newCat[$i]['name'] == $articles[$e]['Category1']){ if($articles[$e]['ID'] == $active) echo "\t<li><a class='".$activeClass."' href=\"".permlinkurl($articles[$e])."\">".$articles[$e]['Title']."</a></li>\n"; else echo "\t<li><a href=\"".permlinkurl($articles[$e])."\">".$articles[$e]['Title']."</a></li>\n"; } } echo "</ul></li>\n"; } } } echo "</ul>\n"; } </txp:php>
Программер из меня никакой, так что прошу сильно не пинать.
Отредактированно AngryCAT (16-09-2007 18:19:58)
Неактивен
AngryCAT написал:
Программер из меня никакой, так что прошу сильно не пинать.
Не скромничай. :-))
Неактивен
Если кто-нибудь объяснит как это прикрутить к TxP-Компания, будет здорово. Я уже запутался в туче article на странице.
Неактивен