Según tengo entendido, un CMS es un sistema preconstruido que le permite agregar/modificar contenido rápidamente. Le da al usuario promedio la flexibilidad suficiente para cambiar lo que hace su sitio instalando módulos y temas.
Con un CMS, todo el código de programación ya está escrito, y el usuario simplemente ingresa datos para el sitio (páginas, publicaciones en el blog, lo que sea - vea Wordpress, por ejemplo); a menos que, por supuesto, desee modificar el código fuente subyacente o crear un complemento personalizado para él.
Un framework es un sistema, algo así como un CMS, pero le otorga aún más flexibilidad con su sitio ya que usted debe escribir todo el código usted mismo.
Con un marco, usted realmente escribe el código para implementar el sitio web (o lo que sea que esté construyendo), pero comienza con un código listo que define la estructura general del software (no la estructura del sitio , fíjate) y que generalmente proporciona muchas funciones/métodos para manejar tareas típicas de codificación. La idea entonces es que el desarrollador gasta un mayor porcentaje de su tiempo en el código de "negocio" real y menos en los detalles de las tuercas y pernos (es decir, "marco") sobre el que se implementa la lógica de negocios. Consulte los tutoriales de CodeIgniter para tener una idea de lo que esto significa.
Si un CMS en particular proporciona una gran mayoría de la funcionalidad y la apariencia que necesita, entonces es probablemente una buena solución para usted (con una posible advertencia de cuán eficiente es su código y cuán escalable el tráfico y el crecimiento de su sitio lo requieren). Pero si necesita realizar muchas modificaciones en un CMS para que funcione de la manera que desea, en realidad podría desarrollar el sitio de manera más eficiente sobre un marco, para que no gaste mucho tiempo tratando de descubrir qué cambiar y cómo cambiarlo en un montón de código CMS que no escribiste, también depende de cuán bien conozcas el marco con el que trabajarías, por supuesto.