Вопрос по логичной организации данных

Главные вкладки

Аватар пользователя Alex_R Alex_R 22 марта 2010 в 6:36

По отдельности эти вопросы уже задавал, теперь решил задать комплексно, может все таки кто нибудь что нибудь посоветует?
Есть несколько сайтов объединенных в мультисайтинг с общими пользователями.
Нужно (а может и не нужно? может есть другой способ добиться желаемого?) сделать и частично общий контент.
Объясню на примере с "новостями" (реально подобных типов материала получается 5-7).
Есть тип материала "новость" на каждом из сайтов должна быть возможность посмотреть:
1 выборку анонсов "новостей" созданных только на этом сайте.
2.посмотреть все анонсы "новостей" со всех сайтов.
при переходе от анонса к полной версии переходим на родительский сайт новости на нужную страницу.
Это должно работать на всех сайтах.

Думал решать это сборкой CCK, Views, Computed_field. Добавить к типу материала поле, куда будет помещаться имя сайта на котором он создан, а потом Views-ом делать соответствующее представление. Затык произошел сразу в двух местах:
1. Computed_field некорректно работает при мультисайтинге. Точнее вообще не работает с именем таблицы с точкой, а хранить все в одной БД ИМХО нереально уже при 10 сайтах.
2. Не понял как из views достучаться до глобальной переменной в которой хранится имя текущего сайта.

По этому поводу вопрос какими еще путями можно добиться необходимого функционала?
Всем заранее спасибо за ответы!

Комментарии

Аватар пользователя glu2006 glu2006 22 марта 2010 в 9:23

Либо ССК, как ни странно это для Вас будет звучать.
Либо самопис.

Для сск вы создаете обыкновенное текст поле типа селект в значениях которого указываете
site1| site name 1
site2| site name 2
и т.д.
во вьюсах в качестве аргумента берете это ССК поле и ему выставляется значение в формате php global $sites - вот как-то так Wink и можете хранить все в одной базе
В противном случае Вам будет надо развести таблицы для типа материала "новости" и писать свой код поскольку вьюсами вы отображение всех новостей со всех сайтов не вытащите.

Важно, чтоб global $sites == site1 т.е. чтоб ключ массива назывался тем же именем что и переменная $sites.

Аватар пользователя Alex_R Alex_R 22 марта 2010 в 16:09

glu2006 wrote:
Либо ССК, как ни странно это для Вас будет звучать.
Либо самопис.

Для сск вы создаете обыкновенное текст поле типа селект в значениях которого указываете
site1| site name 1
site2| site name 2
и т.д.
во вьюсах в качестве аргумента берете это ССК поле и ему выставляется значение в формате php global $sites - вот как-то так Wink и можете хранить все в одной базе
В противном случае Вам будет надо развести таблицы для типа материала "новости" и писать свой код поскольку вьюсами вы отображение всех новостей со всех сайтов не вытащите.

Важно, чтоб global $sites == site1 т.е. чтоб ключ массива назывался тем же именем что и переменная $sites.

Почему ССК для меня должно странно звучать? Вариант с селектом - спасибо за идею, я думал делать автозаполнение но это работает только с одной базой, уверен, что с селектом такой проблемы не возникнет. Однако в таком варианте добавляется возможность ошибки пользователя - подумаю насколько такой вариант приемлем...
А вот достучаться из аргументов views до переменной global $sites этим способом у меня не получилось - никаких ошибок не выдает, однако в переменной оказывается пустая строка Sad

Интуиция мне подсказывает, что данный функционал возможен вообще без общего контента в мультисайтинге, может через RSS ленты это возможно? - никогда с ними не разбирался. Если возможно, то буду с ними разбираться... Может еще какие идеи есть?

Аватар пользователя glu2006 glu2006 22 марта 2010 в 16:12

Пустая строка у Вас лишь только потому, что в settings.php каждого сайта надо эту глобальную переменную объявить

<?php
global $sites;
 
$sites 'bus'// имя ключа для сайта.
?>

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

Аватар пользователя Alex_R Alex_R 22 марта 2010 в 16:25

glu2006 wrote:
Пустая строка у Вас лишь только потому, что в settings.php каждого сайта надо эту глобальную переменную объявить

<?php
global $sites;
 
$sites 'bus'// имя ключа для сайта.
?>

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


Это сделано, и доступ к ней из того же Computedfields нормально получается, проблема именно из views. Видимо я что то не туда в нем пишу Sad