По отдельности эти вопросы уже задавал, теперь решил задать комплексно, может все таки кто нибудь что нибудь посоветует?
Есть несколько сайтов объединенных в мультисайтинг с общими пользователями.
Нужно (а может и не нужно? может есть другой способ добиться желаемого?) сделать и частично общий контент.
Объясню на примере с "новостями" (реально подобных типов материала получается 5-7).
Есть тип материала "новость" на каждом из сайтов должна быть возможность посмотреть:
1 выборку анонсов "новостей" созданных только на этом сайте.
2.посмотреть все анонсы "новостей" со всех сайтов.
при переходе от анонса к полной версии переходим на родительский сайт новости на нужную страницу.
Это должно работать на всех сайтах.
Думал решать это сборкой CCK, Views, Computed_field. Добавить к типу материала поле, куда будет помещаться имя сайта на котором он создан, а потом Views-ом делать соответствующее представление. Затык произошел сразу в двух местах:
1. Computed_field некорректно работает при мультисайтинге. Точнее вообще не работает с именем таблицы с точкой, а хранить все в одной БД ИМХО нереально уже при 10 сайтах.
2. Не понял как из views достучаться до глобальной переменной в которой хранится имя текущего сайта.
По этому поводу вопрос какими еще путями можно добиться необходимого функционала?
Всем заранее спасибо за ответы!
Комментарии
Либо ССК, как ни странно это для Вас будет звучать.
Либо самопис.
Для сск вы создаете обыкновенное текст поле типа селект в значениях которого указываете
и можете хранить все в одной базе
site1| site name 1
site2| site name 2
и т.д.
во вьюсах в качестве аргумента берете это ССК поле и ему выставляется значение в формате php global $sites - вот как-то так
В противном случае Вам будет надо развести таблицы для типа материала "новости" и писать свой код поскольку вьюсами вы отображение всех новостей со всех сайтов не вытащите.
Важно, чтоб global $sites == site1 т.е. чтоб ключ массива назывался тем же именем что и переменная $sites.
Почему ССК для меня должно странно звучать? Вариант с селектом - спасибо за идею, я думал делать автозаполнение но это работает только с одной базой, уверен, что с селектом такой проблемы не возникнет. Однако в таком варианте добавляется возможность ошибки пользователя - подумаю насколько такой вариант приемлем...
А вот достучаться из аргументов views до переменной global $sites этим способом у меня не получилось - никаких ошибок не выдает, однако в переменной оказывается пустая строка
Интуиция мне подсказывает, что данный функционал возможен вообще без общего контента в мультисайтинге, может через RSS ленты это возможно? - никогда с ними не разбирался. Если возможно, то буду с ними разбираться... Может еще какие идеи есть?
Пустая строка у Вас лишь только потому, что в settings.php каждого сайта надо эту глобальную переменную объявить
<?php
global $sites;
$sites = 'bus'; // имя ключа для сайта.
?>
Прошу прощения что сразу этого не указал, я уже по привычке когда мультисайтинг разворачиваю выполняю эту процедуру.
Это сделано, и доступ к ней из того же Computedfields нормально получается, проблема именно из views. Видимо я что то не туда в нем пишу