|
|
08.11.2013, 23:54
|
|
Гость
Гость
|
Задача: Есть два сайта сайт 1 и сайт 2, в каждом из них есть раздел "Статьи". Статьи добавляются обычно в сайт 1. Но нужно добавить в форму добавления чекбокс, при проставлении которого статья дублируется на сайт 2.
Как можно это реализовать? У меня есть только одна мысль - в альтернативную форму добавляем чекбокс, а сабмит формы обработать через javascript и если чекбокс проставлен, то отправить дважды запрос на добавление, меняя при этом id раздела. Правда я предполагаю, что будут проблемы с правами на добавление? Как это решается?
Может кто знает лучше решение?
|
|
|
09.11.2013, 09:48
|
|
ipm
Ильин Павел
Зарегистрирован: 2012-10-12
Сообщений: 386
|
Если Вам нужно вывести одни и те же новости на другом сайте, то в системных настройках компонента или шаблона, пропишите например так:
Код:$ignore_catalogue=1;
$ignore_sub=1;
$ignore_cc=1;
$ignore_parent=1;
Если так сделать, то должны выводиться все объекты компонента в любом подключенном к нему разделе.
Подробнее о системных настройках компонентов:
http://netcat.ru/developers/docs/components/system-settings/
А если Вам необходимо как-то эти новости фильтровать, т.е. на одном сайте должна быть новость, а на втором нет, то вам нужно создать условие.
Например, создаёте в компоненте ещё одно поле логического типа обязательное для заполнения по умолчанию поставьте цифру ноль, по которому в компоненте или шаблоне компонента проверяете с помощью if else, выводить новость или нет.
Примерный код для пятой версии:
Код:
<? if ($f_TwoNewsSite) { ?>
<? } else { ?>
<?=$f_News?>
<? } ?>
Где:
$f_TwoNewsSite - логическое поле
$f_News - новость
В форме добавления появится ещё одно поле. Ставите галочку, если новость на втором сайте выводить не надо. Если галочку не поставить, то новость будет на двух сайтах сразу, благодаря прописанному коду в системных настройках компонента.
Знание может быть лишь у того, у кого есть вопросы. Ханс Георг Гадамер
|
|
|
09.11.2013, 11:26
|
|
Гость
Гость
|
Спасибо, Павел, за ответ!
Правда у меня ситуация несколько сложнее. Я использую компонент "Публикации:Статьи простые" и для новостей, для и статей. Да и сайтов несколько больше, чем 2. Поэтому если я пропишу игноры, то соберу в компоненте все, что надо и не надо.
Тут наверно нужно будет добавить тогда к компоненту пользовательские настройки, в которых указать id раздела и компонента куда нужно дублировать статьи. И к вашему решению нужно еще в системных настройках компонента дописать $query_where, в котором отфильтровать из всего то, что относится к текущему компоненту этого раздела + статьи из раздела и компонента, указанные в пользовательских настройках, у которых стоит галочка.
Сработает ли такое решение? И что для этого нужно написать в $query_where?
|
|
|
09.11.2013, 11:54
|
|
ipm
Ильин Павел
Зарегистрирован: 2012-10-12
Сообщений: 386
|
Цитата:Я использую компонент "Публикации:Статьи простые" и для новостей, для и статей. Да и сайтов несколько больше, чем 2. Поэтому если я пропишу игноры, то соберу в компоненте все, что надо и не надо.
Так можно же создать шаблоны компонента. Для новостей свой шаблон, для статей свой. Соответственно игноры прописать только в системных настройках новостей.
Знание может быть лишь у того, у кого есть вопросы. Ханс Георг Гадамер
|
|
|
09.11.2013, 21:28
|
|
Игорь
Игорь Мишарин

Зарегистрирован: 2011-11-20
Сообщений: 482
|
Я думаю так:
Добавляете еще одно поле, например, с название $Cats, в котором прописываете номера сайтов, через запятую, без пробелов.
В нужном месте вставляете вызов:
Код:<?=s_list_class(XX,YY,"nc_ctpl=ZZZZ");?>
Шаблон нужен, чтобы разделить Новости и Статьи
В Системных настройках шаблона:
Код:
$ignore_sub=$ignore_cc=$ignore_catalogue=1;
$query_where = "FIND_IN_SET('$current_sub[Cataloque_ID]',a.Cats)>0";
Stark
|
|
|
09.11.2013, 21:48
|
|
Игорь
Игорь Мишарин

Зарегистрирован: 2011-11-20
Сообщений: 482
|
Да, при выводе краткой новости на "чужом" сайте ссылка на полную новость будет неверной, поэтому меняем $fullLink на это:
Код:http://".listQuery("SELECT Catalogue.Domain, Subdivision.Catalogue_ID FROM Subdivision, Catalogue WHERE Subdivision.Subdivision_ID=$f_Subdivision_ID AND Subdivision.Catalogue_ID=Catalogue.Catalogue_ID LIMIT 1", "\$data[Domain]")."/news/news_$f_RowID.html
Stark
|
|
|
09.11.2013, 22:06
|
|
ipm
Ильин Павел
Зарегистрирован: 2012-10-12
Сообщений: 386
|
У меня на одном проекте сделано так:
2 сайта, в каждом раздел новостей, которые выводятся и там и там благодаря игнорам. Вывод происходит на основе разных шаблонов компонента + отдельный шаблон для вывода на главной на одном из сайтов.
В одно из разделов на одном сайте понадобилось выводить новости. касаемые определенного события. Я создал ещё один шаблон в компоненте и подключил его к нужному разделу. В компоненте создал дополнительное поле, и в шаблоне компонента написал условие.
Получается при добавлении объекта/новости ставим галочку в том поле, т.е если новость является новостью того раздела, то ставим галочку в соответствующем поле, если не является, то не ставим.
Т.е. в целом одна и та же новость выводится сразу в трёх или двух местах.
На одном сайте в одном разделе, на другом сайте в двух разделах сразу или в одном.
Знание может быть лишь у того, у кого есть вопросы. Ханс Георг Гадамер
|
|
|
09.11.2013, 22:37
|
|
Руслан Густокашин
Студия Вэлпис
Зарегистрирован: 2012-02-06
Сообщений: 962
|
На тот случай, если все же потребуется именно копирование объекта из одного раздела в другой (а не отображение одного и того же объекта в разных местах) - можете взять в исходниках админки netcat такую готовую функцию. Я оттуда взял, скопировал ее в /netcat/modules/default/function.inc.php - и использую для разных нужд. Очень удобно.
|
|
|
09.11.2013, 23:07
|
|
Игорь
Игорь Мишарин

Зарегистрирован: 2011-11-20
Сообщений: 482
|
Копирование не есть хорошо с точки зрения SEO, дубль страницы получается.
Stark
|
|
|
10.11.2013, 00:53
|
|
Руслан Густокашин
Студия Вэлпис
Зарегистрирован: 2012-02-06
Сообщений: 962
|
Да, кстати, Вы правы. Но это касается как копирования, так и двойного отображения (в случае разных fullLink'ов).
Но мне копирование пригодилось в одном проекте не для публичной части сайта, а для внутренних нужд. Требовалось, чтобы у администрации сайта имелась под рукой копия всех объектов, добавленных зарегистрированными пользователями, на случай "разбора полетов". Чтобы даже если пользователь изменит когда-нибудь свой объект, то все равно можно было поглядеть вариант объекта-оригинал.
|
|
|
10.11.2013, 07:54
|
|
ipm
Ильин Павел
Зарегистрирован: 2012-10-12
Сообщений: 386
|
Цитата:Да, кстати, Вы правы. Но это касается как копирования, так и двойного отображения (в случае разных fullLink'ов).
А если fullLink'и одинаковые, то ничего страшного с точки зрения SEO?
На 1 сайте такая ссылка:
Код:mysite1.ru/news/news_24.html
А на втором такая:
Код:mysite2.ru/news/news_24.html
Т.е. отличие только в домене. Это нормально?
Ну и получается что в случае разных разделов и разных сайтов fullLink'и точно иногда будут разные. Чем это плохо для SEO? То что один и тот же контент расположен в разных местах на одном сервере? Типо это копипаст? Один из сайтов/разделов/статей в "глазах поисковика" будет не хорошим?
Знание может быть лишь у того, у кого есть вопросы. Ханс Георг Гадамер
|