Хочу сделать каталог статей. Как?

Обсуждение CMS Made Simple в России.

Moderators: iturbay, wdwp

Post Reply
metarad
Forum Members
Forum Members
Posts: 37
Joined: Tue Aug 26, 2008 9:54 am

Хочу сделать каталог статей. Как?

Post by metarad »

Собственно первым делом мне пришла в голову мысль установить модуль Articles, что я и сделал.
Модуль появился в админке и когда я перехожу по ссылке "Add articles" - выскакивает ошибка:

Fatal error: Call to a member function on a non-object in /home/..../www/modules/Articles/action.manage.php on line 415

А в самих модулях сказано что "Максимальная поддерживаемая версия CMSMS = 1.1.2" для этого модуля, а у меня стоит версия 1.4.1

Может есть какой-то другой модуль для добавления статей?
Или может как-то можно вылечить эту ошибку?

Спасибо.
User avatar
Il_Burbero
Forum Members
Forum Members
Posts: 128
Joined: Tue Apr 15, 2008 10:36 am

Re: Хочу сделать каталог статей. Как?

Post by Il_Burbero »

Статьи это Контент. Зачем городить модуль для добавления Контента? Создавайте Контент и каталогизируйте его как хотите.
Делаете Контент "Статьи"(http://wiki.cmsmadesimple.org/index.php/User_Handbook/Getting_Started/Editor/Add_Content), делаете нужные разделы, в Контенте "Статьи" делаете меню или ставите вручную ссылки на нужные разделы где добавляете меню - создаете в Менеджере меню (http://wiki.cmsmadesimple.org/index.php/User_Handbook/Admin_Panel/Layout/Menu_Manager) нужный вам шаблон и пишете вызов меню.
Например у меня такая иерархия
Секция заголовка "Статьи"
  Секция заголовка "Тема 1"
    Статья 1
    Статья 2
  Секция заголовка "Тема 2"
    Статья 1
    Статья 2
Все это красиво подбирается меню с шаблончиком и получается красивая менюшка где щелкаешь на Статьи появляются  секции заголовков Тема1 и Тема2, а при щелчке на Тема1 раскрывается список статей.


"Максимальная поддерживаемая версия" не всегда актуальна, некоторые модули работают несмотря на то что текущяя версия выше максимума.
В вашем случае увы. Налицо конфликт. Надо лезть в код и смотреть что там написано. Но я лично не вижу смысла в установке модуля Articles все решается встроенным Content.
metarad
Forum Members
Forum Members
Posts: 37
Joined: Tue Aug 26, 2008 9:54 am

Re: Хочу сделать каталог статей. Как?

Post by metarad »

Эмм. Если я верно понял, то этот способ подразумевает под собой создание подкатегория в разделе "Статьи"... Т.е. если я в левой колонке нажму на статьи, откроется подменю со статьями - верно?

Если так, то статей будет добавляться много и не хотелось чтобы ссылка на каждую статью появлялась в подменю. Хочется чтобы я в левой колонке щелкнул на ссылке статьи, а в правой широкой колонке появился бы список статей (ссылки на них). http://firmaspb.ru/articles/ (сейчас там левый текст)

Можете показать ссылку на ваш сайт как это реализовано?
metarad
Forum Members
Forum Members
Posts: 37
Joined: Tue Aug 26, 2008 9:54 am

Re: Хочу сделать каталог статей. Как?

Post by metarad »

Так. Проблема отпала. Каталог статей я соорудил. Необходимо было добавить еще 1 модуль под названием "ModuleXtender". Каталог статей получился такой: http://firmaspb.ru/articles/

Но вот осталась еще 1 проблема... Урлы к статьям совсем не ЧПУ.
Т.е. такое совершенно не устраивает: http://firmaspb.ru/index.php?mact=Artic ... eturnid=51
Хочется примерно так: http://firmaspb.ru/articles/1/

Я реализовал такую возможность для всего сайта благодаря вот этому доку:
http://wiki.cmsmadesimple.org/index.php ... retty_URLs

Но вот на раздел "Статьи" почему-то mod_rewrite не распространяется. Похоже что надо редактировать .htaccess или config.php?

Подскажите, пожалуйста, что сделать?

Сейчас в .htaccess такой код:

Code: Select all

Options +FollowSymLinks
RewriteEngine on
RewriteBase /

# 301 Redirect all requests that don't contain a dot or trailing slash to
# include a trailing slash
RewriteCond %{REQUEST_URI} !/$
RewriteCond %{REQUEST_URI} !\.
RewriteRule ^(.*) %{REQUEST_URI}/ [R=301,L]

# Rewrites urls in the form of /parent/child/
# but only rewrites if the requested URL is not a file or directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?page=$1 [QSA]
Sonya

Re: Хочу сделать каталог статей. Как?

Post by Sonya »

А я не понимаю зачем так мучится с дополнительными модулями. То, что у тебя стоит с правой стороны (список статей с ссылками) - это же меню и есть. Вставляешь туда {menu start_page="articles"} и все. И ЧПУ стандартно работает и список автоматически формируется.
User avatar
Il_Burbero
Forum Members
Forum Members
Posts: 128
Joined: Tue Apr 15, 2008 10:36 am

Re: Хочу сделать каталог статей. Как?

Post by Il_Burbero »

metarad wrote: Так. Проблема отпала. Каталог статей я соорудил. Необходимо было добавить еще 1 модуль под названием "ModuleXtender". Каталог статей получился такой: http://firmaspb.ru/articles/

Но вот осталась еще 1 проблема... Урлы к статьям совсем не ЧПУ.
Т.е. такое совершенно не устраивает: http://firmaspb.ru/index.php?mact=Artic ... eturnid=51
Хочется примерно так: http://firmaspb.ru/articles/1/

Я реализовал такую возможность для всего сайта благодаря вот этому доку:
http://wiki.cmsmadesimple.org/index.php ... retty_URLs
Что ж вы ухватились за модуль Артиклес как за соломинку:)? Ессно не работает ЧПУ, не на всех модулях работает ЧПУ, я бы даже сказал на единицах. У этого модуля видно ЧПУ не работает :).
Ввиду сложности (вернее громоздкости запроса"Articles,cntnt01,details,0&cntnt01documentid=1&cntnt01returnid=51") реализации вызова модуля и его функций хтаксесс вам не поможет, замучаетесь правила писать да и все равно основное правило (для ЧПУ ядра"RewriteRule ^(.+)$ index.php?page=$1 [QSA]") перекроет все.

Видно вы плохо изучили доки по ядру, а именно Контенту и Менеджеру меню. Все можно ограничить и все можно настроить.
Никто не запрещает вам запретить в основном меню пробегание по подкаталгу Статьи и никто не запрещает вам использовать для этого подкаталога свой шаблон и выводить подменю (опять же со своим шаблоном!) куда, где и как угодно.
Например основной шаблон и главное меню дает ссылку на подкаталог Статьи и все что находится в подкаталоге не выводит (читайте http://wiki.cmsmadesimple.org/index.php ... nu_Manager). Подкаталог Статьи это страница (обычная) и на ней делаете вызов меню где ограничиваете выведение только содержимого этого подкаталога (см. пост Сони), а использовав какой то другой шаблон для меню вы можете значительно украсить внешний вид каталога. Напихать на страничку пять меню тоже никто не запрещает (по меню на раздел подкаталога, напр на стр. Статьи выводится раздел Компьютеры (алиас computery) (или ставится ссылка) и под ним пишется вызов меню {menu start_page="computery"}.
А еще в шаблон меню можно воткнуть подхват инфы из description и получится ссылка с описанием - красота, юзабилити и SEO!
Конечно при большом нагромождении вы теряете в автоматизации, но выигрываете в полном контроле содержимого!
Сие дает куда как больше возможностей чем возня с дополнительными модулями. И самое главное вы получаете красивую SEO оптимальную структуру для страниц (робот видит ссылку на главной странице переходит и индексирует все ваши статьи кушая грамотные анкоры, ой отвлекся, СЕО мой конек :))).

Вы просили мой сайт, дык он в профайле, смотрите. Мне там статьи не мешают:) Можно оставить для роботов ссылки на главной странице на все страницы сайта и при помощи встроенных возможностей сделать красивое меню. Да и яву или ява фрэймворки цеплять никто не мешает, только заключайте их в специальные теги (см Smarty руководство).

И запомните, у КМС встроенных возможностей тьма, прежде чем искать модуль попробуйте посмотреть на задачу нетривиально и возможно модуль вам не понадобится.
metarad
Forum Members
Forum Members
Posts: 37
Joined: Tue Aug 26, 2008 9:54 am

Re: Хочу сделать каталог статей. Как?

Post by metarad »

Спасибо большое Il_Burbero и Sonya за ответы. Реализовал по вашему совету... Модуль Articles удалил :)

Осталась лишь проблема с title в новостях... Т.е. когда я добавляю новость - ее заголовок не идет в title, что плохо для SEO. А может есть какой-то SEO-модуль, при помощи которого можно редактировать любой любой страницы?

Спасибо.
User avatar
Il_Burbero
Forum Members
Forum Members
Posts: 128
Joined: Tue Apr 15, 2008 10:36 am

Re: Хочу сделать каталог статей. Как?

Post by Il_Burbero »

Я написал плагинчик http://forum.cmsmadesimple.org/index.php/topic,23490.0.html. Можете потестить.
Правда он не решает всех проблем (т.к. тайтлы и описания все же дублируются в некоторых местах, но это не так критично как их полное отстутсвие :) ну и механизм генерации кейвордов немного неточен т.к. не хотелось особо напрягать сервер с анализом и извлечением ключевиков из русского текста, так примитивная схема наибольшего употребительного слова ну и еще я не особо заморачивался потому что поисковики (крупные) на кейворды вообще не реагируют).
Если будет глючить или что не понятно спрашивайте сразу там же.

Ну и поройтесь по русской ветке, тема поднималась уже.
metarad
Forum Members
Forum Members
Posts: 37
Joined: Tue Aug 26, 2008 9:54 am

Re: Хочу сделать каталог статей. Как?

Post by metarad »

Спасибо... Но не совсем то. Генерация мне в принципе не нужна... Хотя бы для каждой страницы имелась бы возможность задать жесткий title и того бы хватило... Допустим в админке появилось бы новое поле для каждой существующей страницы. Оперировать общим тайтлом и заголовками не удобно. А description и уж тем более keywords в век современного развития поисковых систем практически не играют роли.
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: Хочу сделать каталог статей. Как?

Post by ZYV »

Посмотри хелп к плагину {content} ...
unsigned double ZYV;
User avatar
Il_Burbero
Forum Members
Forum Members
Posts: 128
Joined: Tue Apr 15, 2008 10:36 am

Re: Хочу сделать каталог статей. Как?

Post by Il_Burbero »

metarad нужно просто разделить что ты хочешь тайтлы для Новостей или тайтлы для простых страниц Контента?
Дело в том что блок News работает так: генерируется согласно заданным параметрам по шаблону превью со ссылками на полную новость. При нажатии на ссылку генерится полная новость по заданному шаблону. Модуль не создает отдельных страниц для каждой новости, он их генерит из БД на лету, динамически либо при вызове конкретного URL новости (URL содержит команду вызова модуля и адрес (ID) конкретной новости). Я просто пытаюсь попонятнее объяснить :). В общем ты как бы остаешься постоянно на странице где вызывается модуль, отсюда такие траблы с тайтлам. Заголовок остается неизменным и генерится до того как генерится модуль News.

Еще могу подсказать теоретический метод. Не пробовал но должен работать.
Создаете основной пустой шаблон типа:

Code: Select all

{content} 
На нужной Вам странице делаете вызов модуля типа:

Code: Select all

{news number="5" detailpage='pagealias' summarytemplate='summary' detailtemplate="detail"}
и выбираете "пустой" шаблон (detailpage='pagealias' это алиас страницы где вызывается News, т.е. там где делаете вызов модуля).
Затем шаблоны summary и detail преобразуете к полному ХТМЛ (можно скопировать шаблон по умолчанию и заменить {title} и {content} и еще чего нить на нужное вам) с хедером и контентом где переменные берете из модуля News. Например шаблон summary делаете такой (грубая схема доработать надо):

Code: Select all

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<__html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
{foreach from=$items item=entry}
<title>{$entry->title}</title>
</head>
</__body>
{if $entry->summary}{eval var=$entry->summary}    
{elseif $entry->content}{eval var=$entry->content}
{/if}
<__body>
</__html>
{/foreach}
Шаблон detail делаете подобным только указываете все нужные фишки для полной новости.
Поясню что вы делаете, вы вызываете пустой шаблон с {content} и в нем уже выстраиваете HTML страницу, т.е. можете контролировать и даже при желании ТИП документа (для этого правда нужен мини плугин где будет перехват заголовков).
Подобным методом я реализовал выдачу валидного RSS на отдельной странице с добавлением цитаты последней измененной страницы. Т.е. у меня выдается чистый ХМЛ причем с содержанием которое мне нужно и на отдельной странице Контента, а не генерится чертиче через модуль Ньюс.

А обычная страница (что в админке на вкладке КОнтент) там же есть тайтл - тегу {title} соотвествует содержимое поля "Заголовок".
von-hamster
Power Poster
Power Poster
Posts: 339
Joined: Thu Nov 01, 2007 3:11 pm

Re: Хочу сделать каталог статей. Как?

Post by von-hamster »

Я немного не так извернулся... Когда мне нужны были тайтлы динамических блоков я делал следующим образом:
1. в моем модуле добавлял новую переменную для основного класса

Code: Select all

$gCms->MyTitle = 'MyTitle'; // в зависимости от того, когда и что мне нужно - свой текст...
2. создал плугин для смарти (/plugins/function.my_title.php):

Code: Select all

...
function smarty_cms_function_my_title($params, &$smarty) {
	global $gCms;
	return isset($gCms->MyTitle) ? ' - ' . $gCms->MyTitle : '';
}
...
3. В шаблоне: Сайт - {my_title}

ЗЫ... Понимаю, что заплатка, зато быстро и просто  :)
Post Reply

Return to “Russian - русский”