Az umbraco cm-t rögzítjük adatforrásként, savepearlharbor

Célközönség. Olyan rendszerek, amelyeknek egyszerű CMS-nek kell lenniük, és amelyek nem befolyásolják az építészeti megoldást. (CMS, tartalomraktár, formázás nélkül stb.)

A célja ennek a cikknek - a „2 szó” megmutatni, hogyan lehet használni Umbraco CMS mint adatforrás, ahonnan a globális független alkalmazás fő (mert a forrás bármikor helyettesíteni lehet más), más szóval, hogy hogyan lehet a CMS egy külön projekt .

Néhány évvel ezelőtt megtudtam az Umbraco CMS-ről, ami azonnal felhívta a figyelmemet. Az egyik legfontosabb előnye számomra az ingyenes openSource volt, amire csak utal. Egyszerű és hatékony tervezés, egyszerű háttér, nagy közösség és számos ingyenes bővítmény elég. Az előnyök és hátrányok teljes listája elérhető az interneten. Csak két pont csalódott:

  1. A CMS bizonyos állításokat tesz fel a fő alkalmazás struktúrájára és platformjára, útvonalra stb. A C # programozás a felhasználói vezérlők írására korlátozódik.
  2. Az első pont alapján jelenleg a legfrissebb verzió (4.10) nem használható az ASP.NET MVC-vel, melyet annyira szeretem. (A projekt hálózati verziójában "vegyes típusú" - ASP.NET + ASP.NET MVC, de nem tetszett)

Én is szerettem volna használni a CMS kizárólag a tartalom menedzsment modul, melynek adatai kaphatunk egyszerűen csatlakoztatni egy pár könyvtárak bármely más projekt. És ahogy megértem, az Umbraco nem nyújt ilyen lehetőséget a halálra. Ezen kívül szeretnék írni a saját oldal elrendezését, a logika, az adatok kötések C #, meghatározzák az elrendezés nem bütyköl xslt, amely beépített ui-motor Umbraco. Miután egy kis időt töltött a keresésben, és nem találta meg a megfelelőt, magam kellett megoldania ezt a feladatot.

Érdemes megemlíteni az igazságszolgáltatás kedvéért, hogy ennek eredményeképpen egyes CMS funkciók elérhetetlenek lehetnek, mivel a fő alkalmazás nem integrálódik benne. Például: oldalak létrehozása és szerkesztése, témák, parancsfájlok, makrók adminisztrálása. Mindenesetre alapértelmezés szerint. Tehát, ha teljes funkcionalitású CMS-re van szüksége, amelyben az ügyfélnek képesnek kell lennie ezek végrehajtására, akkor ez a lehetőség nem túl megfelelő.

Szemléletesen úgy néz ki, mint ez:

Az umbraco cm-t rögzítjük adatforrásként, savepearlharbor

Szóval először meg kell tennie a következőket:
  • Hozzon létre egy projektet egy CMS-vel, konfigurálja és bővítse a funkcióit.
  • Adja hozzá a szükséges összeállításokat a webes projekthez, konfiguráljon és írjon pár kódsorozatot.
  1. CMS-projekt létrehozása
    • Mivel az umbraco ASP.NET-ben van írva, a VisualStudio-ban létrehozunk egy üres projektet a megfelelő típusból (töröljük az összes fájlt és mappát)
    • Telepítjük az "Umbraco Cms" projektet a NuGet-ből.
    • Futtassa a projektet - megnyílik az Umbraco konfigurációs oldala, ahol megkötjük az adatbázishoz.
  • Az Umbraco bővítése
    háttér:
    Amikor a cms külön tervezet egyik fő kivétellel, amihez néhány további mozgások, mégpedig azért, mert a web-alkalmazás már nem lehet csinálni valamit, mint umbraco.GetCurrentItem (), mert a szövegösszefüggése a cms-hez nem kötődik semmilyen módon, valamilyen módon szükségünk van a szükséges csomópontokra.
    Az Umbraco.API lehetővé teszi ezt a csomópont számos paraméterein, amelyek közül egyik sem garantálja, hogy ugyanazt a csomópontot kapjuk, vagy egyáltalán kapunk valamit.

    Úgy tűnik, hogy kapok egy csomópont annak azonosítója az ideális megoldás - lehet bedrótoztak szükséges azonosítót és csendben csinálni uQuery.GetNode (int nodeID), de Umbraco végre sorszámozott darabot, és ha jól értem, nem végrehajtani, ha azok merzhing telepítőcsomag ugyanazok a csomópontok. Ezért a jövőben a megfelelő csomópontok megtalálásához kapcsolódó munka minimalizálása érdekében a következő mechanizmus valósul meg:

    Az ábra bemutatja az Umbraco egyedi vezérléseinek megvalósítását. Control felelős a feladat a szervezetek közötti csomópontok és az egyéni enumom cm-re a web-alkalmazás (DropDown mapitsya a enum, csomópont kiválaszt keresztül ContentPicker). Ez a fogalom legegyszerűbb megvalósítása, azaz Az enum helyett a csomópontnevek listája bármilyen szerkezettel rendelkezhet, és nem csak az enumban tárolható. Például, ha kb. 100 csomópontot kell tudni az alkalmazásban, és nem körülbelül 10 pontot, akkor valami bonyolultabbat gondolhatsz. By the way, így lehetséges, hogy végre lokalizáció és web-site hozzáadásával egyesület, amelyek különböző növények (nyíl Ru-Ru). A ContentPicker adatainak mentése előtt megkapjuk az igazi csomópont-azonosítót.

    Emellett erős vágyakkal ellenőrizheti, hogy a webes alkalmazásban várakozó umbraco csomópontok eltűntek-e, megjelenítettek-e figyelmeztetések, írják-e a leveleket és így tovább. előrejelezve a NotFound hibák megjelenését.

    A társulási adatokat az Umbraco adatbázisban tároljuk (például). A legegyszerűbb esetben a táblázat szerkezete a következő:

    Az umbraco cm-t rögzítjük adatforrásként, savepearlharbor

  • Web projekt konfigurálása
    Most, mint a fő fogyasztói projekt. A cm-nél az api Umbraco-n keresztül tárolt adatok lekéréséhez a következőket kell tennie:
    • Másolja a config \ umbracoSettings.config parancsot a cms gyökérről a webprojekt gyökerére
    • Tulajdonságainak beállítása «XmlContentCheckForDiskChanges» értékét a konfigurációs true (opcionális tétel, de kapsz egy instant „felzárkózni” változások cm)
    • Másolja a kulcsokat a web.config cms-ből a web.config projektben:
      • "UmbracoDbDSN" - a cms adatbázis elérési útja
      • Az "UmbracoContentXML" az xml fájl elérési útja, amelybe a cms tárolja az adatokat. Pontosabban: ez a fájl alapértelmezés szerint a \ \ App_Data \ umbraco.config alatt található ". Van egy árnyalat. Ha a cms fizikailag egy másik kiszolgálón található, akkor a feladat megoldása további műveleteket igényel. Nem igazán járultam be az umbraco gyorsítótárazási mechanizmusába, de azt hiszem, hogy ha el kell gyorsítanod a fájlt, akkor teljesen elhagyod.
      • Hivatkozások a következő összeállításokra:
        • businesslogic.dll
        • cms.dll
        • controls.dll
        • interfaces.dll
        • umbraco.dll
        • umbraco.DataLayer.dll

        4. Hozzáférés az adatokhoz
        Ha nem hagytam ki semmit, elég, hogy az api umbraco működjön, ahogy kellene. Ahhoz, hogy megkapja a kívánt csomópontot, ismernie kell az azonosítóját. Mindössze annyit kell tennie, hogy megkapja a kívánt azonosítót az ItemsIdMap társulási táblázatból az Enum elem és a kultúra nevével, ha van ilyen. Például:

        Ez alapvetően minden. Példa erre a koncepcióra, az eljárás során különböző árnyalatok vannak, de ez egy másik történet - mindent megoldunk, ahogy érkezik. Azt is megjegyzem, hogy ő maga még nem tesztelte ezt a megoldást sem minden lehetőségre, sem teljesítményre vonatkozóan. Egyébként ebben az esetben kényelmesen töltheti le az Umbraco forráskódját, átmenetileg csatlakoztathatja azt az összeállítások helyett, és hibakeresés esetén, ha vannak érthetetlen problémák. a cms alkalmazása atipikus. Mindenesetre, bár ezt a döntést sokkal jobban szeretem, mint a saját kezemmel írtam az adminisztrációs fórumot.
        Köszönjük figyelmét!