I have to integrate a jobs feed into our website and I've been digging in the documentation, reading the core's code for a while now, and I am in a dilemma trying to figure out if in out use case I should write a plugin or just try to build everything on top Craft's core types?
It's important to know that each job will belong to a company, and will have a lot of custom settings that apply to each job. I've started developing a plugin for it, based on the Brandon's events plugin, which until now is working fine, however I's still not convinces if I'm doing things rights, since the Elements API is a little under-documented.
The questions that I have now are:
- Should I base the Company on the Sections type, if I want the jobs to be translatable?
- Should I base the Job on the Entry type, and write custom field types for every custom setting a job has to be translatable? (eg. Benefits and Requirements blocks, Many-to-Many relationships between job's industry, employment type, etc.)
- Should I handle the saving of Many-to-Many relationships on my own, or Craft handles these if I choose the right core type?
- Should I save all these custom fields a job has in the content table or in a custom table?
- I will also import jobs from out ATS system, would it be enough to write a plugin just for this, and integrate all the aforementioned requirements into Craft's code types, without developing a plugin?
- I would like to tag every job with the technologies a job requires, and assign custom logos of these technology tags. How would I handle this using a custom plugin, extending the core tags?
- The jobs will have an advanced search and filtering based on the Many-to-Many relationships with industries, experience level, employment type; what would be the best approach to achieve this? using custom queries in a plugin with a custom element type or building on top of core types?
I just started using Craft, so I still don't understand 100% the core, that's why I cannot decide which would be the best approach.