<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
			<channel>
			<title>Опять вопросы новичка / Вопросы, проблемы и их решения / Alto CMS</title>
			<link>http://altocms.ru/comments/537/</link>
			<description><![CDATA[Доброго времени суток, уважаемое сообщество. Понимаю, что возможно вас утомили вопросы от новичков, но я честно попытался найти ответы самостоятельно]]></description>
			<language>ru</language>
			<managingEditor>noreply@altocms.ru</managingEditor>
			<webMaster>noreply@altocms.ru</webMaster>
			<generator>Alto CMS v.1.5.0b1</generator>
							<item>
					<title>Опять вопросы новичка (comment #8877)</title>
					<guid isPermaLink="true">http://altocms.ru/t/537/#comment8877</guid>
					<link>http://altocms.ru/537.html#comment8877</link>
					<author>s@dtkp.ru</author>
					<description><![CDATA[Вопросы новичков не никого утомляют, блог вопросы для того и создан и задав ваш вопрос вы не только вы прочитаете на него ответ, но все те, у кого будут такие же или похожие вопросы.<br/>
<br/>
По блогам: самое простое решение по отключению блогов — это отключить все ненужные типы блогов в админке (/admin/settings-blogtypes/) включая персональные и поднять ограничение по карме на создание нового блога до большого значения (over 9000). В шаблоне убрать ссылку (или сделать видимой только админам) на создание блога, оставить только на создание сообщения.<br/>
<br/>
По воду тегов: сейчас в движке нет такого функционала, нужно делать плагин для этого или искать существующий здесь и на catalog.livestreetcms.com. Плагины с LS не все могут заработать, тем более на версии 1.0, но переделать их в большинстве случаев не сложно.<br/>
<br/>
Ну и если вы делаете <u>новый проект</u>, то лучше начинать с версии 1.0 (скачать последнюю с GitHub <a href="https://github.com/altocms/altocms/archive/master.zip" rel="nofollow">github.com/altocms/altocms/archive/master.zip</a>), так как если начнете делать на предыдущей версии — все ваши наработки рано или поздно придется переделывать под новую версию, ибо все новинки (плагины) улучшения и прочее, будут уже только для версии 1.0+]]></description>
					<pubDate>Tue, 11 Mar 2014 09:57:08 +0400</pubDate>
									</item>
							<item>
					<title>Опять вопросы новичка (comment #8879)</title>
					<guid isPermaLink="true">http://altocms.ru/t/537/#comment8879</guid>
					<link>http://altocms.ru/537.html#comment8879</link>
					<author>kmz.art@gmail.com</author>
					<description><![CDATA[Спасибо большое за ответ. <br/>
С блогами так и поступлю, а с тегами — буду разибраться.<br/>
А по поводу версии — я имел ввиду качать 1.0 пре-релиз, или ждать релиза?]]></description>
					<pubDate>Tue, 11 Mar 2014 10:26:15 +0400</pubDate>
									</item>
							<item>
					<title>Опять вопросы новичка (comment #8878)</title>
					<guid isPermaLink="true">http://altocms.ru/t/537/#comment8878</guid>
					<link>http://altocms.ru/537.html#comment8878</link>
					<author>andreyv@gladcode.ru</author>
					<description><![CDATA[<blockquote>1. Как лучше всего отключить вообще все блоги, кроме одного. Т.е., нужна «пикабу-основа» (или другого аналогичного проекта — не сочтите за рекламу) — все пишут в один блог, рейтинговое попадает на отедльную (главную страницу). Ну вот, я так понимаю, mylig.ru/, тут это было реализовано.</blockquote>Для Alto версии 1 задача решается в несколько шагов:<br/>
   1. Нужно в админке: «Админка-Настройки-Типы блогов» отключить использование персональных блогов. после этого пользователи вообще не смогут никуда писать.<img src="http://altocms.ru/uploads//images//00/02/20/2014/03/11/8e58bf.png"/><br/>
<br/>
   2. Администратором сайта создаем новый блог стандартным способом.<br/>
   3. Настраиваем виджеты. Из файла common/config/widgets.php в файл app/config/widgets.php переносим те, которые нужны (не нужны блоги).<br/>
   4. Из шаблона выпиливаем все упоминания блогов. Например на странице создания топика выпадающий список с блогами меняем на скрытый input… и так далее по шаблону<br/>
<br/>
<blockquote>2. Как лучше всего наладить более плотную работу с тегами — возможность подписаться, либо наоборот — кинуть тег в «игнор»?</blockquote>Средств из коробки для «расширенной» работы с тегами нет, скорее всего придется дописывать этот функционал.<br/>
<br/>
<blockquote>Ну и третий, пожалуй, самый главный вопрос — что лучше — залить текущую актуальную версию на сервер и начать потихоньку ковырять, допиливая под свои нужды и добавляя контент, либо все же дождаться релиза?</blockquote>Я думаю, лучше сразу новую версию. На нее переходить все равно прийдется — мое мнение.]]></description>
					<pubDate>Tue, 11 Mar 2014 10:11:08 +0400</pubDate>
									</item>
							<item>
					<title>Опять вопросы новичка (comment #8880)</title>
					<guid isPermaLink="true">http://altocms.ru/t/537/#comment8880</guid>
					<link>http://altocms.ru/537.html#comment8880</link>
					<author>kmz.art@gmail.com</author>
					<description><![CDATA[Спасибо. Но с блогами вы, видимо, не совсем меня поняли. Мне надо, чтобы пользователи тоже могли писать — но все в один блог. Но, я уже, в принципе понял, куда копать.<br/>
По поводу тегов — странно, думаю, что для такой системы — это должно быть уже в коробке, но раз так — буду искать решение, либо заказывать отдельно)<br/>
<br/>
И тоже, новую — это та, что сейчас идет под номером 1.0, или ждать совсем релиза?]]></description>
					<pubDate>Tue, 11 Mar 2014 10:29:16 +0400</pubDate>
									</item>
							<item>
					<title>Опять вопросы новичка (comment #8881)</title>
					<guid isPermaLink="true">http://altocms.ru/t/537/#comment8881</guid>
					<link>http://altocms.ru/537.html#comment8881</link>
					<author>s@dtkp.ru</author>
					<description><![CDATA[Да, 1.0. Пока это бета версия в которой структура и функционал уже меняться не будут. Сейчас устраняются мелкие баги и сама версия вполне рабочая. Ждать релиза стоит только тем, кто уже имеет рабочие сайты и желает обновиться но новую версию.]]></description>
					<pubDate>Tue, 11 Mar 2014 11:16:50 +0400</pubDate>
									</item>
							<item>
					<title>Опять вопросы новичка (comment #8882)</title>
					<guid isPermaLink="true">http://altocms.ru/t/537/#comment8882</guid>
					<link>http://altocms.ru/537.html#comment8882</link>
					<author>kmz.art@gmail.com</author>
					<description><![CDATA[Ага, спасибо еще раз.]]></description>
					<pubDate>Tue, 11 Mar 2014 11:19:39 +0400</pubDate>
									</item>
							<item>
					<title>Опять вопросы новичка (comment #8883)</title>
					<guid isPermaLink="true">http://altocms.ru/t/537/#comment8883</guid>
					<link>http://altocms.ru/537.html#comment8883</link>
					<author>andreyv@gladcode.ru</author>
					<description><![CDATA[Я все правильно понял.<br/>
Если брать чистую установку, то после удаления персонального блога пользователи, да, не смогут вообще никуда писать. Но, как я указал выше — &quot;<u>2. Администратором сайта создаем новый блог стандартным способом</u>&quot;, — то есть, вы создадите новый блог, и он будет <u>единственным</u> на сайте, даже персональных не будет — вы их удалили. Поэтому, пользователи смогут публиковаться только в этот, созданный вами, единственный блог. О чем вы и спрашивали.<br/>
<br/>
Плюс, я забыл, а <a href="http://altocms.ru/profile/marques/" class="ls-user">marques</a> нет, что нужно запретить пользователям создавать свои блоги.<br/>
<br/>
Ну а далее, как я и пояснил раньше, нужно убрать из шаблона всё, что касается упоминаний других блогов.]]></description>
					<pubDate>Tue, 11 Mar 2014 14:43:09 +0400</pubDate>
									</item>
							<item>
					<title>Опять вопросы новичка (comment #8885)</title>
					<guid isPermaLink="true">http://altocms.ru/t/537/#comment8885</guid>
					<link>http://altocms.ru/537.html#comment8885</link>
					<author>kmz.art@gmail.com</author>
					<description><![CDATA[Тогда извиняюсь, теперь понял. <br/>
Все упоминания убираем, дабы не иметь потом вопросов со всякими «у вас нет прав» и т.д. Т.е. просто комментим все эти кнопки, верно?<br/>
<br/>
И еще один вопрос — я пока просто не копался во всех файлах. Языковой файл один? Всмысле, без отдельных модулей, локализацию можно выполнить отредактировав один файл?]]></description>
					<pubDate>Tue, 11 Mar 2014 15:20:27 +0400</pubDate>
									</item>
							<item>
					<title>Опять вопросы новичка (comment #8888)</title>
					<guid isPermaLink="true">http://altocms.ru/t/537/#comment8888</guid>
					<link>http://altocms.ru/537.html#comment8888</link>
					<author>andreyv@gladcode.ru</author>
					<description><![CDATA[Языковой файл один здесь common/templates/language/ru.php, и в каждом плагине тоже common/plugins/[ИМЯПЛАГИНА]/templates/language/russian.php.<br/>
<br/>
<blockquote>Т.е. просто комментим все эти кнопки, верно?</blockquote>По хорошему нужно в экшенах убирать всю подготовку данных для шаблона. Например, если на странице профиля /example.com/profile/[USERNAME]/ выводится список созданных пользователем блогов, то в шаблоне actions/ActionProfile/info.tpl если убрать строки<br/>
<pre class="prettyprint"><code>{if $aBlogsOwner}
    &lt;li&gt;
        &lt;span&gt;{$aLang.profile_blogs_self}:&lt;/span&gt;
        &lt;strong&gt;
            {foreach $aBlogsOwner as $oBlog}
                &lt;a href=&quot;{$oBlog-&gt;getUrlFull()}&quot;&gt;
                    {$oBlog-&gt;getTitle()|escape:'html'}
                &lt;/a&gt;{if !$oBlog@last}, {/if}
            {/foreach}
        &lt;/strong&gt;
    &lt;/li&gt;
{/if}</code></pre><br/>
Тогда список блогов, которые создал пользователь перестанут выводится. Но, несмотря на то, что блог всего один, для каждого пользователя будет выполнятся поиск созданных им блогов — а это один лишний SQL-запрос (обращение к кэшу). Что бы этого избежать нужно в файле <em>common/classes/actions/ActionProfile.class.php</em> убрать сам запрос на получение данных.<br/>
И так для каждого случая вывода данных о блогах в шаблоне.]]></description>
					<pubDate>Tue, 11 Mar 2014 18:01:54 +0400</pubDate>
									</item>
							<item>
					<title>Опять вопросы новичка (comment #8894)</title>
					<guid isPermaLink="true">http://altocms.ru/t/537/#comment8894</guid>
					<link>http://altocms.ru/537.html#comment8894</link>
					<author>kmz.art@gmail.com</author>
					<description><![CDATA[В очередной раз спасибо) Копать — неперекопать :)]]></description>
					<pubDate>Tue, 11 Mar 2014 19:27:26 +0400</pubDate>
									</item>
							<item>
					<title>Опять вопросы новичка (comment #8897)</title>
					<guid isPermaLink="true">http://altocms.ru/t/537/#comment8897</guid>
					<link>http://altocms.ru/537.html#comment8897</link>
					<author>s@dtkp.ru</author>
					<description><![CDATA[А еще лучше сделать простейший плагин и переопределить <pre class="prettyprint"><code>class ActionProfile extends Action {...}</code></pre> в нем как <pre class="prettyprint"><code>class PluginExample_ActionProfile extends PluginExample_Inherit_ActionProfile {...}</code></pre> а там уже переопределяем нужный метод. <br/>
<br/>
Таким образом мы избежим головной боли и длительных воспоминаний всех изменений в коде, при обновлении движка на свежую версию.]]></description>
					<pubDate>Tue, 11 Mar 2014 23:46:26 +0400</pubDate>
									</item>
							<item>
					<title>Опять вопросы новичка (comment #8898)</title>
					<guid isPermaLink="true">http://altocms.ru/t/537/#comment8898</guid>
					<link>http://altocms.ru/537.html#comment8898</link>
					<author>reexistent@gmail.com</author>
					<description><![CDATA[А что лучше, делать плагин, или изменить в исходном классе поведение системы?<br/>
Эмм… и если честно не очень понятно именование как вот это соотносится..?<br/>
<br/>
<blockquote>class ActionProfile extends Action {...}<br/>
<br/>
в нем как<br/>
<br/>
class PluginExample_ActionProfile extends PluginExample_Inherit_ActionProfile {...}</blockquote><br/>
Как второе связано с первым?]]></description>
					<pubDate>Wed, 12 Mar 2014 00:47:08 +0400</pubDate>
									</item>
							<item>
					<title>Опять вопросы новичка (comment #8900)</title>
					<guid isPermaLink="true">http://altocms.ru/t/537/#comment8900</guid>
					<link>http://altocms.ru/537.html#comment8900</link>
					<author>s@dtkp.ru</author>
					<description><![CDATA[Можно делать и в исходном классе, но вот представьте, вы один раз что-то поменяли, потом другой раз, а потом еще раз. и т.д. и тут, в один прекрасный день, вышла новая версия Alto, в которой добавили много интересных вещей и исправили кучу ошибок.<br/>
<br/>
Что вам придется делать в этом случае? Да ничего сложного, по большому счету, просто сначала вспомнить в каких классах и что вы меняли (еще вспомнить нужно вспомнить зачем, ибо со временем это забывается), потом сохранить все эти файлы, потом обновить движок и на основе старых файлов восстановить эти изменения.<br/>
<br/>
Если же переопределять функционал движка через плагины, то по крайней мере не нужно помнить что и как вы меняли, так как если переопределенный класс претерпел в ходе обновления слишком значительные изменения вы это увидите. А скорее всего вообще ничего вспоминать и менять не придется, ибо принципы обратной совместимости в Alto пока еще никто не отменял.<br/>
<br/>
Теперь подробнее про переопределение.<br/>
Для примера возьмем файл <u>/common/classes/actions/ActionBlog.class.php</u><br/>
он содержит <pre class="prettyprint"><code>class ActionBlog extends Action {...}</code></pre>в нем есть свойство которое содержит в массиве список URL с котрыми запрещено создавать блог<br/>
<pre class="prettyprint"><code>protected $aBadBlogUrl = array('new', 'good', 'bad', 'discussed', 'top', 'edit', 'add', 'admin', 'delete', 'invite', 'ajaxaddcomment', 'ajaxresponsecomment', 'ajaxgetcomment', 'ajaxupdatecomment','ajaxaddbloginvite', 'ajaxrebloginvite', 'ajaxremovebloginvite','ajaxbloginfo', 'ajaxblogjoin');</code></pre>и нам захотелось поменять этот список (добавить или убрать каке-то ключевые слова)<br/>
Для этого сделаем простейший плагин.<br/>
в папке <u>/common/classes/actions/plugins</u> создадим папку <strong>example</strong> в этой папке создаем папку <strong>classes</strong>, а в ней папку <strong>actions</strong> и уже в этой папке создаем свой файл <strong>ActionBlog.class.php</strong> со следующим содержанием<br/>
<pre class="prettyprint"><code>&lt;?php
class PluginExample_ActionBlog extends PluginExample_Inherit_ActionBlog {
    protected $aBadBlogUrl
        = array('здесь','пишем','нужные','нам','слова'
        );
}</code></pre>теперь возвращаемся в корневую папку плагина <strong>example</strong> и создаем там два файла <strong>PluginExample.class.php</strong><br/>
<pre class="prettyprint"><code>&lt;?php

if (!class_exists('Plugin')) {
    die('Hacking attemp!');
}

class PluginExample extends Plugin {

    protected $aInherits=array(
	'action' =&gt; array(
            'ActionBlog'
        ),
    );

    public function Init() {
        
    }
}</code></pre> и файл <strong>plugin.xml</strong><br/>
<pre class="prettyprint"><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;plugin&gt;
    &lt;name&gt;
        &lt;lang name=&quot;russian&quot;&gt;Example&lt;/lang&gt;
    &lt;/name&gt;
    &lt;author&gt;
        &lt;lang name=&quot;russian&quot;&gt;автор&lt;/lang&gt;
    &lt;/author&gt;
    &lt;homepage&gt;http://example.com&lt;/homepage&gt;
    &lt;version&gt;1.0.0&lt;/version&gt;
    &lt;description&gt;
        &lt;lang name=&quot;russian&quot;&gt;Описание плагина Example&lt;/lang&gt;
    &lt;/description&gt;
&lt;/plugin&gt;</code></pre>Вот и все. Теперь можно идти в админку и включать наш плагин. Для тех, кто хочет сказать, что это слишком сложный путь для простого изменения отвечу: для одного изменения да, но если изменения у вас на сайте все же планируются, то проще сделать такой плагин и потом дописывать его по мере необходимости (новый плагин для каждого изменения делать не нужно!).<br/>
<br/>
И напоследок — загляните в <u>/common/console/protected/plugin/</u> и там вы найдете <strong>демо-плагин</strong> с подробными комментариями и полной структурой папок и файлов.]]></description>
					<pubDate>Wed, 12 Mar 2014 10:22:30 +0400</pubDate>
									</item>
							<item>
					<title>Опять вопросы новичка (comment #8908)</title>
					<guid isPermaLink="true">http://altocms.ru/t/537/#comment8908</guid>
					<link>http://altocms.ru/537.html#comment8908</link>
					<author>reexistent@gmail.com</author>
					<description><![CDATA[Спасибо за развернутый ответ! мне кажется его можно вынести как отдельный топик, многим эта информация может пригодиться. Если понимаешь как устроен движок, логично ты с большей веротяностью его будешь использовать… а много таких моментов вызывают вопросы, даже на уровне общей терминологии. Было бы еще здорово если бы кто-то нарисовал схематично архитектуру и что с чем как взаимодействует…]]></description>
					<pubDate>Wed, 12 Mar 2014 15:41:26 +0400</pubDate>
									</item>
							<item>
					<title>Опять вопросы новичка (comment #8911)</title>
					<guid isPermaLink="true">http://altocms.ru/t/537/#comment8911</guid>
					<link>http://altocms.ru/537.html#comment8911</link>
					<author>s@dtkp.ru</author>
					<description><![CDATA[Да, я с вами согласен. Просто сейчас доделываю плагины и еще есть некоторая работа. Но в ближайшее время хочу написать об этом подробнее в отдельном топике. Это довольно большая и интересная тема.]]></description>
					<pubDate>Wed, 12 Mar 2014 16:47:33 +0400</pubDate>
									</item>
							<item>
					<title>Опять вопросы новичка (comment #8886)</title>
					<guid isPermaLink="true">http://altocms.ru/t/537/#comment8886</guid>
					<link>http://altocms.ru/537.html#comment8886</link>
					<author>reexistent@gmail.com</author>
					<description><![CDATA[<blockquote>нужно убрать из шаблона всё, что касается упоминаний других блогов. </blockquote><br/>
<br/>
У меня такой теоретический вопрос, а если мы допустим, вот так вырезаем из интерфейса какую-то функцию, правильно я понимаю что нужно в коде также ее закрыть, чтобы всякие хакеры не могли ей воспользоваться несмотря на ее отсутствие? Или там невозможно въехать без глубокого знания движка?]]></description>
					<pubDate>Tue, 11 Mar 2014 17:04:24 +0400</pubDate>
									</item>
							<item>
					<title>Опять вопросы новичка (comment #8889)</title>
					<guid isPermaLink="true">http://altocms.ru/t/537/#comment8889</guid>
					<link>http://altocms.ru/537.html#comment8889</link>
					<author>andreyv@gladcode.ru</author>
					<description><![CDATA[Да, вы правы. В коде тоже нужно закрывать. И не только для защиты от злоумышленников, а что бы снять лишнюю нагрузку тоже <em>(немножко подробнее ответил выше)</em>. Знание движка здесь, действительно, лишним не будет.]]></description>
					<pubDate>Tue, 11 Mar 2014 18:05:05 +0400</pubDate>
									</item>
							<item>
					<title>Опять вопросы новичка (comment #8890)</title>
					<guid isPermaLink="true">http://altocms.ru/t/537/#comment8890</guid>
					<link>http://altocms.ru/537.html#comment8890</link>
					<author>reexistent@gmail.com</author>
					<description><![CDATA[Спасибо!]]></description>
					<pubDate>Tue, 11 Mar 2014 18:23:57 +0400</pubDate>
									</item>
					</channel>
	</rss>
