Возникла необходимость навигации по статьям в категории через Алфавитный указатель (как в Универсальном каталоге)
Реализовал.
Есть: Алфавитный указатель, поддержка ЧПУ, а так же без ЧПУ, поддержка подкатегорий (ЧПУ вида site.com/tema1/tema1-1/tema1-1-1)
НЕТ: в админке не птички Выводить ли указатель — можно решить указанием другого шаблона вывода в настройках каталога
Я вас очень прошу, серьезно прошу, сделайте бекап сначала
Все есть в архиве: скачать архив
Реализация пошагово:
Добавить в роутер /components/content/router.php в начало перед первыми правилами
добавить в модель /components/content/model.php
добавить во фронтенд /components/content/frontend.php
в начало:
в обработку view (того же файла /components/content/frontend.php)
найти $content_list = $model->getArticles($cat['id'], $page, $perpage, $cat['orderby'], $cat['orderto']);
и заменить на
ниже, в выводе, после $smarty = $inCore->initSmarty('components', $template);
добавить
для вывода — в шаблон /templates/_default_/components/com_content_view.tpl
в желаемом месте (как правило, после заголовка)
ВНИМАНИЕ!
для корректной работы необходимо из url_rewrite.php удалить правила совместмости 1.5.х, по крайней мере для content'a
---------------
не стесняемся кидать копеечку в стаканчик и за спасибо буду благодарен тоже) instantcms.ru/forum/thread6731.html
R124054188127
Z230845734769
U184007373206/anum
Реализовал.
Есть: Алфавитный указатель, поддержка ЧПУ, а так же без ЧПУ, поддержка подкатегорий (ЧПУ вида site.com/tema1/tema1-1/tema1-1-1)
НЕТ: в админке не птички Выводить ли указатель — можно решить указанием другого шаблона вывода в настройках каталога
Я вас очень прошу, серьезно прошу, сделайте бекап сначала
Все есть в архиве: скачать архив
Реализация пошагово:
Добавить в роутер /components/content/router.php в начало перед первыми правилами
'_uri' => '/^content\/([0-9]+)\/alphabet\/(.+)$/i', 'do' => 'view', 1 => 'id', 2 => 'letter' ); '_uri' => '/^content\/([a-z0-9_\/\-]+)\/alphabet\/(.+)$/i', 'do' => 'view', 1 => 'seolink', 2 => 'letter' );
public function getArticlesByLetter($category_id, $letter, $orderby='title', $orderto='asc') { $sql = "SELECT con.*, con.pubdate as fpubdate, u.nickname as author, u.login as user_login FROM cms_content con LEFT JOIN cms_users u ON u.id = con.user_id WHERE con.category_id = '$category_id' AND con.published = 1 AND con.is_arhive = 0 AND con.pubdate <= '$today' AND (con.is_end=0 OR (con.is_end=1 AND con.enddate >= '$today')) AND UPPER(SUBSTRING(LTRIM( title ) , 1, 1))='".$letter."' ORDER BY con.".$orderby." ".$orderto; $result = $this->inDB->query($sql); if (!$this->inDB->num_rows($result)) { return false; } while($article = $this->inDB->fetch_assoc($result)){ $article['fpubdate'] = cmsCore::dateFormat($article['fpubdate']); $articles[] = $article; } $articles = cmsCore::callEvent('GET_ARTICLES', $articles); //Переносим в архив просроченные статьи $sql = "UPDATE cms_content SET is_arhive = 1 WHERE is_end = 1 AND enddate < NOW()"; $this->inDB->query($sql); return $articles; }
в начало:
function getAlphaList($cat_id,$seolink=''){ $inCore = cmsCore::getInstance(); $inDB = cmsDatabase::getInstance(); global $_LANG; $html = ''; $sql = "SELECT UPPER(SUBSTRING(LTRIM( title ) , 1, 1)) AS first_letter, COUNT( id ) AS num FROM cms_content WHERE category_id = '$cat_id' AND published = 1 GROUP BY first_letter"; $result = $inDB->query($sql) ; if ($inDB->num_rows($result)){ $html .= '<div class="content_alpha_list">'; if ($seolink!='') $cat_id=$seolink; while($a = $inDB->fetch_assoc($result)){ $html .= '<a class="content_alpha_link" href="/'.$cat_id.'/alphabet/'.urlencode($a['first_letter']).'" title="'.$_LANG['ARTICLES'].': '.$a['num'].'">'.$a['first_letter'].'</a>'; } } $html .= '</div>'; } return $html; }
найти $content_list = $model->getArticles($cat['id'], $page, $perpage, $cat['orderby'], $cat['orderto']);
и заменить на
$alpha = getAlphaList($cat['id'],$seolink); if ($letter != '') $content_list = $model->getArticlesByLetter($cat['id'], $letter, $cat['orderby'], $cat['orderto']); else $content_list = $model->getArticles($cat['id'], $page, $perpage, $cat['orderby'], $cat['orderto']);
добавить
$smarty->assign('alphabet', $alpha);
в желаемом месте (как правило, после заголовка)
{if $alphabet} {$alphabet} {/if}
для корректной работы необходимо из url_rewrite.php удалить правила совместмости 1.5.х, по крайней мере для content'a
---------------
не стесняемся кидать копеечку в стаканчик и за спасибо буду благодарен тоже) instantcms.ru/forum/thread6731.html
R124054188127
Z230845734769
U184007373206/anum
Реклама #
reload 12 лет назад #
tarzan, а демки нет случайно?)
Protomoto 12 лет назад #
Protomoto 12 лет назад #
lezginka.ru 12 лет назад #
а если прикрутить яндекс разметку, вообще отлично было бы
Александр 12 лет назад #
Александр 12 лет назад #
nedoriko 12 лет назад #
а демку глянуть можно у кого?
lezginka.ru 12 лет назад #
Protomoto 12 лет назад #
Protomoto 12 лет назад #
nedoriko 11 лет назад #
Anonim 11 лет назад #
Anonim 11 лет назад #
Anonim 11 лет назад #
oll 11 лет назад #
Сделать все как выше описано, только сдесь по другому...
Вставить
Anonim 11 лет назад #
ded-pikto 11 лет назад #
Только у меня на Хроме (?) коды режутся, плюс-минус и дата/время вообще не видны. Масштабирование в браузере не помогает.
Как бы это подправить?
Ну а плюсовать пойду в профиль, если он открыт)))
ded-pikto 11 лет назад #
Anonim 11 лет назад #
Anonim 11 лет назад #
Anonim 11 лет назад #
lezginka.ru 11 лет назад #
lezginka.ru 11 лет назад #
в каком месте должно появиться "указатель А=Я", что-то не вижу ?