Seznam článků vybrané kategorie s abecedním řazením
Pokud používáte články řazené do kategorií víte, že se automaticky řadí v „teaser“ náhledech. Někdy je ale potřeba zobrazit soupis článků v podobě seznamu a navíc ještě řadit podle abecedy. Jde to?
Mám rád snippety :-)Snippety umožňují zkušenějším uživatelům v podstatě jakoukoliv manipulaci s databázovými prostředky. Díky nim můžete zobrazovat prakticky cokoliv, když víte jak na to. Výpis článků konkrétní kategorie není příliš složitý a díky přímému „sahání“ do databáze si můžeme i snadné třídění podle abecedy. Vytvořte si novou stránku, zvolte PHP formát obsahu a vložte tento obsah:
$taxo_id = "5"; /* pokud chcete více kategorií dohromady, oddělte je čárkou */
$list_length = 500; /* délka seznamu */
$charlength= "150"; /* maximální délka textu */
$content_type = "story"; /* vybíráme z databáze obsahy typu story */
$joins = '';
$wheres = "AND n.type = '$content_type' ";
$taxo_ar = explode(",", $taxo_id);
foreach ($taxo_ar as $index => $tid) {
$joins .= ' INNER JOIN {term_node} tn'. $index .' ON n.nid = tn'. $index .'.nid';
$wheres .= ' AND tn'. $index .'.tid =' . $tid;
}
$sql = 'SELECT DISTINCT(n.nid), n.sticky, n.title, nr.teaser, n.created, u.name FROM {node} n JOIN {node_revisions} nr ON (n.nid = nr.nid and n.vid = nr.vid) INNER JOIN {users} u ON n.uid = u.uid '. $joins .' WHERE n.status = 1 '. $wheres .' ORDER BY n.title ASC, n.created DESC LIMIT ' . $list_length;
$result = db_query($sql);
while ($anode = db_fetch_object($result)) {
$output .= "<p>" . l($anode->title, "node/$anode->nid") . "</p>";
}
echo('<b>Abecední seznam</b> vybrané kategorie. <br><br><p/>');
print $output;
Dalo by se to upravit tak,
Dalo by se to upravit tak, aby byl system razeni ne podle abecedy, ale podle mesicu/dnu s tim, ze by nad vsemi prispevky z ledna byl nadpis leden, nad unorovyma unor apod. Urcite by to naslo vyuziti ted v zaveru roku jako sumar co se za dany rok na strankach udalo.
Drupal 7
A co takhle DRUPAL 7 – má jinou strukturu tabulek
Poslat nový komentář