Q:

How can i parent the ThirdPersonController on when the player is on top of the Platform?

I have a script that detect when the player is collide with the Platform(Cube). But even if i touch it from the side the Platform it will show the Debug.Log and i want that only if the player is on top of the Platform only then show the Debug.Log when i mean on Top it's like in this screenshot:

I have a ThirdPersonController a Elevator(empty GameObject) Platform(Cube) Platform1(cube) and Button(Capsule).
using UnityEngine;
using System.Collections;

public class DetectPlayer : MonoBehaviour {

    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.name == "Platform")
        {
            Debug.Log("On Platform");
        }
    }
}

A:

Sometimes, you have to use a combination of collider and a trigger to get what you want and this is one of those times.
1.Duplicate the Platform GameObject. Put the duplicated Platform under the original one then name it OnTop Detector. 
2.Select the OnTop Detector GameObject and moving it up so that it is not touching the original Platform GameObject. Again make sure they are not touching but slightly above one another.
4.Scale the OnTop Detector GameObject so that it is smaller than the original Platform GameObject. The reason you do this is to make it so that it won't detect when on the side and touching but will detect when you are on top.
5.Check the OnTop Detector GameObject Box Collider as IsTrigger.
6.Add OnTriggerEnter to the code your question. OnCollisionEnter will be called when Player is touching the side of the Platform. OnTriggerEnter will be called when OnTop of the Platform.
7.Finally, you can now disable/remove the Mesh Renderer that is attached to the OnTop Detector GameObject. I usually only disable it so that I can enable it later on when I want to edit OnTop Detector's collider with visual guide. 
So, you use OnTriggerEnter to know when Player is on top of the Platform and OnTriggerEnter to know when it is touching the platform.
Script:
public class DetectPlayer : MonoBehaviour
{
    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.name == "Platform")
        {
            Debug.Log("Touching Platform");
        }
    }

    void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.name == "OnTop Detector")
        {
            Debug.Log("On Top of Platform");
        }
    }
}

Image Description of what I just said:

