Регистрация
Вход через соцсети
Восстановление пароля

Дублирование объектов в несколько разделов при добавлении

Новый топик
Страницы: 1  |  2
08.11.2013, 23:54
Ответить | Цитировать
Гость
Гость

Задача: Есть два сайта сайт 1 и сайт 2, в каждом из них есть раздел "Статьи". Статьи добавляются обычно в сайт 1. Но нужно добавить в форму добавления чекбокс, при проставлении которого статья дублируется на сайт 2.

Как можно это реализовать? У меня есть только одна мысль - в альтернативную форму добавляем чекбокс, а сабмит формы обработать через javascript и если чекбокс проставлен, то отправить дважды запрос на добавление, меняя при этом id раздела. Правда я предполагаю, что будут проблемы с правами на добавление? Как это решается?

Может кто знает лучше решение?
09.11.2013, 09:48
Ответить | Цитировать
ipm
Ильин Павел

Зарегистрирован:
2012-10-12
Сообщений: 367

Если Вам нужно вывести одни и те же новости на другом сайте, то в системных настройках компонента или шаблона, пропишите например так:

Код:
$ignore_catalogue=1;
$ignore_sub=1;
$ignore_cc=1;
$ignore_parent=1;


Если так сделать, то должны выводиться все объекты компонента в любом подключенном к нему разделе.

Подробнее о системных настройках компонентов:
http://netcat.ru/developers/docs/components/system...

А если Вам необходимо как-то эти новости фильтровать, т.е. на одном сайте должна быть новость, а на втором нет, то вам нужно создать условие.

Например, создаёте в компоненте ещё одно поле логического типа обязательное для заполнения по умолчанию поставьте цифру ноль, по которому в компоненте или шаблоне компонента проверяете с помощью 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
Сообщений: 367

Цитата:
Я использую компонент "Публикации:Статьи простые" и для новостей, для и статей. Да и сайтов несколько больше, чем 2. Поэтому если я пропишу игноры, то соберу в компоненте все, что надо и не надо.


Так можно же создать шаблоны компонента. Для новостей свой шаблон, для статей свой. Соответственно игноры прописать только в системных настройках новостей.

Знание может быть лишь у того, у кого есть вопросы. Ханс Георг Гадамер
09.11.2013, 21:28
Ответить | Цитировать
Игорь
Stark
Игорь

Зарегистрирован:
2011-11-20
Сообщений: 396

Я думаю так:
Добавляете еще одно поле, например, с название $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";
09.11.2013, 21:48
Ответить | Цитировать
Игорь
Stark
Игорь

Зарегистрирован:
2011-11-20
Сообщений: 396

Да, при выводе краткой новости на "чужом" сайте ссылка на полную новость будет неверной, поэтому меняем $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
09.11.2013, 22:06
Ответить | Цитировать
ipm
Ильин Павел

Зарегистрирован:
2012-10-12
Сообщений: 367

У меня на одном проекте сделано так:

2 сайта, в каждом раздел новостей, которые выводятся и там и там благодаря игнорам. Вывод происходит на основе разных шаблонов компонента + отдельный шаблон для вывода на главной на одном из сайтов.

В одно из разделов на одном сайте понадобилось выводить новости. касаемые определенного события. Я создал ещё один шаблон в компоненте и подключил его к нужному разделу. В компоненте создал дополнительное поле, и в шаблоне компонента написал условие.

Получается при добавлении объекта/новости ставим галочку в том поле, т.е если новость является новостью того раздела, то ставим галочку в соответствующем поле, если не является, то не ставим.

Т.е. в целом одна и та же новость выводится сразу в трёх или двух местах.
На одном сайте в одном разделе, на другом сайте в двух разделах сразу или в одном.

Знание может быть лишь у того, у кого есть вопросы. Ханс Георг Гадамер
09.11.2013, 22:37
Ответить | Цитировать
Руслан Густокашин
Студия Вэлпис
Руслан Густокашин

Зарегистрирован:
2012-02-06
Сообщений: 869

На тот случай, если все же потребуется именно копирование объекта из одного раздела в другой (а не отображение одного и того же объекта в разных местах) - можете взять в исходниках админки netcat такую готовую функцию. Я оттуда взял, скопировал ее в /netcat/modules/default/function.inc.php - и использую для разных нужд. Очень удобно.

09.11.2013, 23:07
Ответить | Цитировать
Игорь
Stark
Игорь

Зарегистрирован:
2011-11-20
Сообщений: 396

Копирование не есть хорошо с точки зрения SEO, дубль страницы получается.
10.11.2013, 00:53
Ответить | Цитировать
Руслан Густокашин
Студия Вэлпис
Руслан Густокашин

Зарегистрирован:
2012-02-06
Сообщений: 869

Да, кстати, Вы правы. Но это касается как копирования, так и двойного отображения (в случае разных fullLink'ов).
Но мне копирование пригодилось в одном проекте не для публичной части сайта, а для внутренних нужд. Требовалось, чтобы у администрации сайта имелась под рукой копия всех объектов, добавленных зарегистрированными пользователями, на случай "разбора полетов". Чтобы даже если пользователь изменит когда-нибудь свой объект, то все равно можно было поглядеть вариант объекта-оригинал.

10.11.2013, 07:54
Ответить | Цитировать
ipm
Ильин Павел

Зарегистрирован:
2012-10-12
Сообщений: 367

Цитата:
Да, кстати, Вы правы. Но это касается как копирования, так и двойного отображения (в случае разных fullLink'ов).


А если fullLink'и одинаковые, то ничего страшного с точки зрения SEO?

На 1 сайте такая ссылка:
Код:
mysite1.ru/news/news_24.html


А на втором такая:
Код:
mysite2.ru/news/news_24.html


Т.е. отличие только в домене. Это нормально?

Ну и получается что в случае разных разделов и разных сайтов fullLink'и точно иногда будут разные. Чем это плохо для SEO? То что один и тот же контент расположен в разных местах на одном сервере? Типо это копипаст? Один из сайтов/разделов/статей в "глазах поисковика" будет не хорошим? улыбка

Знание может быть лишь у того, у кого есть вопросы. Ханс Георг Гадамер
198 196 2013-11-11 06:45:31 13382
Страницы: 1  |  2
Описание проекта