Soll ich mein eigenes CMS erstellen oder mich auf ein vorgefertigtes verlassen? [geschlossen]

23

Verwandte Themen : Soll ich als Anfängerprogrammierer lieber meine eigenen Bibliotheken als Bibliotheken von Drittanbietern erstellen?

Soll ich als PHP-Webentwickler für Fortgeschrittene (bis zu 15 Jahre alt) ein völlig neues CMS für meine Website erstellen oder mich auf vorgefertigte Software wie WordPress oder Drupal verlassen?

Ich habe nicht das Gefühl, dass WordPress mächtig / skalierbar genug ist, um mit meinen Versuchen fertig zu werden, und nachdem ich in den letzten Tagen einiges an Drupal herumgebastelt habe, scheint es einfach nicht so zu sein, wie ich es mag und es ist auch nicht gut dokumentiert, so dass ich ein bisschen Probleme habe, es dazu zu bringen, bestimmte einfache Aufgaben zu erledigen. Ich würde gerne so etwas wie ExpressionEngine verwenden, aber ich habe nicht das Geld, um eine kommerzielle Lizenz auszuteilen, die derzeit bei rund 300 US-Dollar liegt. Das ist also ein No-Go.

Ich habe ursprünglich damit begonnen, meine Website als temporäres System zu codieren, damit meine Benutzer Upgrades und andere Dinge wie die Spielwährung kaufen können, bis ich eine neue Website erstellen kann. Nachdem ich damit begonnen hatte, wurde mir jedoch schnell klar, dass ich sie skalierbar machen musste Von da an habe ich mit dem Gedanken programmiert, es zu einer voll funktionsfähigen Website zu machen. Es hat nur ein paar Tage gedauert, aber alle Grundlagen sind vorhanden (Registrierung, Anmeldung, Kontoänderungen usw.) und ich glaube, es wäre ein großartiger Start für ein privates CMS.

Das Letzte, was ich hinzufügen möchte, ist, wenn ich mein eigenes CMS bauen würde, sollte ich ein PHP-Framework wie CodeIgniter verwenden, mit dem ich ziemlich viel Erfahrung habe?

Vielleicht könnten andere Entwickler mich darauf hinweisen, worauf ich mich einlasse.

Alex Bennett
quelle
11
Unterschätzen Sie nicht, wie viele Stunden dafür aufgewendet wurden, vorhandene CMS zu dem zu machen, was sie sind. Sie könnten schwer überrascht sein ...

Antworten:

23

Das hängt ganz von Ihrer Situation ab. Mit CMS wurden großartige Websites erstellt. Ich denke, wir sollten zuerst zwei Konzepte verstehen, CO und TCO.

CO (Betriebskosten)

Wenn Sie etwas kaufen, ist der Betrag, den Sie dafür bezahlen, CO. Im Falle von WordPress ist dies nichts, da WordPress (oder viele andere CMS-Programme) kostenlos sind.

TCO (Total Cost of Ownership)

Stellen Sie sich vor, Sie kaufen einen PC für 10000 Dollar. Dann was? Nehmen Sie sich Zeit für die Installation der Software (Zeit ist eine wertvolle Ressource, weshalb Sie immer noch Geld für diesen PC ausgeben), und kaufen Sie eine Webcam, einen weiteren DVD-Brenner und einige zusätzliche Kabel. Dann müssen Sie lernen, wie man installierte Software benutzt. Mit anderen Worten, die Gesamtkosten für den Besitz eines PCs betragen nicht 10.000 US-Dollar. Es ist viel mehr als das.

Im Falle von CMS-Software ist deren CO wirklich nichts zu sehr niedrigen Raten. Viele Erfahrungen zeigen jedoch, dass die Gesamtbetriebskosten nicht niedrig sind. Große Unternehmen geben fast Tausende von Dollar aus, um eine gute Site in Joomla oder WordPress zu erhalten.

Ein weiterer Faktor ist der Grad der Anpassung . Manchmal wollen Sie eine Software verwenden , wie ohne Änderung. In diesem Fall könnten WordPress, Joomla, Drupal oder ein anderes CMS ein sehr guter Kandidat sein, und Sie sollten kein eigenes CMS schreiben. Es gibt jedoch Situationen, in denen ein hohes Maß an Anpassung erforderlich ist. In diesem Fall ist es sehr frustrierend, ein einsatzbereites CMS an Ihre Anforderungen anzupassen.

Eigentlich wollte ich fertige CMS-Software verwenden, aber nachdem ich eine wertvolle Zeit damit verbracht hatte, verschiedene CMSs zu lernen und Schwächen von jedem zu finden, habe ich schließlich mein eigenes CMS erstellt. Thought Results ist meine persönliche Seite und wird über dieses CMS erstellt. Ich werde es bald veröffentlichen, damit andere es auch verwenden können.

Ein weiterer Faktor ist die Erweiterbarkeit . Glauben Sie mir, es macht Sie alt, ein CMS vom statischen in den erweiterbaren Zustand zu versetzen. Vorlagen, Module, Plugins, Anbieter, Datenbanken und Speicher, Routing-Mechanismen und fast alle Teile eines Good CMS sollten erweiterbar sein.

Schließlich ist mein persönlicher Vorschlag, mit dem Aufbau eines CMS zu beginnen, damit Sie zumindest einige der grundlegendsten Konzepte kennenlernen, die dahinter stehen. Versuchen Sie aber auch, vorhandene zu verwenden. Viel Glück.

Saeed Neamati
quelle
Wow, ausgezeichnete Antwort. Einige dieser Dinge habe ich noch nie in Betracht gezogen, aber jetzt sind sie wirklich gut zu wissen. Wie Sie bei der Anpassung sagten, brauche ich wirklich viel davon. Deshalb habe ich mich ursprünglich an Drupal gewandt, weil ich gehört hatte, dass es mit solchen Dingen großartig sein sollte. In meinem Fall muss ich jedoch viel Interaktion zwischen mehreren Servern, PayPal, einer umfassend angepassten Registrierung und anderen Dingen haben, die von so etwas wie Drupal wirklich nicht einfach gehandhabt werden können. Vielen Dank für Ihre Antwort, ich weiß das sehr zu schätzen. :)
Alex Bennett
Ich möchte auch, dass Sie Sie fragen, ob Sie mir empfehlen, ein Framework wie CodeIgniter zu verwenden oder mein eigenes zu erstellen (vielleicht aus Gründen der Erfahrung).
Alex Bennett
1
Nun, @Alex, ich bin froh, dass ich helfen konnte. Es tut mir aber auch leid, da meine Plattform .NET ist und ich mit PHP-Frameworks nicht sehr vertraut bin. Die Verwendung eines Frameworks ist jedoch auf jeden Fall empfehlenswert. Ich verwende Entity Framework als ORM, daher kann die Verwendung eines ORM in PHP Ihre Entwicklung wirklich beschleunigen.
Saeed Neamati
Okay, trotzdem danke. Der einzige Grund, warum ich kein Framework verwenden möchte, ist für die Praxis, aber ich glaube, dass es in diesem Fall für mich sicherer wäre, eines zu verwenden, da es sich um einen Produktionsstandort handelt und ich keinen Streuner haben möchte Schwachstellen, die bei der Erstellung meines eigenen CMS / Frameworks auftreten können.
Alex Bennett
1
@Alex Bennett, eine andere Sache, es gibt Open Source CMSes. Wenn Sie den Quellcode erhalten. Sie können damit beginnen und es dann nach Ihren Wünschen ändern. Dies würde den Aufbau Ihres eigenen Systems erheblich beschleunigen. Es ist wie ein hybrider Ansatz. Wer will das Rad wirklich neu erfinden?
MVCylon
18

Ich spiele Devils Advocate hier, aber es muss gesagt werden. Einige der häufigsten Probleme mit Softwareentwicklern:

  • Lassen Sie unter Berücksichtigung des Zeit- und Arbeitsaufwands für die Fertigstellung eines einfachen Projekts ein großes Projekt mit
  • Vollständiger Mangel an Verständnis für die geschäftliche Realität
  • Überschätzung der eigenen Fähigkeiten und Produktivität.
  • Unterschätzung von Komplexität und subtilen Details
  • Der Glaube, dass ihr Problem so einzigartig ist, hat noch niemand gelöst.

Sind Sie sicher, dass Sie keinen dieser Fehler machen, denn selbst für einen 15-jährigen könnten in ein paar Wochen 300 US-Dollar verdient werden, und was Sie vorschlagen, könnte Monate dauern. Überlegen Sie, was passieren würde, wenn Sie einen bezahlten Job bekämen und ExpressionEngine mit dem Geld kauften. Würde es früher geliefert werden, mit noch besseren Eigenschaften als ein Heimwerkerjob?

mattnz
quelle
1
Ich bin ziemlich reif für Ihren durchschnittlichen 15-Jährigen, wie Sie hoffentlich sehen können, und ich glaube nicht, dass ich den Fehler gemacht habe, etwas von den Dingen zu tun, die Sie aufgelistet haben. Ich habe viel Zeit damit verbracht, nach möglichen Lösungen zu suchen, und habe noch keine gute für meine Situation gefunden. Wie für das Geld, mein Geschäft über $ 300 in Umsatz pro Monat macht (ist nicht viel, aber es lohnt sich für die dedizierten Maschinen) , damit ich könnte das Geld bekommen, aber ich versuche , es konservativ zu spielen und in Dinge zu investieren, die ein Muss, wie Hardware und Werbung. Vielen Dank für die Antwort, ich werde es wirklich im Hinterkopf behalten.
Alex Bennett
Ich denke nicht, dass Sie wirklich ein CMS machen würden, sondern eher eine benutzerdefinierte Lösung. Wenn Sie ein echtes CMS erstellen, könnten Sie das CMS wahrscheinlich vertreiben / verkaufen. Ich denke, Sie wären ein wenig überfordert (wie ich es tun würde, aber ...), um ein vollständiges CMS zu erstellen.
HelloFictionalWorld
2
@Alex Sie müssen diese Zeit berücksichtigen == Geld, speziell Ihre Zeit. Wieviel ist es wert? Wenn die Produktion Ihres CMS länger als 30 Stunden dauert (bei 10 USD / Std.), Ist ExpressionEngine die bessere Wahl. In ähnlicher Weise ist ExpressionEngine die bessere Wahl, wenn diese 30-stündige Arbeit, die für andere Dinge aufgewendet wird, einen höheren realen Wert für Ihre Website erzeugt als 300 US-Dollar.
CdMnky
8

Darauf gibt es zwei Antworten.

Eins ist einfach: Nein - erfinde das Rad nicht neu. Es gibt viele exzellente CMS-Systeme. Wenn Sie lernen, ein CMS gut zu verwenden, können Sie sich darauf konzentrieren, ein Plug-In für diesen Zweck zu erstellen, anstatt das Plug-In neu zu erfinden Rad.

Der zweite ist etwas weniger offensichtlich: Ja. Wenn Sie verstehen möchten, wie ein CMS funktioniert und welche Probleme bei der Erstellung eines CMS auftreten, können Sie problemlos ein eigenes CMS erstellen. Es wird wahrscheinlich nie die Leistungsfähigkeit und Flexibilität eines der vorhandenen CMS-Systeme haben und da es ungefähr 100000000000 PHP-Content-Management-Systeme in der Nähe gibt, ist die Wahrscheinlichkeit sehr gering, dass sich irgendjemand jemals dafür interessieren wird, aber dies wird auch nicht der Fall sein Haben Sie das Zeug, das Sie nicht brauchen, und es wird wahrscheinlich viel kleiner und einfacher als jedes der größeren Systeme funktionieren. Es wird viel Zeit in Anspruch nehmen, die Ergebnisse werden wahrscheinlich nicht so gut sein und es wird keinen Unterschied für den Rest der Welt bedeuten, aber in Bezug auf Ihre Entwicklung und Ihr Lernen könnte es eine nützliche Übung sein.

In jedem Fall würde ich, bevor Sie sich an die Entwicklung Ihrer eigenen Systeme machen, die verfügbaren Mainstream-Systeme ausprobieren, um eine Vorstellung davon zu bekommen, wie sie funktionieren, was sie gut machen und was sie Ihrer Meinung nach besser machen könnten. Ein gutes Verständnis dieser Faktoren kann Ihre Entscheidung darüber beeinflussen, ob es von Vorteil ist, eine eigene zu erstellen.

Glenatron
quelle
Danke für die Antwort. Nur um das zu verdeutlichen: Wenn ich dieses CMS bauen würde, hätte ich nicht die Absicht, es zu veröffentlichen, das ist kein Markt, auf dem ich bin. Es wäre nur für mich und würde gebaut werden, um nur die Dinge zu tun, die ich will / brauche. Ich habe zwar mit anderen experimentiert, aber ich kann anscheinend keine finden, die gut genug dokumentiert ist und die Dinge tut, die ich brauche, ohne mich zu zwingen, den Kern auf irgendeine Weise zu verändern. Ein weiterer Grund, warum ich mein eigenes bauen möchte, ist die Praxis, da ich nach dem College daran arbeite, ein Webentwickler (oder ähnliches) zu werden. :)
Alex Bennett
3
Ich schreibe als jemand, der vor einiger Zeit ein sehr kleines, sehr einfaches, sehr einfaches PHP-CMS implementiert hat und es seitdem für eine ganze Reihe von Websites verwendet hat. Es macht nicht mehr als ein winziges Fragment dessen, was die größeren Systeme tun, aber es macht alles, was ich für kleinere Sites brauche, und da es auf Flatfiles basiert, läuft es so ziemlich überall. Ich weiß es wirklich zu schätzen, dass man manchmal wirklich nur sein eigenes bauen möchte.
Glenatron
5

Wenn Sie noch nie versucht haben, ein CMS zu programmieren, ist dies möglicherweise eine sehr gute Gelegenheit, dies zu tun. Sie werden eine Menge lernen und unabhängig davon, ob Sie es beenden, haben Sie eine sehr gute Vorstellung von zB:

  • Was ist schwer zu tun und was ist einfach
  • So internationalisieren und lokalisieren Sie Ihre Seiten
  • Umgang mit Benutzern und Rollen
  • Wie man mit der Wartung der zugrunde liegenden Datenstrukturen umgeht, anstatt SQL-Update-Anweisungen zu benötigen.
  • Umgang mit mehrteiligen Seiten.
  • Effizienter Umgang mit statischen Inhalten.
  • So skalieren Sie auf mehrere Computer und hohe Auslastung.
  • Bereitstellung von APIs für Benutzeranpassungen und -themen.

Bei einigen von ihnen haben Sie vielleicht sogar gelernt, wie man es nicht macht. Diese Erfahrung ist auch wichtig.

Persönlich habe ich ein Stadium erreicht, in dem ich gelernt habe, dass das "Wie schwer kann es sein" nur ein paar Prozent der Arbeit abdeckt, die tatsächlich für die Erstellung eines qualitativ hochwertigen Produkts erforderlich ist, und wenn ich ein CMS wählen würde, würde ich Ich würde nach einem populären suchen, das über eine barrierefreie Codebasis und eine gute Dokumentation sowie eine gute Plugin-Architektur verfügt, mit der ich einfach geeignete Plugins schreiben und dann das Basis-CMS aktualisieren kann, wenn eine neue Version herauskommt.


quelle
Danke für den Input, ich hatte schon einige Erfahrungen wie man es nicht macht. ZB schreibe ich 30 Codezeilen, um eine einfache Aufgabe zu erledigen, und überprüfe dann 2 Tage später den Code und stelle fest, dass ich ihn auf 10 Zeilen verkürzen könnte. Diese Erfahrungen, so ärgerlich sie auch sein mögen, helfen definitiv dem Lernprozess, da sie dazu neigen, dass die Dinge mehr "kleben".
Alex Bennett
@Alex, diese Erfahrung "wie man es NICHT macht" skaliert mit der Größe der Codebasis Ihres Projekts. Aber ich denke, Sie müssen es mindestens einmal tun, um es zu schätzen :)
3

Dies ist nur eine geringfügige Antwort auf Ihre Frage. Ich bin davon ausgegangen, dass Sie sich für PHP und nicht für den vorgefertigten CMS-Weg interessieren. Willkommen im Klub! Viele von uns sind den gleichen Weg gegangen. Einige Ratschläge, die Ihre Last erleichtern könnten.

Ich habe angefangen, ein eigenes CMS, eine MVC-Implementierung, einen Internationalisierungs- (i18n) -Handler, einen Session-Handler, eine Art Datenbankabstraktionsschicht, eine Art Formularhandler usw. zu erstellen. Dann stellte ich fest, dass das, was ich tat, tatsächlich getan wurde vorher, aber besser durch Frameworks. Das bedeutet, dass Sie das Rad nicht komplett neu erfinden müssen, sondern genau dort, wo es Ihren Anforderungen entspricht. Frameworks erleichtern Ihnen das Leben, erfordern jedoch viel Aufwand, um darin zu lesen und zu lernen. Ich habe ein Jahr gebraucht, um Symfony wirklich zu meistern, und ich bereue es keine Sekunde.

Und Sie haben Glück, denn im Moment gibt es viel mehr hochwertige Frameworks als zuvor. Um ein paar zu nennen :

  • Symfony : Heute haben sie Version 2.0 veröffentlicht. Es ist aufregendes Zeug. Es ist lose gekoppelt, was bedeutet, dass Sie entweder Komponenten verwenden oder alles als integriertes Paket verwenden können. Es hat eine gute Dokumentation und eine aktive Benutzerbasis. Ansonsten ist die inzwischen veraltete 1.4-Version auch noch sehr zuverlässig und nützlich. Es gibt viele leistungsstarke Plugins, die Ihnen das Leben leichter machen. (Bündel)
  • Zend Framework : Einige behaupten, es sei nicht wirklich auf dem neuesten Stand (nicht alle brandneuen 5.3-Features), aber es gibt es schon eine Weile, und es handelt sich im Grunde genommen um eine Reihe nützlicher Komponenten (wiederum lose miteinander verbunden, kein Alles-oder-Nichts-Spiel) ). Ich benutze es als Toolkit, um Dinge wie das Suchen (zend_lucene) und das Generieren von PDFs zu erledigen. Es gibt aber auch einen häufig verwendeten MVC-Controller-Satz. Sie sollten es prüfen, wenn Sie dies nicht getan haben. Sehr gut dokumentiert.
  • CakePHP : Habe es vor langer Zeit benutzt und konnte die Dokumentation nicht durchstehen. Anscheinend ist das jetzt besser und wahrscheinlich eine Überlegung wert.

  • Yii : Habe es nicht benutzt, aber es gibt in letzter Zeit eine Menge Unklarheiten, die wahrscheinlich Ihre Aufmerksamkeit wert sind.

  • CodeIgniter : Viele Leute loben Codeigniter für seine einfache Lernkurve und Benutzerfreundlichkeit. Habe es nicht benutzt.

Wenn Sie Python ausprobieren möchten, loben viele Leute auch Django und natürlich Ruby on Rails.

Es gibt wahrscheinlich mehr, aber das sollte dir nützlich sein. Wenn Sie sie nicht verwenden möchten, können Sie dennoch viel von diesen Frameworks lernen. Viel Glück!

Arend
quelle
Danke, ich habe viel Erfahrung mit CodeIgniter, aber ich habe keine der anderen ausprobiert. Ich werde sie auf jeden Fall in Betracht ziehen.
Alex Bennett
1
laravel.com ?? CodeIgniter wird derzeit am häufigsten verwendet, aber Lavarel überholt es schnell
Mawg
1
Jep. Dieser Beitrag ist vier Jahre alt. Laravel hatte gerade angefangen.
Arend
1

Die Antwort hängt weitgehend davon ab, was Sie erreichen möchten.

Wenn Sie beabsichtigen, Ihre Fähigkeiten zu entwickeln, sich mit Content Management usw. vertraut zu machen, dann sollten Sie auf jeden Fall Ihre eigenen Fähigkeiten entwickeln. Wenn Sie ein Framework erlernen möchten, verwenden Sie es ebenfalls.

Wenn Sie sich jedoch auf das von Ihnen erwähnte Spiel und seine Spieler konzentrieren, lautet die Antwort mit ziemlicher Sicherheit Nein. Ihre Zeit ist eine begrenzte und daher teure Ressource. Die für die Entwicklung eines CMS aufgewendete Zeit ist die Zeit, die nicht für die Entwicklung des Spiels aufgewendet wird, und es ist das Spiel, das Einnahmen generiert. Stellen Sie sich also die Frage. Wird die für die Entwicklung dieses CMS aufgewendete Zeit die Spielerfahrung verbessern, anstatt eine zu beschaffen, mehr als die für die Entwicklung des Spiels aufgewendete Zeit? Wenn die Antwort ja ist, dann entwickle sie, sonst nicht.

Ebenso sollte die Entscheidung von Open Source CMS über ExpressionEngine ToC zum Erliegen bringen, wie Saeed sagt. Einfach ausgedrückt, wenn Kosten (Wordpress)> Kosten (ExpressionEngine), dann geben Sie die 300 $ aus. Hier betragen die Kosten für den Kauf + (Stunden_zum_Anpassen * Ihr_Stundentarif).

CdMnky
quelle
1

Suchen Sie ein CMS, das 90% Ihrer Anforderungen erfüllt, und ändern Sie es im Laufe der Zeit, um Funktionen hinzuzufügen, die es nicht bietet.

Auf diese Weise können Sie frühzeitig starten und sich anpassen, wenn sich die Anforderungen Ihrer Benutzer ändern.

Supermächtig
quelle
Obwohl dies das Schlimmste aus beiden Welten zu sein scheint, stimme ich der Ablehnung nicht zu, also habe ich sie erhöht.
Mawg
1

Ich empfehle Ihnen, Ihr eigenes CMS zu erstellen. Es ist bei weitem der beste Weg, die Besonderheiten eines solchen Systems in Bezug auf Anpassung und Sicherheit zu kennen. Aber ich muss fragen, wie fortgeschritten Sie mit Ihren PHP-Kenntnissen sind. Dies ist nicht in Bezug auf Ihr Alter, glauben Sie mir.

Die Flagge für mich war: "Ich habe nicht das Gefühl, dass WordPress mächtig / skalierbar genug ist, um mit dem fertig zu werden, was ich versuche, und nachdem ich in den letzten Tagen ein bisschen mit Drupal herumgebastelt habe, sieht es einfach nicht so aus für meinen Geschmack auf dem neuesten Stand und auch nicht gut dokumentiert, so dass ich ein bisschen Probleme habe, bestimmte einfache Aufgaben zu erledigen. "

Die Fülle an Büchern und Websites zum Anpassen von Worpress und Drupal sowie die bekannten Websites, auf denen diese ausgeführt werden, beweisen, dass Sie wissen müssen, was Sie tun, um Websites wie diese zu erhalten. Ganz zu schweigen davon, dass ganze Budgets für die Ausführung dieser Websites vorgesehen sind.

Links zum Beispiel:

http://drupal.org/cases

http://wpmu.org/wordpress-showcase-20-high-profile-sites-running-on-wordpress

Dies soll Sie nicht entmutigen, was Sie versuchen, auf alle Fälle für es zu tun. Ich möchte nur sicherstellen, dass Sie nicht zu viel Zeit investieren (das Rad neu erfinden) und an einem bestimmten Punkt frustriert sind. Sagen Sie einfach "eff it", wenn Sie Ihre Talente ausbauen und Menschen zeigen können, auch Arbeitgebern , was Sie mit den derzeit verfügbaren Tools haben. In der realen Welt und der gegenwärtigen Wirtschaft ist Zeit Geld, und Unternehmen und Organisationen haben nicht die Zeit und / oder das Budget, um Projekte von Grund auf neu zu erstellen.
Informationen bewegen sich heute mit Lichtgeschwindigkeit, weshalb Programmierer gefragt sind, die das Rauschen trennen und in angemessener Bearbeitungszeit zielgerichtete Inhalte / Apps / Systeme erstellen können.

A. Edwards
quelle
0

Nur Sie können antworten, ob Wordpress oder Drupal das kann, was Sie von einem CMS erwarten. Wenn Sie sie jedoch ausprobieren möchten, können Sie eine virtuelle Maschine von Turnkey Linux verwenden , z. B. eine für Wordpress , Drupal , Joomla oder eine von die anderen mit dem Content-Management- Tag.

Angenommen, Sie haben VMware Player oder VirtualBox bereits installiert, und Sie können die Software innerhalb weniger Minuten nach dem Herunterladen einer dieser Appliances mit minimalem Zeitaufwand selbst ausprobieren.

Mark Booth
quelle