Ссылка на источник в новостях

1863
Для версии 1.8

1. Редактируем базу

.
Необходимо добавить новую строчку в cms_content. Назовем ее istochnik.
Заходим в базу данных.
Открываем cms_content и добавляем новую строку со следующими параметрами:
поле istochnik
Тип Varchar
длина значения 200
по умолчанию нет
Сравнение cp1251_general_ci

Все работы с базой закончены.

2. Открываем файл frontentd.php из папки components/content


находим код, примерно строка 173 после
Код PHP:
	
$smarty->assign('showdate', $showdate);
$smarty->assign('showcomm', $showcomm);
$smarty->assign('pagetitle', $pagetitle);
Добавляем
Код PHP:
$smarty->assign('istochnik', $istochnik);
находим код, примерно строка 428 после
Код PHP:
        
$smarty->assign('cfg', $cfg);
$smarty->assign('pubcats', $pubcats);
$smarty->assign('pagetitle', $pagetitle);
Добавляем
Код PHP:
$smarty->assign('istochnik', $istochnik);
находим код, примерно строка 448

Код PHP:
$article['user_id']             = $mod['user_id'] ? $mod['user_id'] : $user_id;
$article['title']               = $inCore->request('title', 'str', '');
Добавляем
Код PHP:
$article['istochnik']               = $inCore->request('istochnik', 'str', '');
Находим код, примерно строка 470

Код PHP:
        
$article['showtitle']           = $do=='editarticle' ? $mod['showtitle'] : 1;
$article['meta_desc']           = strtolower($article['title']);
Добавляем

Код PHP:
$article['istochnik']           = strtolower($article['istochnik']);
Сохраняем файл

3. Далее открываем файл model.php из папки components/content

Находим код, примерно строка 708

Код PHP:
        
$sql = "INSERT INTO cms_content (category_id, user_id, pubdate, enddate, 
                                         is_end, title, description, content,
                                         published, hits, meta_desc, meta_keys,
                                         showtitle, showdate, showlatest,
Добавляем istochnik после title, должно получиться следующее

Код PHP:
        
$sql = "INSERT INTO cms_content (category_id, user_id, pubdate, enddate, 
                                         is_end, title, istochnik, description, content,
                                         published, hits, meta_desc, meta_keys,
                                         showtitle, showdate, showlatest,
Находим код, примерно строка 715

Код PHP:
                         
'{$article['is_end']}', '{$article['title']}', '{$article['description']}', '{$article['content']}', '{$article['published']}', 0,
и добавляем '{$article['istochnik']}' после '{$article['title']}' должно получиться следующее

Код PHP:
                         
'{$article['is_end']}', '{$article['title']}', '{$article['istochnik']}', '{$article['description']}', '{$article['content']}', '{$article['published']}', 0,
Находим код, строка примерно 762

Код PHP:
        
$sql = "UPDATE cms_content
                SET category_id = {$article['category_id']},
                    pubdate = '{$article['pubdate']}',
                    enddate = '{$article['enddate']}',
                    is_end = '{$article['is_end']}',
                    title='{$article['title']}',
в предпоследнюю строчку добавляем istochnik='{$article['istochnik']}' должно получиться следующее

Код PHP:
        
$sql = "UPDATE cms_content
                SET category_id = {$article['category_id']},
                    pubdate = '{$article['pubdate']}',
                    enddate = '{$article['enddate']}',
                    is_end = '{$article['is_end']}',
                    istochnik='{$article['istochnik']}',
                    title='{$article['title']}',
Все сохраняем файл, основная работа закончена, теперь осталось сделать вывод нового поле.

4. Открываем файл com_content_edit.tpl по умолчанию он находиться в папки templates/_default_/components
этот файл отвечает за добавления/редактирования статей пользователей

и в нужное место вставляем

Для добавления поля
Код PHP:
                             <tr>
						<td width="230" valign="top">
							<strong>Источник:</strong>

							<span class="hinttext">{$LANG.SHOW_ON_SITE}</span>
						</td>
						<td valign="top">
					<input name="istochnik" type="istochnik" class="text-input" id="title" style="width:350px" value="{$mod.istochnik|escape:'html'}" />
						</td>
					</tr>
Если, вы планируете, что бы пользователь в это поле вставлял с ссылку на другой сайт, тогда замените

Код PHP:
<span class="hinttext">{$LANG.SHOW_ON_SITE}</span>
На это правило
Код PHP:
<span class="hinttext">Добавляйте ссылку без htpp://</span>
Все с этим файлом мы закончили, теперь поле выводиться при добавлении/редактировании статьи.

5. Далее нам необходимо сделать вывод этого поля при чтении статьи

Для этого открываем файл com_content_read.tpl по умолчанию он находиться в папки templates/_default_/components

и в нужном нам месте вставляем

Если необходимо просто текстом

Код PHP:
{$article.istochnik}
Если необходимо ссылкой

Код PHP:
<a href="http://{$article.istochnik}">{$article.istochnik}</a>

6. Если необходимо это поле редактировать через админ панель.

Открываем файл content.php  из папки admin/applets

Находим код, примерно строка 248

Код PHP:
			
$id                        = $inCore->request('id', 'int', 0);
$article['category_id']    = $inCore->request('category_id', 'int', 1);
$article['title']          = $inCore->request('title', 'str');
И добавляем следующую функцию $article['istochnik']          = $inCore->request('istochnik', 'str');
у нас должно получиться

Код PHP:
$id                        = $inCore->request('id', 'int', 0);
$article['category_id']    = $inCore->request('category_id', 'int', 1);
$article['title']          = $inCore->request('title', 'str');
$article['istochnik']          = $inCore->request('istochnik', 'str');
Находим код, примерно строка 342

Код PHP:
if ($do == 'submit'){
$article['category_id']     = $inCore->request('category_id', 'int', 1);
$article['title']           = $inCore->request('title', 'str');
И добавляем следующую функцию $article['istochnik']          = $inCore->request('istochnik', 'str');
у нас должно получиться

Код PHP:
if ($do == 'submit'){
$article['category_id']     = $inCore->request('category_id', 'int', 1);
$article['title']           = $inCore->request('title', 'str');
$article['istochnik']           = $inCore->request('istochnik', 'str');
И последнее
после кода, примерно строка 537

Код PHP:
<div><strong>Теги статьи</strong></div>
<div><input name="tags" type="text" id="tags" style="width:99%" value="<?php if (isset($mod['id'])) { echo cmsTagLine('content', $mod['id'], false); } ?>" /></div>
Добавляем следующее

Код PHP:
<div><strong>Источник</strong></div>
<div><input name="istochnik" type="istochnik" id="istochnik" style="width:100%" value="<?php echo @$mod['istochnik'];?>" /></div>
Все. готово. можно тестировать
Свой стиль для каждой ссылки в горизонтальном меню | Удаления пользователя через админку из базы
Комментарии (42)
Thanatognozija 19 сентября 2011 в 13:03 0
Скажите пожалуйста, а какой должен быть запрос к БД при таких параметрах:
поле istochnik
Тип Varchar
длина значения 200
по умолчанию нет
Сравнение cp1251_general_ci
zst  zst  zst
lucku 19 сентября 2011 в 13:16 0
Если я не ошибаюсь

Код PHP:
ALTER TABLE `cms_content` ADD `istochnik` VARCHAR( 200 ) NULL
DEFAULT NULL
Но проверьте после создания таблицы все данные должно быть так

поле istochnik
Тип Varchar
длина значения 200
по умолчанию нет
Сравнение cp1251_general_ci
Thanatognozija 19 сентября 2011 в 13:18 0
Спасибо большое, сейчас проверю, отпишу.
Александр 19 сентября 2011 в 13:29 0
Заодно может, покажете что получилось.
lucku 19 сентября 2011 в 13:31 0
делал не для себя, вот ссылка на форум
Александр 19 сентября 2011 в 13:36 0
Да я на форуме читал, вообще эта полезняшка очень хорошая вещь.
schved 19 сентября 2011 в 14:40 0
Все протестировал работает на 100% http://westday.ru тут.
Огромное спасибо lucku за труды по возможности отблагодарю :)

Пару вопросов.
<span class="hinttext">Добавляйте ссылку без htpp://</span>
А если с http:// то получается просто отсюда убрать префикс? <a href="http://{$article.istochnik}">{$article.istochnik}</a>, или база не воспримет ссылку с http:// - Просто кто новости добавляет тупо копирует адрес с адресной строки браузера.

Еще если включен плагин похожие статьи, то ссылка выводится под ними, куда я только не пихал в шаблоне ее. Можеть есть каке решение что бы прямо под новость.
schved 19 сентября 2011 в 16:09 0
Еще сделал вывод названия ссылки по тому же принципу, пример можно тут посмотреть http://westday.ru/orion-yekspres-perevodit-sputnik-horizons-2-na-novuyu-poziciyu.html

Добавление новости теперь так выглядит:


Проблему с выводом выше похожих статей пока не решил.
lucku 19 сентября 2011 в 16:12 0
если Вы уберете <a href="http://{$article.istochnik}"> из ссылки, и пользователь ее не поставить при ее добавлении, ссылку получиться внутренней, а не внешней.

Похожие статьи - может вы имеете ввиду последние статьи
schved 19 сентября 2011 в 16:22 0
Нет не последние, вот папка плагина в корне сайта /plugins/p_morecontent/
Описание из админки: Добавляет в конец каждой статьи список похожих статей. Maximov & InstantCMS Team

Вот оно все портит, пример http://westday.ru/orion-yekspres-perevodit-sputnik-horizons-2-na-novuyu-poziciyu.html Там под новость сразу похожие статьи, а затем уже ссылка, похожих статей может быть до пяти штук.

Проблема в том что этот плагин не прописан в шаблоне, он как то подцепляется к самому тексту что ли. Редактировал сам плагин, нашол как ссылку вставить выше, но она получается просто в виде тега который прописывали {$article.istochnik} и не работает.
picaboo 19 сентября 2011 в 16:35 0
потому что лишний раз в код лазить не надо, когда можно сделать плагиномsmile

вместо пункта 5, вставьте в файл плагина p_morecontent

перед
    
Код PHP:
$item['content'] .= '<h4>Похожие статьи:</h4>'.$morecontent;
вставьте

Код PHP:
$item['content'] .= '<p><_a href="http://{$article.istochnik}">{$article.istochnik}</a></p>';
lucku 19 сентября 2011 в 16:39 0
Только ссылки <a_href уберите нижний регистр после a.
Если тема решена, закройте ее на форуме
picaboo 19 сентября 2011 в 16:45 0
чтобы не корячится с правкой плагина и не завязываться на него. накидал плаигнчик.
http://instantcms.ru/users/files/download1373.html

может в пост его кинуть вместо пункта 5?
picaboo 19 сентября 2011 в 16:47 0
в инстанте к сожалению нет сортировки плагинов на выводsadпоэтому чтобы этот плагин был выше p_morecontent - надо его удалить. тоесть удаляем p_morecontent, ставим мой плагин. потом устанавливаем p_morecontent
schved 19 сентября 2011 в 17:25 0
С плагином отображается так же как я писал выше, {$article.istochnik} и не работает.

То же самое и если перед этой строкой $item['content'] .= '<h4>Похожие статьи:</h4>'.$morecontent; добавить.

Почему то не обрабатывается, пример все по той же ссылке.
Александр 19 сентября 2011 в 17:47 0
Черт а меня больше интересовало как сделать на DLE

Грубо говоря, в конце статьи появляются две такие ссылки и не надо ничего заполнять при создании темы.
Александр 19 сентября 2011 в 17:49 0
Написал неправильно не как сделать на DLE а как у DLE
schved 19 сентября 2011 в 18:01 +1
Это выводится оператором $_SERVER['REQUEST_URI'] на insatantCMS не проверял, сегодня попробую.
schved 19 сентября 2011 в 20:25 0
На первую ссылку решение нашел

Вот это ставим после {$article_content}

Код PHP:
<FONT color="#1e90ff">Ссылка на эту статью:</FONT><input type="text" value="{php}echo "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; 
{/php}" onClick="select(this);" style="width: 70%;"><br>
</fieldset>
style="width: 70%;" - Ширина строки.

Со вторым ни как, шаблон как то PHP обрабатывает криво.
Александр 20 сентября 2011 в 10:14 0
Спасибо огрмное
AlekS 19 сентября 2011 в 19:37 0
Здравствуйте, а меня интересует вопрос, можно ли создать еще для статьи выбор рубрики в которую добавляется статья, на форуме (http://instantcms.ru/forum/thread8116-1.html#new)был выложен скриншот с какого-то сайта, там можно выбирать рубрику, вот он:  

То есть еще кроме выбора раздела, чтобы можно было выбрать рубрику к которой относиться статья. Это полезно, тогда можно было бы на сайте более избирательно искать статью.
lucku 19 сентября 2011 в 19:41 0
По идеи рубрика и есть раздел, зачем дублировать.
Т.е. Вы хотите, что бы пользователь выбирал сначала раздел, потом выбрал рубрику?
AlekS 20 сентября 2011 в 13:17 0
Нет, рубрика и раздел это разные вещи, например одну статью можно одновременно определить для несколько рубрик одновременно. А также удобно добавлять новые рубрики и добавлять или изменять статьи в них не меняя при этом структуру сайта. Очень хорошо написано про рубрики в этой статье - http://wordpressinside.ru/functions/categories/
schved 21 сентября 2011 в 23:58 0
В общем с отоброжением под новостью решения нет, но удачно воткнул вывод ссылки Сразу после Автора новости.

Вроде так даже и лутше.

lucku 22 сентября 2011 в 00:03 0
Почему решили, что нет, вывод источника в статье и так-же в разделах можно вывести куда угодно
schved 22 сентября 2011 в 00:10 0
Тут я писал: ТУТ

Почему то если не в шаблоне то не обрабатывается.
lucku 22 сентября 2011 в 00:15 0
Если речь идет о плагине, причем здесь этот блог. Можем запутать всех. Кидайте проблему в личку, если она актуальна.
Сергей Борха 26 сентября 2011 в 19:33 0
Было бы хорошо сделать еще и поле "файл-архив" чтобы прикреплять файлы к статье. Помогите реализовать.
Сергей Борха 26 сентября 2011 в 19:34 0
помогите реально
lucku 26 сентября 2011 в 20:20 0
Так это реализовано, при добавлении статьи в редакторе выбираем вставить/редактировать ссылку.
В открывшемся окне выбираем закачать, пользователь туда загружает файл, расширение которого указано профиле пользователей.
Сергей Борха 27 сентября 2011 в 15:42 0
Но меня не устраивает эта функция в редакторе, помогите а то мне это поле очень необходимо. плизззз
Михаил 30 ноября 2011 в 02:51 0
а на 1.9 это можно ставить ???
Анатолий 5 декабря 2011 в 10:07 0
У меня не получилось, 0 пишет и все!
Михаил 16 декабря 2011 в 03:30 0
на 1.9 отлично идет
EXID 5 декабря 2011 в 23:43 0
А кто может подсказать, как поставить условие на вывод, типа: если ссылку не ввести, то выводиться не должно,
Вроде такого что то:
Код PHP:
{if !$istochnik}<b>Источник:</b> <a href="http://{$article.istochnik}" title="Перейти на сайт" target="_blank">{$article.istochnik|truncate:25}</a>{else}здесь типо ничего нет, потому что ничего не ввели{/if}
Dinar 20 декабря 2011 в 06:30 0
Наверное будет полезно, в 5 пункте, при выводе источника добавить rel="nofollow"

Код PHP:
<a href="http://{$article.istochnik}">{$article.istochnik} rel="nofollow"</a>
Dinar 20 декабря 2011 в 06:34 0
fix

Код PHP:
<a href="http://{$article.istochnik}" rel="nofollow">{$article.istochnik}</a>
DanRacer 21 декабря 2011 в 11:02 0
Подскажите как сделать поля обязательными к заполнению?
Алфей 30 ноября 2012 в 01:53 +4
Подскажите пожалуйста как применить этот хак к icms 1.10 ?
Сегодня смотрел сам, но код изменился и как быть даже не знаю...
krz 16 августа 2013 в 10:44 +2
Решения для 1.10 нет?
sibroy 29 ноября 2018 в 08:32 0
Код PHP:
  1.  
  2. {if $article.istochnik eq ''}
  3. &nbsp;
  4. {else}
  5. &nbsp;|&nbsp; Источник: <a title="{$article.istochnik}" href="/to.php?url={$article.istochnik}" rel="nofollow">{$article.istochnik|truncate:35}</a>
  6. {/if}
Если вставить это, слово Источник вместе со ссылкой на сам источник будет показываться когда это поле Источник заполнено...
sibroy 29 ноября 2018 в 08:42 0
Для instantcms 1.10,3 вставил в файл frontentd.php из папки components/content всё по инструкции только вместо
Код PHP:
  1. $smarty->assign('showcomm', $showcomm);
  2. $smarty->assign('pagetitle', $pagetitle);
ищем
Код PHP:
  1. assign('showcomm', $showcomm)->
  2. assign('pagetitle', $pagetitle)->
и вставляем
Код PHP:
  1. assign('istochnik', $istochnik)->
В файле model.php ни чего не менял...у меня работает...