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

+36
2.82K
Для версии 1.8

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

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

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

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


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

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

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

  1.  
  2. $article['istochnik'] = strtolower($article['istochnik']);
  3.  
Сохраняем файл

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

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

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

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

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

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

  1.  
  2. $sql = "UPDATE cms_content
  3. SET category_id = {$article['category_id']},
  4. pubdate = '{$article['pubdate']}',
  5. enddate = '{$article['enddate']}',
  6. is_end = '{$article['is_end']}',
  7. title='{$article['title']}',
  8.  
в предпоследнюю строчку добавляем istochnik='{$article['istochnik']}' должно получиться следующее

  1.  
  2. $sql = "UPDATE cms_content
  3. SET category_id = {$article['category_id']},
  4. pubdate = '{$article['pubdate']}',
  5. enddate = '{$article['enddate']}',
  6. is_end = '{$article['is_end']}',
  7. istochnik='{$article['istochnik']}',
  8. title='{$article['title']}',
  9.  
Все сохраняем файл, основная работа закончена, теперь осталось сделать вывод нового поле.

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

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

Для добавления поля
  1.  
  2. <tr>
  3. <td width="230" valign="top">
  4. <strong>Источник:</strong>
  5.  
  6. <span class="hinttext">{$LANG.SHOW_ON_SITE}</span>
  7. </td>
  8. <td valign="top">
  9. <input name="istochnik" type="istochnik" class="text-input" id="title" style="width:350px" value="{$mod.istochnik|escape:'html'}" />
  10. </td>
  11. </tr>
  12.  
Если, вы планируете, что бы пользователь в это поле вставлял с ссылку на другой сайт, тогда замените

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

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

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

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

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

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

  1. <a href="http://{$article.istochnik}">{$article.istochnik}</a>

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

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

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

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

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

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

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

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

  1.  
  2. <div><strong>Источник</strong></div>
  3. <div><input name="istochnik" type="istochnik" id="istochnik" style="width:100%" value="<?php echo @$mod['istochnik'];?>" /></div>
  4.  
Все. готово. можно тестировать
0
Thanatognozija Thanatognozija 12 лет назад #
Скажите пожалуйста, а какой должен быть запрос к БД при таких параметрах:
поле istochnik
Тип Varchar
длина значения 200
по умолчанию нет
Сравнение cp1251_general_ci
zst zst zst
0
lucku lucku 12 лет назад #
Если я не ошибаюсь

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

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

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

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

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


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

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

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

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

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

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

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

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

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

Почему то не обрабатывается, пример все по той же ссылке.
0
Александр Александр 12 лет назад #
Черт а меня больше интересовало как сделать на DLE

Грубо говоря, в конце статьи появляются две такие ссылки и не надо ничего заполнять при создании темы.
0
Александр Александр 12 лет назад #
Написал неправильно не как сделать на DLE а как у DLE
+1
schved schved 12 лет назад #
Это выводится оператором $_SERVER['REQUEST_URI'] на insatantCMS не проверял, сегодня попробую.
0
schved schved 12 лет назад #
На первую ссылку решение нашел

Вот это ставим после {$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 обрабатывает криво.
0
Александр Александр 12 лет назад #
Спасибо огрмное
0
AlekS AlekS 12 лет назад #
Здравствуйте, а меня интересует вопрос, можно ли создать еще для статьи выбор рубрики в которую добавляется статья, на форуме (http://instantcms.ru/forum/thread8116-1.html#new)был выложен скриншот с какого-то сайта, там можно выбирать рубрику, вот он:

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

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

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

Почему то если не в шаблоне то не обрабатывается.
0
lucku lucku 12 лет назад #
Если речь идет о плагине, причем здесь этот блог. Можем запутать всех. Кидайте проблему в личку, если она актуальна.
0
Сергей Сергей 12 лет назад #
Было бы хорошо сделать еще и поле "файл-архив" чтобы прикреплять файлы к статье. Помогите реализовать.
0
Сергей Сергей 12 лет назад #
помогите реально
0
lucku lucku 12 лет назад #
Так это реализовано, при добавлении статьи в редакторе выбираем вставить/редактировать ссылку.
В открывшемся окне выбираем закачать, пользователь туда загружает файл, расширение которого указано профиле пользователей.
0
Сергей Сергей 12 лет назад #
Но меня не устраивает эта функция в редакторе, помогите а то мне это поле очень необходимо. плизззз
0
Михаил Михаил 12 лет назад #
а на 1.9 это можно ставить ???
0
Анатолий Анатолий 12 лет назад #
У меня не получилось, 0 пишет и все!
0
Михаил Михаил 12 лет назад #
на 1.9 отлично идет
0
EXID EXID 12 лет назад #
А кто может подсказать, как поставить условие на вывод, типа: если ссылку не ввести, то выводиться не должно,
Вроде такого что то:
Код PHP:
{if !$istochnik}<b>Источник:</b> <a href="http://{$article.istochnik}" title="Перейти на сайт" target="_blank">{$article.istochnik|truncate:25}</a>{else}здесь типо ничего нет, потому что ничего не ввели{/if}
0
Dinar Dinar 12 лет назад #
Наверное будет полезно, в 5 пункте, при выводе источника добавить rel="nofollow"

Код PHP:
<a href="http://{$article.istochnik}">{$article.istochnik} rel="nofollow"</a>
0
Dinar Dinar 12 лет назад #
fix

Код PHP:
<a href="http://{$article.istochnik}" rel="nofollow">{$article.istochnik}</a>
0
DanRacer DanRacer 12 лет назад #
Подскажите как сделать поля обязательными к заполнению?
+4
Алфей Алфей 11 лет назад #
Подскажите пожалуйста как применить этот хак к icms 1.10 ?
Сегодня смотрел сам, но код изменился и как быть даже не знаю...
+2
bondar bondar 10 лет назад #
Решения для 1.10 нет?
0
sibroy sibroy 5 лет назад #
Код PHP:
  1. {if $article.istochnik eq ''}
  2. &nbsp;
  3. {else}
  4. &nbsp;|&nbsp; Источник: <a title="{$article.istochnik}" href="/to.php?url={$article.istochnik}" rel="nofollow">{$article.istochnik|truncate:35}</a>
  5. {/if}
Если вставить это, слово Источник вместе со ссылкой на сам источник будет показываться когда это поле Источник заполнено...
0
sibroy sibroy 5 лет назад #
Для 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 ни чего не менял...у меня работает...

Еще от автора

Добавляем в редактор новые формы
Здесь будет описано как добавлять новые формы в редактор, на основе этой информации можно добавить любую форму.
Фильтр скрыть / показать текст для статей
Фильтр работает следующим образом он подгружает скрытый текст и при клике на ссылку текст выводиться на сайте.
Фильтр всплывающая подсказка для статей
Разработан фильтр всплывающая подсказка, полностью построен на CSS и 2-х изображений В редакторе выводиться достаточно просто {показ}пишем текст | пиш
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.